Word VBA (Insérer un image )

José Alain

XLDnaute Nouveau
Bonjour à tous,
J'ai un tableau (formulaire) qui sera remplis automatiquement par publipostage(Excel- Word)
Je veux que quand le valeur qui se trouve la cellule ou se trouve le code "1_ABK_050_1" change, il récupère l'image dans mon dossier local qui a le même nom que ce code et l'afficher après dans la ligne 3 du tableau.

Merci bien,
 

Pièces jointes

  • test VBA.docm
    18.1 KB · Affichages: 9
Solution
Je pense qu'il vous faut créer une boucle une fois vos documents édités pour intégrer vos photos.
En partant directement de votre fichier Excel et en générant pour chaque item un fichier Doc depuis un modèle .dotm, vous pourriez utiliser directement ce code.

Eric KERGRESSE

XLDnaute Occasionnel
Bonjour,

Sauf de générer vos documents Word directement depuis Excel, pas certain que vous puissiez lancer une macro pendant le publipostage.

Sinon, si vous générez vos fichiers depuis Excel, essayez ceci :
VB:
Option Explicit

Sub LancerInsererLimage()

    InsererLimage ActiveDocument.Path & "\", ActiveDocument
    
End Sub

Sub InsererLimage(ByVal CheminImage As String, ByVal WdDoc As Document)


    With WdDoc
         CheminImage = .Path & "\"
         With .Tables(1)
              With .Cell(2, 2).Range
                   CheminImage = CheminImage & Mid(.Text, 1, Len(.Text) - 2) & ".JPG" ' Extension à adapter
              End With
              If VerifierLeChemin(CheminImage) Then
                 With .Cell(3, 1).Range  ' S'arranger pour que la cellule contienne 1 ligne par défaut
                      If .InlineShapes.Count > 0 Then .InlineShapes(1).Delete
                      .InlineShapes.AddPicture FileName:=CheminImage, LinkToFile:=False, SaveWithDocument:=True
                      With .InlineShapes(1)
                           .LockAspectRatio = msoTrue
                           .Height = 200 ' A adapter
                      End With
                      .ParagraphFormat.Alignment = wdAlignParagraphCenter
                 End With
              Else
                  MsgBox "Aucune image trouvée !", vbCritical
              End If
        End With
    End With
    
End Sub

Function VerifierLeChemin(ByVal Chemin2 As String) As Boolean

Dim Fso As Object
    
    VerifierLeChemin = False
    Set Fso = CreateObject("Scripting.FileSystemObject")
    VerifierLeChemin = Fso.FileExists(Chemin2)
    Set Fso = Nothing

End Function
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 294
Membres
103 171
dernier inscrit
clemm