IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

VBA : Afficher/Masquer des images dans un pied de page [WD-2013]


Sujet :

VBA Word

  1. #1
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut VBA : Afficher/Masquer des images dans un pied de page
    Bonjour,
    J'ai bien parcouru le forum mais ne trouvant pas de réponse à mon problème je demande votre aide.
    Mon document possède un pied de page qui contient plusieurs objets activeX de type Image (plus précisément ces objets contiennent des logos).
    Je souhaite pouvoir afficher qu'un seul logo en fonction d'une valeur contenu dans un signet lui-même alimenté par une application tiers.
    J'ai donc un signet (contenant une certaine valeur) qui exécute la macro suivante à la sortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub showHideLogo()
        If (ActiveDocument.Bookmarks.Exists("wdReference") = True) Then
            ActiveDocument.Bookmarks("wdReference").Select
            If (Selection.Text = "test") Then
                ActiveDocument.Shapes("nomLogo").Delete
            End If
        End If
    End Sub
    Cette macro me permet de vérifier si mon signet existe suivant sa valeur de supprimer tel image dans mon pied de page, du moins c'est le but.
    Le problème que tous mes logos s'affichent car j'ai l'erreur suivante :
    L''élément portant ce nom est introuvable
    ActiveDocument.Shapes("nomLogo").Delete
    Je ne suis pas expert en vba mais je pense que ça doit être possible ?
    Merci d'avance pour votre aide!

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Puisque personne ne sait si "wdReference" ,"test" "nomLogo" sont des variables, des noms d'objets ou juste des symboles.

    Ces 3 macros marchent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Sub Image()
        ActiveDocument.Shapes.AddPicture ("C:\Users\Clement Marcotte\Pictures\bitmapinfodesign.gif")
        ActiveDocument.Shapes(1).Delete
    End Sub
     
    Sub Image1()
        Dim limage As Shape
        Set limage = ActiveDocument.Shapes.AddPicture("C:\Users\Clement Marcotte\Pictures\bitmapinfodesign.gif")
        limage.Delete
    End Sub
    Sub Image2()
        Dim limage As Shape
        Set limage = ActiveDocument.Shapes.AddPicture("C:\Users\Clement Marcotte\Pictures\bitmapinfodesign.gif")
        limage.Name = "Arthur"
        ActiveDocument.Shapes("Arthur").Delete
    End Sub
    Et puis un tour sur MSDN montre que les entêtes et pieds de pages ont leur propre collection de shapes qui semble être indépendante des shapes du document.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut
    Bonjour,
    Merci pour ta réponse clementmarcotte!
    Effectivement je n'ai pas trop détaillé mon code...
    En fait "wdReference" est le nom de mon signet, "test" est la valeur texte contenue dans mon signet et "nomLogo" est le nom de mon objet activeX contenant mon image dans mon pied de page.
    Tes solutions ajoutent une image placée en local sur ton disque "c:\" hors dans mon cas les images sont déjà présentes dans mon document et je ne souhaite pas ajouter d'image en local.
    Du coup elles ne sont pas applicables dans mon cas. J'ai essayé d'adapter le code mais il ne se passe rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub showHideLogo()      
        If (ActiveDocument.Bookmarks.Exists("wdReference") = True) Then
            ActiveDocument.Bookmarks("wdReference").Select
            If (Selection.Text = "test") Then
                ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Shapes("imgSofcareFR").Delete
            End If
        End If
    End Sub

  4. #4
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut
    Bon après plusieurs tests, le problème provient vraiment du fait que mes images sont dans mon pied de page.
    Si je place mon image en dehors de mon pied de page, la macro fonctionne correctement et efface bien l'image souhaitée.
    J'ai beau parcourir la MSDN je n'ai toujours pas trouvé de solution pour l'instant...

  5. #5
    Membre habitué Avatar de Mygush
    Inscrit en
    Juin 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 226
    Points : 175
    Points
    175
    Par défaut
    Bon j'ai finalement trouvé une solution à mon problème qui me permet de supprimer mes images dans mon pied de page à l'ouverture de mon document :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub AutoOpen()
     
        Dim myImage As InlineShape
        Dim mySection As Section
        Dim myHF As HeaderFooter
     
        If (ActiveDocument.Bookmarks.Exists("nomDeMonSignet") = True) Then
            ActiveDocument.Bookmarks("nomDeMonSignet").Select
            If (Selection.Text = "maValeur") Then
            For Each mySection In ActiveDocument.Sections()
                For Each myHF In mySection.Footers
                    If myHF.Range.InlineShapes.Count > 0 Then
                        'Si plusieurs images comme dans mon cas
                        For Each ThisImage In myHF.Range.InlineShapes
                                ThisImage.Delete
                        Next
                    End If
                Next
            Next
        End If
     
    End Sub
    Comme mon document est généré automatiquement depuis une application WEB, il me reste maintenant à trouver comment exécuter la macro à la création de mon document et non à l'ouverture !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SP-Online] afficher / masquer des champs dans un formulaire
    Par Neiss dans le forum SharePoint
    Réponses: 1
    Dernier message: 19/08/2016, 10h45
  2. [Débutant] Comment Afficher/Utiliser des Images dans un DataGridViewComboBoxCell
    Par boby15000 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 14/12/2014, 16h59
  3. [XL-2010] Afficher/Masquer des séries dans un graphique
    Par Ramses38 dans le forum Excel
    Réponses: 8
    Dernier message: 06/03/2012, 13h58
  4. Afficher/masquer des lignes dans un tableau hiérarchique
    Par linou dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/06/2009, 11h58
  5. image dans pied de page en vba word
    Par amour076 dans le forum VBA Word
    Réponses: 0
    Dernier message: 08/06/2009, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo