Bonjour j'ai un fichier excel avec des chemins vers des images et je souhaite afficher des images dans word grace au publipostage.
Comment faire. J'ai suivi les tutos avec INSERTPICTURE .... mais ca ne fonctionne pas.
Merci
Bonjour j'ai un fichier excel avec des chemins vers des images et je souhaite afficher des images dans word grace au publipostage.
Comment faire. J'ai suivi les tutos avec INSERTPICTURE .... mais ca ne fonctionne pas.
Merci
Jète un oeil là
C'est du VBA Word mais hormis l'insertion d'image, le contexte est le même.
Là on récupère le nom à fusionner pour sauvegarder chaque document créé sous ce nom.
Dans ton cas tu peux récupérer le nom de l'image à insérer.
Reste son insertion qui pourrait se faire pour chaque lettre type créée, après recherche de l'emplacement dans le texte.
Juste une idée mais réellement, je n'en vois pas d'autre en cas de fusions multiples.
Tu dis, on peut t'aider à construire ça.
Salut, oui j'ai regarde mais je crois aue je me suis mal exprime dans mon premier post.
J'ai un fichier Excel
nom prenom photo
Durand Michelle c://1.jpg
Dupond Edie c://2.jpg
Lefebvre Maurice c;//3.jpg
Grace au publipostage j'arrive a rentrer le nom et le prenom sur un document word. Mais j'aimerais egalement mettre la photo des types. Donv je voudrais pouvoir inserer une image aui est comme chemin ce aui se trouve dans le fichier excel.
merci
J'ai bien compris, mais ici tu es sur VBA Word. Donc j'en ai déduit que tu réalisais ta fusion depuis Word.
Si ce n'est pas ça, tu es sur le mauvais forum, auquel cas je déplacerai ta discussion.
Par contre, si c'est bien ça, la solution que je t'ai indiquée est "une solution".
La fusion se réalise personne par personne au lieu de s'effectuer globalement.
Pour la fusion de chaque nom de personne, tu prends sur la ligne le nom et le chemin de ton fichier image et tu insères celui-ci dans la lettre type (résultat de la fusion). Tu n'es pas obligé d'enregistrer chaque fichier créé contrairement à ce que réalise le code cité, tu peux cependant l'imprimer et le fermer sans l'enregistrer.
Ceci dit, je regarde s'il existe un <champ de fusion> permettant d'insérer une image dont le nom est dans le fichier Excel fusionné. Mais là, tout de suite, j'ai un truc à faire. Donc si quelqu'un à ça...
A+
Pour ce qui est du champ <Image d'un fichier> Je n'ai pas trouvé. Mais tu as toujours la solution que je t'ai proposée.
Si tu trouves une autre solution, où que ce soit, nous sommes "tous" preneurs
A+
ici, je pense que tu vas trouver ton bonheur.
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA
Mes articles
Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Là, l'heureux Oli, tu m'intéresses. On peut utiliser cette méthode en publipostage ?
Quel champ faut-il insérer dans le doc principal et à quoi doit-il faire référence dans la base de données (Excel) ? A un lien, placé dans une cellule, vers une image ?
A+
Je suis tootwi
Si tu veux poser une question, tu dois ouvrir un post et pas utiliser celui des autres.
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA
Mes articles
Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Tu as vu le sujet de la discussion ? "publipostage et image"
Je suis dans le sujet, moi ! Mais là, je vois bien que tu te dégonfles
..............................................
Bon, j'ai réalisé une procédure qui insère une image dans un document fusionné (Lettres type 1 à n)
La structure :
- Un document principal contenant les champs de fusion (.doc)
- Un classeur Excel pour la base de données (.xls)
- Dans le document principal, le mot "<Image> est positionné à l'endroit voulu de l'insertion de l'image dans le texte.
- Dans la base de données (xls) un champ "lien" contenant le chemin complet vers l'image correspondante. Ce champ n'est pas inséré dans le document principal.
La méthode :
- Ouverture de la base de donnée xls
- Réalisation d'un tableau des images par lecture de la base de données
- Fermeture de la base de données
- La fusion -> réalisée ligne par ligne (autant de documents que de lignes dans la base de données)
- Pour chaque document, recherche dans le texte du mot <Image>
- Insertion de l'image
- Passage à la fusion suivante
Options : (mises en remarque)
- Edition immédiate possible de chaque lettre type
- Fermeture immédiate possible de chaque lettre type après édition
- Enregistrement sous le nom du destinataire de chaque lettre type créée
Le code :
Testé.
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100 Option Explicit Sub FusionExcelWord() Dim Wd1 'As Document Dim xlApp 'as Excel.Application Dim CL1 'as workbook Dim FL1 'as worksheet Dim TabNom(), TabImag(), DerLig As Long, NoLig Dim Cheminxls, NomFich, Feuilxls Set Wd1 = ActiveDocument Set xlApp = CreateObject("Excel.Application") xlApp.Visible = False Cheminxls = "D:\xls\" NomFich = "Liste pour fusion.xls" Feuilxls = "feuil3" 'Ouverture du fichier Excel Set CL1 = xlApp.Workbooks.Open(Cheminxls & NomFich) Set FL1 = CL1.Worksheets(Feuilxls) '< la feuille DoEvents DerLig = FL1.Range("A1").SpecialCells(xlCellTypeLastCell).Row 'Création des tableaux de noms de fichiers et d'images ReDim TabNom(DerLig) ReDim TabImag(DerLig) 'tient compte de la ligne d'entête For NoLig = 1 To DerLig - 1 'Index tableaux commence à 1, ligne commence à 2 'Le tableau des noms permet d'enregistrer chaque document sous son nom 'TabNom(NoLig) = FL1.Cells(NoLig + 1, 1).Value 'Noms dans col 1 TabImag(NoLig) = FL1.Cells(NoLig + 1, 9).Value 'Image, col 9 Next CL1.Close False 'Fermeture du fichier Excel xlApp.Quit 'Fermeture de l'application Excel Set CL1 = Nothing Set xlApp = Nothing DoEvents 'Masque tout Application.ScreenUpdating = False 'Evite les mvts de documents Application.Visible = False 'masque l'application '*************** facultatif si la liaison existe déjà ********************** 'Créer la liaison entre le doc Word et le fichier Excel 'Wd1.MailMerge.MainDocumentType = wdFormLetters 'Wd1.MailMerge.OpenDataSource Name:= _ Cheminxls & NomFich, ConfirmConversions:=False, LinkToSource:=True, Format:=wdOpenFormatAuto, Connection:= _ "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=" & Cheminxls & NomFich & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Typ" _ , SQLStatement:="SELECT * FROM `" & Feuilxls & "$`", SQLStatement1:="", SubType:= _ wdMergeSubTypeAccess '**************************************************************************** 'Erreur si la fusion demandée ne concerne pas toute la liste Excel 'En attente de solution + orthodoxe (décompte de la liste demandée ?) On Error GoTo Fin 'Fusion For NoLig = 1 To DerLig - 1 With Wd1.MailMerge .Destination = wdSendToNewDocument .SuppressBlankLines = True With .DataSource .FirstRecord = NoLig .LastRecord = NoLig End With .Execute End With DoEvents 'Recherche dans le texte du mot <Image> With Selection.Find .Forward = True .Wrap = wdFindContinue .Execute FindText:="<Image>" End With 'Insertion de l'image selon chemin défini dans Fichier.xls If TabImag(NoLig) <> "" Then Selection.InlineShapes.AddPicture _ FileName:=TabImag(NoLig), SaveWithDocument:=True 'Si édition des documents souhaitée 'DoEvents 'ActiveDocument.PrintOut 'DoEvents 'fermeture sans sauvegarde après édition 'ActiveDocument.Close False 'DoEvents 'Si enregistrement souhaité de chaque document créé 'ActiveDocument.SaveAs FileName:=Rep & "\" & TabNom(NoLig) & ".doc" 'DoEvents 'ActiveDocument.Close False Next Fin:: Application.Visible = True Application.ScreenUpdating = True Set Wd1 = Nothing End Sub
Si une autre solution est possible en insérant directement chaque image dans les lettres type par un champ de fusion incorporé au document principal, je suis preneur (!)
NB - Les adaptations à apporter à ce code concernent
ainsi que les N° de colonnes des champs noms (éventuel) et Lien ImageCheminxls = "D:\xls\"
NomFich = "Liste pour fusion.xls"
Feuilxls = "feuil3"
'TabNom(NoLig) = FL1.Cells(NoLig + 1, 1).Value 'Noms dans col 1
TabImag(NoLig) = FL1.Cells(NoLig + 1, 9).Value 'Lien Image, col 9
Testé avec succès
Le principe : pour chaque enregistrement de la DB, on crée un document basé sur un modèle.
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
23
24
25
26
27
28 Public Sub publipost() Dim oWord As Word.Application Dim oDoc As Word.Document Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("select * from tbl_nomImages") Set oWord = New Word.Application While Not rs.EOF oWord.Documents.Add ("c:\local data\images\images.dot") oWord.ActiveDocument.Bookmarks("bm1").Select Selection.TypeText rs.Fields(1) oWord.ActiveDocument.Bookmarks("image").Select Selection.InlineShapes.AddPicture FileName:=rs.Fields(2), linktofile:=False, savewithdocument:=True oWord.ActiveDocument.SaveAs "c:\local data\images\" & rs.Fields(1) & ".doc" oWord.ActiveDocument.Close rs.MoveNext Wend rs.Close Set rs = Nothing db.Close Set db = Nothing oWord.Quit End Sub
On ajoute les champs voulus, on sauve le document.
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA
Mes articles
Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Hello L'heureux homme oli,
Ok pour insérer une image depuis Access, on peut faire pareil depuis Word ou Excel, mais pour ceux qui ne connaissent pas : "C'est du publipostage ?"
Comment fais-tu pour insérer l'image dans une document issu d'une fusion en partant d'un doc principal qui n'est qu'un doc ordinaire avec des champs de fusion ?
Là, je suis dépassé si ton code fait ça
Pour la fusion en tant que tel, j'ai pas encore essayé.
Pour le code que j'ai donné, c'est un simple modèle comme tous les modèles.
J'y ai mis des signets par facilité.
Dans un champ de ma table, j'ai le chemin de l'image.
Au départ d'Access, j'ouvre Word, je crée un nouveau document basé sur mon modèle.
Je fais une sélection de mes signets les uns après les autres et je colle mes données.
Pour l'image, j'utilise le InLineShape.AddPicture.
Au final, je me retrouve avec des documents contenant mes données et mes images.
Dans l'exemple, j'ai fait une sauvegarde, car dans certains post, on demande comment sauver les documents. On pourrais tout aussi bien lancer l'impression.
Le seul inconvénient, c'est que c'est un document à la fois.
En fait, ça revient à faire une fusion.
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA
Mes articles
Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
C'est à mettre dans la Faq VBA Access, pas VBA Word, non ?
On peut le faire dans les deux sens, ouvrir les recordsets dans word. je vais le mettre dans la FAQ word et le proposer pour la FAQ Access.Envoyé par ouskel'n'or
As-tu essayé pour voir ?
Je vais creuser pour arriver à la même chose en Excel.
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA
Mes articles
Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Je reste dans l'optique Word.
Je ne comprends pas pourquoi il te faut un modèle. Une balise suffirait ou un signet.
On part d'un courrier, on ajoute les champs de fusion.
Malheureusement, pour l'insertion d'une image, on ne sait pas faire
Comme dans une lettre type issue de la fusion on ne peut pas mettre un signet (quoique je n'ai pas vérifié) on met une balise.
La balise trouvée par le code, on insère pour chaque lettre type l'image qui lui correspond.
Le seul problème de la méthode était que, pour connaître le chemin de l'image, il fallait lire l'adresse de l'image dans le fichier Excel, ou Access, si tu veux.
Mon code fait ça depuis Word.
Et, vue la demande de openWorld, c'est depuis Word, que le code doit faire ça.
A+
Une dernière pour la route
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 {INCLUDEPICTURE"{MERGEFIELD "image"}"}
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA
Mes articles
Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Dans quelle version dExcel ? Je n'ai pas ça dans l'aide, à aucun des mots (sauf image )
A+
C'est pas dans Excel, c'est dans Word et le format du lien pour le fichier se faitEnvoyé par n'or
Code : Sélectionner tout - Visualiser dans une fenêtre à part c:\\monrépertoire\\monimage.gif
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA
Mes articles
Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Salut,
Voila super c absoluement ca aue je veux. Mais je ne sais pas comment m'en servir lol. Il faut que j'aille dans champs , et apres? Si possible soyez le plus clair possible car j'ai bien essaye une dizaine de tutos en vain.
Code : Sélectionner tout - Visualiser dans une fenêtre à part {INCLUDEPICTURE"{MERGEFIELD "image"}"}
Merci beucoup
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager