Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

publipostage et enregistrment des lettres

21 réponses
Avatar
sleg
BOnjour,

voila j'ai un document Word pour faire du publipostage avec un fichier
excel pour les donn=E9es.

je clic sur "fusionner vers un autre document" ensuite je lance une
macro qui me decoupe ce dernier fichier et les enregistre sur mon c: ,
mais je ne sais pas comment passer le nom de chaque fichier qui est
contenu dans mon document excel en colonne T.

est ce possible ?

mon fichier word & excel se trouve dans la meme repertoire.
dans la colonne T il y aune formule
=3DCONCATENER("nom_FRI_";TEXTE(U2;"aaammjj");"_";V2;"_";J2;"_";H2)

Merci de votre aide.

10 réponses

1 2 3
Avatar
Anacoluthe
Bonjour !

'sleg' nous a écrit ...
plus de souci au nivau de mon second probleme mais j'ai toujours
l'autre ?
une idee please ?



Oh oui : suivez bien ce qu'est ActiveDocument dans votre macro !

Après ActiveDocument.SaveAs FileName:=NomFichier
vous oubliez ActiveDocument.Close
qui était pourtant bien là dans votre macro d'origine.

Résultat : votre document actif est toujours la même page
copiée. Comme vous supprimez le 1er paragraphe, la macro
essaie ensuite le deuxième qui n'est sûrement pas un nom
de fichier valide d'où l'erreur évidente.

À tous les débutants en VBA je conseille de ne JAMAIS copier
une macro sans avoir compris ligne à ligne ce qu'elle fait.
Il est rarissime qu'une macro marche au premier coup.
C'est la rançon à payer d'un langage simple, peu structuré
et peu contraignant. Donc ça DOIT beuguer. Et quand on ne
comprend pas pourquoi ça beugue, alors on devient FOU.

Anacoluthe
« Le principal est de débuter. »
- Georges Charles HUYSMANS
Avatar
sleg
Bonjour,

merci apres ajout de la ligne de code manquante toujours la meme
erreur ??

en debogage j'arrive sur cette ligne.
ActiveDocument.SaveAs FileName:=nomFichier


voici le code de la macro :
Sub test01()
' Used to set criteria for moving through the document by section.
Application.Browser.Target = wdBrowseSection

'A mailmerge documents ends with a section break next page.
'Subtracting one from the section count stop error message.
For i = 1 To ((ActiveDocument.Sections.Count) - 1)

'Select and copy the section text to the clipboard
ActiveDocument.Bookmarks("Section").Range.Copy

'Create a new document to paste text from clipboard.
Documents.Add
Selection.Paste

' Removes the break that is copied at the end of the section, if
any.
Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1
ChangeFileOpenDirectory "C:"

' definir le nom du fichier de sauveagrde pour chaque enregistrement
nomFichier = ActiveDocument.Paragraphs(1).Range.Text
ActiveDocument.Paragraphs(1).Range.Delete
ActiveDocument.SaveAs FileName:=nomFichier
ActiveDocument.Close
Application.DisplayAlerts = False

' Move the selection to the next section in the document
Application.Browser.Next
Next i
ActiveDocument.Close savechanges:=wdDoNotSaveChanges
End Sub




On 21 oct, 14:18, Anacoluthe wrote:
Bonjour !

   'sleg' nous a écrit ...

> plus de souci au nivau de mon second probleme mais j'ai toujours
> l'autre ?
> une idee please ?

Oh oui : suivez bien ce qu'est ActiveDocument dans votre macro !

Après  ActiveDocument.SaveAs FileName:=NomFichier
vous oubliez ActiveDocument.Close
qui était pourtant bien là dans votre macro d'origine.

Résultat : votre document actif est toujours la même page
copiée. Comme vous supprimez le 1er paragraphe, la macro
essaie ensuite le deuxième qui n'est sûrement pas un nom
de fichier valide d'où l'erreur évidente.

À tous les débutants en VBA je conseille de ne JAMAIS copier
une macro sans avoir compris ligne à ligne ce qu'elle fait.
Il est rarissime qu'une macro marche au premier coup.
C'est la rançon à payer d'un langage simple, peu structuré
et peu contraignant. Donc ça DOIT beuguer. Et quand on ne
comprend pas pourquoi ça beugue, alors on devient FOU.

Anacoluthe
« Le principal est de débuter. »
   - Georges Charles HUYSMANS


Avatar
Anacoluthe
Bonjour !

'sleg' nous a écrit ...
en debogage j'arrive sur cette ligne.
ActiveDocument.SaveAs FileName:=nomFichier



nomFichier n'est pas un nom de fichier correct ou existe déjà
Revoyez svp tout votre document de fusion

Anacoluthe
« Les erreurs sont les portes de la découverte. »
- James JOYCE
Avatar
sleg
Bonjour,

voici les fichiers

http://www.nelty.fr/fichiers/fiche critique.zip.





On 21 oct, 21:31, Anacoluthe wrote:
Bonjour !

   'sleg' nous a écrit ...

> en debogage j'arrive sur cette ligne.
>  ActiveDocument.SaveAs FileName:=nomFichier

nomFichier n'est pas un nom de fichier correct ou existe déjà
Revoyez svp tout votre document de fusion

Anacoluthe
« Les erreurs sont les portes de la découverte. »
   - James JOYCE


Avatar
Anacoluthe
Bonjour !

'sleg' nous a écrit ...
voici les fichiers
http://www.nelty.fr/fichiers/fiche critique.zip.



J'ai jeté un rapide coup d'oeil : il saute aux yeux
comme que je vous le suggérais précédemment :-s
que vous ne composez PAS un nom de fichier valide...

De plus le publipostage n'est pas adapté aux formulaires :-(

Anacoluthe
« Le principal est de débuter. »
- Georges Charles HUYSMANS
Avatar
sleg
Bonsoir,

en gros je dois juste renommer nomfichier en autre chose dans la
macro ??

bonne soiree.



On 22 oct, 19:07, Anacoluthe wrote:
Bonjour !

   'sleg' nous a écrit ...

> voici les fichiers
>http://www.nelty.fr/fichiers/fichecritique.zip.

J'ai jeté un rapide coup d'oeil : il saute aux yeux
comme que je vous le suggérais précédemment :-s
que vous ne composez PAS un nom de fichier valide...

De plus le publipostage n'est pas adapté aux formulaires :-(

Anacoluthe
« Le principal est de débuter. »
   - Georges Charles HUYSMANS


Avatar
Anacoluthe
Bonjour !

'sleg' nous a écrit ...
en gros je dois juste renommer nomfichier en autre chose dans la
macro ??



Non ce n'est pas ça : votre macro devrait s'appliquer au document de fusion
et non au document principal. C'est le document de fusion qu'il faut
découper section par section et enregistrer sous un nomfichier chaque
fois différent. Si votre macro est dans un module du document principal,
ce qui est parfaitement envisageable, vous ne pouvez pas continuer à
travailler sur ActiveDocument.

Par ailleurs, en faisant totalement abstraction de VBA qui vous
pose trop de problèmes je pense, avez-vous regardé simplement
ce que deviennent vos champs de formulaire dans votre document
de fusion. Je dis bien le document de fusion, car je pense que
le publipostage aussi vous pose quelques petits problèmes...

Ne le prenez pas mal : tout le monde a débuté un jour :-p

Anacoluthe
« Le principal est de débuter. »
- Georges Charles HUYSMANS
Avatar
sleg
BOnjour,

les champs de fusion disparraissent.

la macro est dans le normal.dot et je la lance a aprtir de mon
document de fusion.


en gros il y a une solutio na mon problemem ou pas ?

BOnne journée.


On 22 oct, 21:39, Anacoluthe wrote:
Bonjour !

   'sleg' nous a écrit ...

> en gros je dois juste renommer nomfichier en autre chose dans la
> macro ??

Non ce n'est pas ça : votre macro devrait s'appliquer au document de fu sion
et non au document principal. C'est le document de fusion qu'il faut
découper section par section et enregistrer sous un nomfichier chaque
fois différent. Si votre macro est dans un module du document principal ,
ce qui est parfaitement envisageable, vous ne pouvez pas continuer à
travailler sur ActiveDocument.

Par ailleurs, en faisant totalement abstraction de VBA qui vous
pose trop de problèmes je pense, avez-vous regardé simplement
ce que deviennent vos champs de formulaire dans votre document
de fusion. Je dis bien le document de fusion, car je pense que
le publipostage aussi vous pose quelques petits problèmes...

Ne le prenez pas mal : tout le monde a débuté un jour :-p

Anacoluthe
« Le principal est de débuter. »
   - Georges Charles HUYSMANS


Avatar
Anacoluthe
Bonjour !

'sleg' nous a écrit ...
les champs de fusion disparraissent.



Les 'champs de fusion' disparaissent tous à la fusion, c'est normal.
Le problème est que certains 'champs de formulaire' disparaissent aussi

la macro est dans le normal.dot et je la lance a aprtir de mon
document de fusion.



OK ça c'est bon. Vous devriez pouvoir terminer ce sujet
concernant la découpe de la fusion en plusieurs fichiers. Pensez
notamment à donner le nom complet, chemin compris, de chaque fichier.
Je suis allé un peu vite moi-même en oubliant de vous dire d'éliminer
le caractère saut de ligne en fin de paragraphe.
Pensez à placer des espions dans votre code pour déboguer : vous
auriez vite vu en quoi le nom de fichier n'est pas valide !

en gros il y a une solutio na mon problemem ou pas ?



Il y a SUREMENT une solution à votre problème :-p
Mais il n'est pas certain qu'elle passe par Word, son publipostage
et ses formulaires.

D'ailleurs j'avoue ne pas comprendre tout votre problème. En général
on utilise UN formulaire, éventuellement prérempli avec certaines
données, puis avec CE formulaire on renseigne une base de données.
Remarquez qu'avec Word conçu pour imprimer ledit formulaire, la
récupération des données n'est jamais simple d'où l'obsolescence
aujourd'hui des formulaires Word...

Bon courage

(merci d'ouvrir une autre discussion au besoin ; celle-ci s'épuise)

Anacoluthe
« Pour tout problème complexe il existe une solution simple, claire
et fausse. »
- Henry Louis MENCKEN
Avatar
sleg
voici la solution a mon problem.

et un grand merci pour votre aide.

Bonne journée.


Sub fusion1()
' Used to set criteria for moving through the document by section.
Application.Browser.Target = wdBrowseSection

'A mailmerge documents ends with a section break next page.
'Subtracting one from the section count stop error message.
For i = 1 To ((ActiveDocument.Sections.Count) - 1)

'Select and copy the section text to the clipboard
ActiveDocument.Bookmarks("Section").Range.Copy

'Create a new document to paste text from clipboard.
Documents.Add
Selection.Paste

' Removes the break that is copied at the end of the section, if
any.
Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1
ChangeFileOpenDirectory "chemin de stockage des documents"

' definir le nom du fichier de sauveagrde pour chaque enregistrement
nomFichier = ActiveDocument.Paragraphs(1).Range.Text
"""""""""""""""""""""""""
nomFichier = Left(nomFichier, (Len(nomFichier) - 1))
"""""""""""""""""""""""""
ActiveDocument.Paragraphs(1).Range.Delete
ActiveDocument.SaveAs FileName:=nomFichier
ActiveDocument.Close savechanges:=wdDoNotSaveChanges
ActiveDocument.Paragraphs(1).Range.Delete

Application.DisplayAlerts = False

' Move the selection to the next section in the document
Application.Browser.Next
Next i
ActiveDocument.Close savechanges:=wdDoNotSaveChanges
End Sub











On 23 oct, 21:55, Anacoluthe wrote:
Bonjour !

   'sleg' nous a écrit ...

> les champs de fusion disparraissent.

Les 'champs de fusion' disparaissent tous à la fusion, c'est normal.
Le problème est que certains 'champs de formulaire' disparaissent aussi

> la macro est dans le normal.dot et je la lance a aprtir de mon
> document de fusion.

OK ça c'est bon. Vous devriez pouvoir terminer ce sujet
concernant la découpe de la fusion en plusieurs fichiers. Pensez
notamment à donner le nom complet, chemin compris, de chaque fichier.
Je suis allé un peu vite moi-même en oubliant de vous dire d'élimin er
le caractère saut de ligne en fin de paragraphe.
Pensez à placer des espions dans votre code pour déboguer : vous
auriez vite vu en quoi le nom de fichier n'est pas valide !

> en gros il y a une solutio na mon problemem ou pas ?

Il y a SUREMENT une solution à votre problème :-p
Mais il n'est pas certain qu'elle passe par Word, son publipostage
et ses formulaires.

D'ailleurs j'avoue ne pas comprendre tout votre problème. En généra l
on utilise UN formulaire, éventuellement prérempli avec certaines
données, puis avec CE formulaire on renseigne une base de données.
Remarquez qu'avec Word conçu pour imprimer ledit formulaire, la
récupération des données n'est jamais simple d'où l'obsolescence
aujourd'hui des formulaires Word...

Bon courage

(merci d'ouvrir une autre discussion au besoin ; celle-ci s'épuise)

Anacoluthe
« Pour tout problème complexe il existe une solution simple, claire
   et fausse. »
   - Henry Louis MENCKEN


1 2 3