VBA excel - publipostage vers Word, en se basant sur un *.dotx

Résolu/Fermé
JoePJ Messages postés 77 Date d'inscription jeudi 9 septembre 2010 Statut Membre Dernière intervention 30 mai 2020 - 16 avril 2020 à 07:35
JoePJ Messages postés 77 Date d'inscription jeudi 9 septembre 2010 Statut Membre Dernière intervention 30 mai 2020 - 23 avril 2020 à 16:01
Bonjour !

Je suis en train de réaliser un outil dans Excel, me permettant, à l'aide d'un USERFORM de récupérer des données clients.
1 saisie = 1 ligne dans un onglet spécifique.
mes données sont de nature Nom, Prénom, adresse, ... ainsi que VRAI/FAUX (états issus de checkbox).

La finalité : généré pour un enregistrement réalisé dans Excel, un document word, issu d'un *.dotx "publipostage", se basant sur ma feuille excel de données.

je coince sur une étape "bête" : A partir d'Excel, avec pour 1 enregistrement donné et connu (et complet), je souhaite lancer Word, créer un nouveau document à partir de mon modèle *.dotx et constater que tous ses champs de publipostage sont à jour.
Si je fais cette action à la main <=> double clic sur mon *.dotx, aucun problème, ça fonctionne "au poil". Je constate systématiquement un message à l'ouverture de Word de "synchro" avec ma source de données, que je dois valider.

En revanche, si je le fais par excel, je constate mon modèle "brut", ie. sans update des champs, comme si la connexion à la source de données était KO.

voici comment j'ai codé ça, dans Excel (et qui ne fonctionne pas) :

Set appWrd = CreateObject("Word.Application")
' word visible pour debug
appWrd.Visible = True
'Set docWord = CreateObject("Word.document")
doc = "D:\TEST\Mod1.dotx"
Set docWord = appWrd.documents.Add(doc)


à cette étape :
1. word s'est lancée : OK
2. un nouveau document, basé sur mon *.dotx a été créé : OK.
3. par contre, je vois tous les champs de publipostage... bruts, "non-évalués".
lors de l'étape 2 (création du doc), je n'ai pas le message de liens vers ma source de données... et je me dis que le problème vient certainement de là.

Toute lumière pour éclairer ma lanterne serait la bienvenue !!!
A voir également:

12 réponses

JoePJ Messages postés 77 Date d'inscription jeudi 9 septembre 2010 Statut Membre Dernière intervention 30 mai 2020 12
23 avril 2020 à 16:01
C'est exactement ce que j'ai fait de mon côté, en variabilisant la valeur que j'injecte dans le first & last record.

Encore merci pour votre aide !

1
Le Pingou Messages postés 12211 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 30 novembre 2024 1 452
Modifié le 18 avril 2020 à 15:14
Bonjour,
Juste au passage, pouvez-vous mettre votre document Mod1.dotx à disposition?
Et le code complet....!

0
JoePJ Messages postés 77 Date d'inscription jeudi 9 septembre 2010 Statut Membre Dernière intervention 30 mai 2020 12
19 avril 2020 à 15:02
Bonjour Le Pingou,

les 2 fichiers nécessaires sont disponibles ici : https://wetransfer.com/downloads/e2d6a4bdfef4a5b382dc341a95bb736520200419125919/956cc0

Le fichier Excel est le fichier "principal" : pour accéder à la macro, il faut cliquer sur bouton "Générer Document", présent dans l'onglet "Chiffrage".
Le fichier "Mod1.dotx" doit être placé à la racine de C:\, ou bien modifier le code en fonction.
0
Le Pingou Messages postés 12211 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 30 novembre 2024 1 452
19 avril 2020 à 16:46
Bonjour,
Merci de votre réponse, la réponse va suivre, patience.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12211 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 30 novembre 2024 1 452
20 avril 2020 à 10:23
Bonjour,
En principe mon code fonctionne sauf avec votre modèle ou il me revoie un document comme suit:


Je n'ai encore pas trouvé ou est le problème...!
0
Le Pingou Messages postés 12211 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 30 novembre 2024 1 452
20 avril 2020 à 14:40
Bonjour,
En cherchant, j'ai découpé le document Mod1.dotx en 3 ...1 page par nouveau document et en lançant le publipostage les 2 premières (page 1 et 2) sont OK par contre la 3 reproduit l'erreur "Erreur de calcule da .......". Je doit donc trouver ce qui cloche sur la page 3 de votre document (la partie ::: Proposition chiffrée ....et la suite)

0
JoePJ Messages postés 77 Date d'inscription jeudi 9 septembre 2010 Statut Membre Dernière intervention 30 mai 2020 12
20 avril 2020 à 15:15
Bonjour Le Pingou,

Désolé pour le côté pas simple à dépatouiller ! Merci beaucoup dans tous les cas pour l'énergie !

j'avoue que sur la page 3, j'ai fait des champs très imbriqués ; il peut s'avérer plus rapide & malin de les calculer directement dans Excel.
0
Le Pingou Messages postés 12211 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 30 novembre 2024 1 452
20 avril 2020 à 16:55
Bonjour,
Merci du retour. J'avais remarqué dans votre classeur qu'il manquait des totaux qui pouvaient être fait directement sur la feuille.........je vais le faire et ceci simplifiera les champs de publipostage.
Patience.
0
Le Pingou Messages postés 12211 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 30 novembre 2024 1 452
21 avril 2020 à 11:22
Bonjour,
Ce n’était pas simple, les 2 fichiers doivent être dans le même dossier. Dans le programme de publipostage (sous module : lepingou macro : Sub Publipost() ) j’ai introduit le code pour créer un sous dossier dans lequel le document de publipostage sera enregistrée.
Je vous laisse la découverte.
Le lien : https://mon-partage.fr/f/chiaJBVT/

0
JoePJ Messages postés 77 Date d'inscription jeudi 9 septembre 2010 Statut Membre Dernière intervention 30 mai 2020 12
21 avril 2020 à 17:29
Vu le temps passé, je me doute que ce n'était pas simple !
Il me semble que ce que je n'avais pas compris, c'est (entre autre !) la déclaration du lien vers la base de donnée.

Un grand merci car c'est exactement ce que je voulais faire !

Juste une dernière question, est-il possible de ne générer le publipostage que d'un seul enregistrement spécifique, en particulier le dernier ?
Est-ce qu'à tout hasard le .firstRecord & .lastRecord me permettraient de réaliser ça ?

0
Le Pingou Messages postés 12211 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 30 novembre 2024 1 452
21 avril 2020 à 23:16
Bonjour,
Merci du retour, content pour vous. Je ne crois pas qu'il est possible de le faire avec .firstRecord & .lastRecord .......j'ai une autre idée en Tête à voir demain.
0
Le Pingou Messages postés 12211 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 30 novembre 2024 1 452
22 avril 2020 à 20:13
Bonjour,
Je vous propose d'essayer pour le dernier enregistrement en adaptant le code selon ce qui suit:
.suppressBlankLines = True

'****code à essayer pour un enregistrement le dernier...
nbrec = .DataSource.RecordCount
With .DataSource
.firstRecord = nbrec 'wdDefaultFirstRecord
.lastRecord = nbrec 'wdDefaultLastRecord
End With
' ********* fin de modification

.Execute Pause:=False 'Exécute l'opération de publipostage

Merci du retour
0