Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/04/2006, 16h03   #1
Invité régulier
 
Inscription : janvier 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 21
Points : 6
Points : 6
Par défaut [VBA-W]document word dynamique

Bonjour à tous,

Je souhaite créé dynamiquement un document WORD en utilisant des informations contenues dans une base de données créé en Access.

Je n'ai pas de problème pour toutes les infos de type texte. (j'utilise le mailmerge de word - publipostage). TVB

Par contre je souhaite insérer dans mon doc word, pour chaque "ligne" de ma base access, une photo dont l'adresse de stockage dans ma base (comme pour faire un trobinoscope).

J'ai essayé par moi même et beaucoup cherché sur le net mais je ne trouve pas de solutions à mon problème;

Est-ce que qq'un a une idée ou une piste à me soumettre ?

Merci

Tinous
tinous est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 16h08   #2
Membre habitué
 
Inscription : avril 2005
Messages : 137
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 137
Points : 113
Points : 113
Voilà ce que j'avais mis pour insérer une photo dans une cellule d'un tableau WOrd. Je n'ai jamais essayé la liaison avec Access.

Code :
1
2
Word.Selection.InlineShapes.AddPicture FileName:="C:\Photo.jpg", _
          LinkToFile:=False, SaveWithDocument:=True
linda15975 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 19h07   #3
Invité régulier
 
Inscription : janvier 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 21
Points : 6
Points : 6
Par défaut comment récuperer la valeur du champ ?

Merci à Linda mais mon problème réside dans la récupération du nom du fichier image (variable) et non dans l'insertion elle-même.

Je n'ai pas grande experience (ce n'est de le dire) en programmation objet. Si j'arrivais à attribuer à ma variable "aaa" le contenu de mon champ "image" tout irai bien. Mais comment faire ?

Voici mon code :



Code :
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
 
Sub Macro3()
'
' Macro3 Macro
'
    ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
    ActiveDocument.MailMerge.OpenDataSource Name:= _
        "D:\My Documents\essai.xls", ConfirmConversions:=False, ReadOnly _
        :=False, LinkToSource:=True, AddToRecentFiles:=False, PasswordDocument:= _
        "", PasswordTemplate:="", WritePasswordDocument:="", _
        WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
        Connection:="Entire Spreadsheet", SQLStatement:="", SQLStatement1:=""
 
    ActiveDocument.MailMerge.EditMainDocument
 
    ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:="numero"
    Selection.TypeText Text:=" "
    ActiveDocument.MailMerge.Fields.Add Range:=Selection.Range, Name:="image"
 
 
    Selection.TypeText Text:=" ..................."
    aaa = "D:\My Documents\image001.gif"   ' ceci est un test
 
    ' aaa = ????  ........................
 
    ' je souhaite attribuer à 'aaa' la valeur du champ 'image' de l'occurence 
    ' active du fichier essai.xls dans laquelle est stockée le chemin + nom
    ' du fichier de l'image à inserer
 
 
    Selection.TypeText Text:=" "
     Selection.InlineShapes.AddPicture FileName:=aaa, LinkToFile:=False, _
      SaveWithDocument:=True
 
End Sub
Y a t'il une solution ?

merci
Tinous
tinous est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 19h32   #4
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
bonjour

tu peux essayer

Code :
aaa = ActiveDocument.MailMerge.DataSource.DataFields("image").Value


bonne soiree
michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 19h54   #5
Invité régulier
 
Inscription : janvier 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 21
Points : 6
Points : 6
Par défaut on est proche mais ...

Merci SilkyRoad on y est presque !
Avec cette instruction l'image insérer est toujours la même, c'est à dire l'image correspondant au premier enr de ma base.- pas d'évolution :-(
Quand je lance le publipostage, tous mes champs évolus normalement, je change bien de nom, de prénon etc ... mais j'ai toujours la mm photo grgrgrg

la solution n'est pas loin. mais où?

Tinous
tinous est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 20h12   #6
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
rebonsoir


pour boucler sur tous les enregistrements du champ "image" , dans la base de données


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
'boucle sur tous les enregistrements de la base de données
Dim i As Integer
 
For i = 1 To ActiveDocument.MailMerge.DataSource.RecordCount
aaa = ActiveDocument.MailMerge.DataSource.DataFields("image").Value
'
'
'la suite de la procedure
'
'
'
'pour passer à l'enregistrement suivant
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
Next i



bonne soiree
michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 21h19   #7
Invité régulier
 
Inscription : janvier 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 21
Points : 6
Points : 6
Par défaut pb dû à mailmerge ?

Re bonsoir et re merci SilkyRoad

J'ai essayé ta solution mais je me fais jeter sur
ActiveDocument.MailMerge.DataSource.RecordCount
"methode non reconnue". Il semble que le mailmerge ne soit pas très flexible ;-).

grgrgr

je continue ma quête.

Tinous
tinous est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 21h50   #8
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
rebonsoir

j'utilise cette propriété sans probleme avec Office XP

Citation:
RecordCount, propriété
Renvoie une valeur de type Long qui représente le nombre d'enregistrements figurant dans la source de données.

je ne pourrai malheureusement pas t'aider pour les autres versions


bonne soiree
michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 22h18   #9
Invité régulier
 
Inscription : janvier 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 21
Points : 6
Points : 6
Par défaut presque ...

Merci tout plein, je commence à voir la lumière tout là-bas au bout du tunnel... j'ai changé d'ordi pour travailler sous XP et donc ça marche beaucoup mieux.

je m'explique.

ta solution marche super bien, je me retrouve avec un document avec toutes mes images à la queue leu-leu MAIS ... je n'arrive pas à combiner les exigences de mon publipostage ( mise en forme des données, saut de page entre les fiches, texte fixe etc) et les images.

bonne soirée
Tinous
tinous est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 05h57   #10
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
bonjour

difficile de répondre sans voir ta procédure :

la marche à suivre si ton publipostage est totalement dynamique :

1. tu crées ton document principal ( insertion du texte avec la mise en forme , insertions des champs ...etc...)

2. ensuite tu boucles sur les enregistrements de ta base de données :
et pour chaque enregistrement tu effectues l'action finale souhaitée ( impression , envoi mail , sauvegarde séparée ...etc...) en intégrant une image dans chaque lettre


bonne journée
michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 09h31   #11
Invité régulier
 
Inscription : janvier 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 21
Points : 6
Points : 6
Par défaut explication

Bonjour le matinal ;-) , ton aide est précieuse

je t'explique ce que je fais:

Comme je n'ai pas trouvé dans les fonctions standard de publipostage de word la possibilité d'insérer une image variable, je me suis dit qu'il fallait passer par une macro et y ajouter l'insertion d'image.
J'ai donc utilisé la fonction enregistrement pour créer cette macro, ensuite j'y ai ajouté l'instruction insertion d'image. Mon problème étant d'arriver à faire le lien entre une information de ma base et cette instruction.

Dans mon post plus haut tu as l'intégralité de ma macro. Le but de cette macro est de créer le document "principal" permettant de faire le publipostage MAIS pas de faire le publipostage lui-même. Cela permet de gérer le façon indépendant et souple la parti cosmétique (couleurs, polices, niveaux -titre 1 - 2 etc - marges) qui sera le travail de l'utilisateur. Une fois le cosmétique fait, l'utilisateur lancera lui même le publipostage.

Si j'integre tes instructions à ma macro, je me retrouve avec toutes les images dans mon document "principal" (si je lance le publi, toutes les photos seront répétées pour toutes les occurences de ma base). C'est déjà beaucoup mieu que ce à quoi j'arrivai avant !

Je sens donc que la solution n'est pas loin , mais pas si proche non plus.

Merci pour ton aide
bonne journée

Tinous
tinous est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 11h30   #12
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
bonjour

Citation:
Comme je n'ai pas trouvé dans les fonctions standard de publipostage de word la possibilité d'insérer une image variable
il suffit d'inserer un champ INCLUDEPICTURE dans le document principal

http://office.microsoft.com/en-us/as...861641033.aspx

http://support.microsoft.com/kb/q114306/#top


bonne journée
michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2006, 15h17   #13
Invité régulier
 
Inscription : janvier 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 21
Points : 6
Points : 6
Par défaut bon sang ... que de temps perdu !

Merci, merci, merci SilkyRoad pour ton aide.

effectivement, pas besoin de macro, juste du mailmerge qui a beaucoup plus de possibilité que ce que je croyais. la procédure est un peu alambiquée et il faut bien avoir le chemin avec un format entre " et avec double \ pour que cela fonctionne.

Mon utilisatrice préférée va être bien contente.

bonne journée

Tinous
tinous est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h09.


 
 
 
 
Partenaires

Hébergement Web