Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Word > Contribuez

Réponse
 
Outils de la discussion
Vieux 22/06/2007, 17h13   #1 (permalink)
Modérateur
 
Avatar de ouskel'n'or
 
Date d'inscription: février 2005
Localisation: Une petite rue qui "avait" un merle
Messages: 11 563
Par défaut Fusion et publipostage - Insertion d'images - Liste ds Excel - VBA ou Word

Le but : Insérer les images dont les adresses se trouvent dans une base de données Excel.

Dans EXCEL :
Les adresses des images doivent être introduites en tant que liens vers les fichiers image,
Les séparateurs de noms de répertoires doivent comporter deux "\\" et enfin, les adresses doivent être encadrées de guillemets. Ce qui donne dans la cellule :
Citation:
"c:\\Mes images\\cocorico.jpg"
Dans WORD
1 - Afficher les codes de champs
Barre d'outils "Outils" -> Options -> Affichage -> Valider "Code de champs"
Pour se faciliter la tâche, on peut créer une macro et lui affecter des touches de fonction -> Personnaliser -> Commandes -> Macro -> Sélectionner la macro -> Bouton "Clavier"
La macro :
Code :
Sub CodeChampVisiblePasVisible()
    if ActiveWindow.View.ShowFieldCodes then
         ActiveWindow.View.ShowFieldCodes = False
      else
         ActiveWindow.View.ShowFieldCodes = True
    Endif
End Sub
2 - Insertion du champ "image" -> Insertion -> Champ -> IncludePicture (inclureImage)

Donne { INCLUDEPICTURE \* MERGEFORMAT }

3 - Insertion du champ de fusion
Se placer après le premier espace suivant { INCLUDEPICTURE (normalement suivi de trois espaces...)
Puis -> Barre d'outils "Publipostage" -> Icône "Insérer les champs de fusion" -> sélectionner le champ "Image" de la base de données. Le champ de fusion est inséré dans le précédent, c'est à dire dans le champ Image.

Donne {.INCLUDEPICTURE.{.MERGEFIELD."Champ Image".}..\*.MERGEFORMAT.}
où les points figurent les espaces et "Champ Image" le nom de champ.

4 - Dévalider l'affichage des codes de champs
Le message "Erreur°! Nom du fichier non spécifié." s'affiche.
Normal -> la fusion n'est pas encore réalisée.

5 - Lancer la fusion

6 - Mise à jour des champs
Dans la "lettre type" issue de la fusion, sélectionner tout le Texte (Ctrl + A) et frapper la touche F9. Les champs se mettent à jour, les images apparaissent !

Ou par macro
Code :
Sub FusionEtMiseAjour()
    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=False
    End With
    DoEvents
    Selection.WholeStory 'sélectionne tout le texte de la lettre type
    Selection.Fields.Update 'Met les champs à jour (affiche les images)
End sub
Pour la solution par macro, voir le post suivant.
__________________
Je...ne...réponds...pas....aux...questions...techniques... par...mp
La recherche (VBA-E) : Le Forum, La FAQ, Les cours et tutoriels, Contribuez, Les Sources et... l'Aide en ligne !!!

Dernière modification par ouskel'n'or ; 14/09/2007 à 16h05
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 23/06/2007, 09h49   #2 (permalink)
Modérateur
 
Avatar de ouskel'n'or
 
Date d'inscription: février 2005
Localisation: Une petite rue qui "avait" un merle
Messages: 11 563
Par défaut

Remplace, par macro, les parties 1 à 6 du post précédent (!)
Dans le document Word, renseigner le nom du champ image
Se placer dans le document principal au point d'insertion de l'image puis lancer la macro.
Code :
Sub Macro()
Dim NomChamp as string
    NomChamp = "Champ Image"
    InsérerChampImageEtFusion NomChamp
End sub
Code :
Sub InsérerChampImageEtFusion(NomDuChampImage)
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
        PreserveFormatting:=False
    Selection.TypeText Text:="INCLUDEPICTURE "
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
        PreserveFormatting:=False
    Selection.TypeText Text:="MERGEFIELD " & Chr(34) & NomDuChampImage & Chr(34)
    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        .Execute Pause:=False
    End With
    Selection.WholeStory
    Selection.Fields.Update
End Sub
NB - Penser à formater les liens dans Excel selon le modèle
Citation:
"c:\\Mes images\\cocorico.jpg"
PS - Cette méthode fait disparaître le message "Erreur°! Nom du fichier non spécifié." qui apparaît dans le document (sans conséquence quant au résultat final) avec la solution manuelle d'insertion du premier post.
__________________
Je...ne...réponds...pas....aux...questions...techniques... par...mp
La recherche (VBA-E) : Le Forum, La FAQ, Les cours et tutoriels, Contribuez, Les Sources et... l'Aide en ligne !!!

Dernière modification par ouskel'n'or ; 14/09/2007 à 16h04
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Word > Contribuez

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide