Remplissage d'une forme au survol de la souris

Anonyme
2023-05-09T16:02:19+00:00

Bonjour,

Voici mon problème : je souhaite animer ma présentation PowerPoint afin que la couleur de remplissage des différentes forme change lorsque qu'on survole le "bouton" avec la souris. Habituellement, je triche en dupliquant les diapositives et en affectant une action "Pointer avec la souris"-> créer un lien hypertexte vers la diapo X. Malheureusement, j'ai beaucoup trop de liens pour appliquer cette solution.

Pourriez-vous m'aider, svp, pour rédiger cette macro ?

Merci d'avance pour votre aide

Microsoft 365 et Office | PowerPoint | Other | Windows
Microsoft 365 et Office | PowerPoint | Other | Windows

Famille de produits graphiques de présentation de Microsoft qui offrent des outils pour créer des présentations et ajouter des effets graphiques comme des objets multimédias et des effets spéciaux avec du texte.

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

6 réponses

  1. Anonyme
    2023-05-10T07:06:57+00:00

    Bonjour,

    Merci encore. j'ai respecté votre code à la lettre mais ça ne fonctionne pas. Il doit y a avoir des subtilités qui m'échappent.

    Je ne veux pas vous faire perdre trop de votre temps, le problème doit venir de mes compétences.

    Cordialement

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2023-05-10T02:53:19+00:00

    Bonjour

    Je m’excuse pour les erreurs dans le code que j’ai fourni. Voici le code corrigé pour les sous-routines ChangeFillColorOnMouseOver et ChangeFillColor :

    Sub ChangeFillColorOnMouseOver() Dim shp As Shape Set shp = ActiveWindow.Selection.ShapeRange(1) Avec shp . ActionSettings(ppMouseOver). Action = ppActionNone . ActionSettings(ppMouseOver). Run = « ChangeFillColor » Terminez par Fin de la sous-section

    Sub ChangeFillColor() Dim shp As Shape Set shp = ActivePresentation.Slides(ActiveWindow.Selection.SlideRange.SlideNumber). Formes(1) Avec shp. Remplir . ForeColor.RGB = RGB(47, 110, 75) 'Remplacez ceci par le code couleur RVB que vous voulez . Transparence = 0 Terminez par Fin de la sous-section

    En ce qui concerne votre question de savoir si la mise en forme d’origine de la forme se réinitialise automatiquement lorsque la souris ne survole plus, la réponse est non. Vous devez ajouter une autre macro pour réinitialiser la couleur de remplissage de la forme à son état d’origine lorsque la souris ne survole plus celle-ci. Voici un exemple de la façon dont vous pouvez modifier la sous-routine ChangeFillColorOnMouseOver pour y parvenir :

    Sub ChangeFillColorOnMouseOver() Dim shp As Shape Set shp = ActiveWindow.Selection.ShapeRange(1)

    Avec shp Si. ActionSettings(ppMouseOver). Action = ppActionNone Alors . ActionSettings(ppMouseOver). Action = ppActionHyperlink . ActionSettings(ppMouseOver). Hyperlink.Address = «  » Fin Si

    . ActionSettings(ppMouseOver). Run = « ChangeFillColor » . ActionSettings(ppMouseClick). Action = ppActionHyperlink . ActionSettings(ppMouseClick). Hyperlink.Address = «  » Terminez par Fin de la sous-section

    Dans cette version modifiée de la sous-routine ChangeFillColorOnMouseOver, lorsque la souris ne survole plus la forme, l’action de lien hypertexte d’origine est restaurée et la couleur de remplissage est réinitialisée à son état d’origine. Veuillez noter que vous devrez modifier davantage ce code pour l’adapter à votre cas d’utilisation spécifique.

    J’espère que cela vous aidera.

    Cordialement,

    Abdal

    Cette réponse a été traduite automatiquement. Par conséquent, il peut y avoir des erreurs grammaticales ou des expressions étranges.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2023-05-09T22:02:19+00:00

    Je ne sais pas tester et analyser de façon plus approfondie, mais dans la mesure où tu ouvres une boucle "With", il faut que tu mettes une instruction End With (juste avant End Sub) dans les deux macros. Ce que le robot traducteur avait transcrit en "Terminez par" (!) 😀

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2023-05-09T18:47:26+00:00

    Bonjour Abdal,

    Un grand merci pour votre retour et ... quelle réactivité ;-) c'est vraiment trop sympa.

    Je viens de tester le code avec quelques modifs (message d'erreur sur "Avec" j'ai donc remplacé par "with", message d'erreur sur les espaces à l'intérieur des "". Voila ce que ça donne :

    Sub ChangeFillColorOnMouseOver()

    Dim shp As Shape 
    
    Set shp = ActiveWindow.Selection.ShapeRange(1) 
    
    With shp 
    
        .ActionSettings(ppMouseOver).Action = ppActionNone 
    
        .ActionSettings(ppMouseOver).Run = «ChangeFillColor» 
    

    End Sub

    Sub ChangeFillColor()

    Dim shp As Shape 
    
    Set shp = ActivePresentation.Slides(ActiveWindow.Selection.SlideRange.SlideNumber).Formes(1) 
    
    With shp.Remplir 
    
        .ForeColor.RGB = RGB(47, 110, 75)  'Remplacez ceci par le code couleur RVB que vous souhaitez 
    
        .Transparence = 0 
    

    End Sub

    Par contre, j'ai encore une erreur à la fin de la 1ère section, à savoir "Erreur compilation - End with attendu"... et là c'est la panique. J'ai encore besoin de vous.

    Par ailleurs, sans vouloir abuser : lorsque que la souris ne sera plus en survol sur le bouton, est ce que la mise en forme d'origine se remet automatiquement ? A défaut, je suis preneuse du complément sur le code.

    Merci encore.

    Bien cordialement

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. Anonyme
    2023-05-09T16:37:40+00:00

    Bonjour

    Je m’appelle Abdal et je serais heureux de vous aider avec votre question.

    Voici les étapes à suivre pour résoudre ce problème :

    1. Ouvrez votre présentation PowerPoint et accédez à la diapositive avec la forme pour laquelle vous souhaitez modifier la couleur de remplissage.
    2. Appuyez sur « Alt + F11 » pour ouvrir l’éditeur VBA.
    3. Dans l’éditeur VBA, allez dans « Insérer » > « Module » pour créer un nouveau module.
    4. Copiez et collez le code suivant dans le nouveau module :

    Sub ChangeFillColorOnMouseOver() Dim shp As Shape Set shp = ActiveWindow.Selection.ShapeRange(1) Avec shp . ActionSettings(ppMouseOver). Action = ppActionNone . ActionSettings(ppMouseOver). Run = « ChangeFillColor » Terminez par Fin de la sous-section

    Sub ChangeFillColor() Dim shp As Shape Set shp = ActivePresentation.Slides(ActiveWindow.Selection.SlideRange.SlideNumber). Formes(1) Avec shp. Remplir . ForeColor.RGB = RGB(255, 0, 0) 'Remplacez ceci par le code couleur RVB que vous souhaitez . Transparence = 0 Terminez par Fin de la sous-section

    1. Modifiez le code couleur RVB dans la sous-routine 'ChangeFillColor' pour la couleur à laquelle vous souhaitez que la forme change lorsque vous passez la souris dessus.
    2. Enregistrez la macro et revenez à votre diapositive PowerPoint.
    3. Sélectionnez la forme à laquelle vous souhaitez appliquer la macro.
    4. Appuyez sur « Alt + F8 » pour ouvrir la boîte de dialogue macro.
    5. Sélectionnez la macro « ChangeFillColorOnMouseOver » et cliquez sur « Exécuter ».
    6. Enregistrez votre présentation.

    Maintenant, lorsque vous passez votre souris sur la forme, sa couleur de remplissage doit changer pour la couleur que vous avez spécifiée dans la macro.

    J’espère que cette information vous aidera.

    Cordialement,

    Abdal

    Cette réponse a été traduite automatiquement. Par conséquent, il peut y avoir des erreurs grammaticales ou des expressions étranges.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire