VBA excel - publipostage vers Word, en se basant sur un *.dotx
Résolu
JoePJ
Messages postés
78
Date d'inscription
Statut
Membre
Dernière intervention
-
JoePJ Messages postés 78 Date d'inscription Statut Membre Dernière intervention -
JoePJ Messages postés 78 Date d'inscription Statut Membre Dernière intervention -
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) :
à 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 !!!
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:
- VBA excel - publipostage vers Word, en se basant sur un *.dotx
- Word et excel gratuit - Guide
- Word 2013 - Télécharger - Traitement de texte
- Publipostage mail - Accueil - Word
- Comment supprimer une page sur word - Guide
- Faire un organigramme sur word - Guide
12 réponses
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 !
Encore merci pour votre aide !
Bonjour,
Juste au passage, pouvez-vous mettre votre document Mod1.dotx à disposition?
Et le code complet....!
Juste au passage, pouvez-vous mettre votre document Mod1.dotx à disposition?
Et le code complet....!
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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...!
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...!
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)
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)
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.
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.
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.
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.
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/
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/
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 ?
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 ?
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.
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.
Bonjour,
Je vous propose d'essayer pour le dernier enregistrement en adaptant le code selon ce qui suit:
Merci du retour
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