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

fusion ds plusieurs fichiers

15 réponses
Avatar
MCA
Bonjour,
J'aimerais fusionner mes lettres dans autant de fichiers qu'il y a de
destinataires (et non un fichier global). Est-ce possible ?

Merci de votre aide

--
MCA

10 réponses

1 2
Avatar
Circé
Bonjour,

Ce n'est pas prévu, mais une macro peut le faire après coup. Regarde
ici :
http://faqword.fr/index.php/wfaq/51-wvba/552

Circé
http://faqword.fr


MCA a exposé le 26/01/2009 :
Bonjour,
J'aimerais fusionner mes lettres dans autant de fichiers qu'il y a de
destinataires (et non un fichier global). Est-ce possible ?

Merci de votre aide


Avatar
MCA
Merci Circé de ta réponse.
J'ai essayé mais cela ne fonctionne pas. Rien ne se passe.

J'ai procédé de la façon suivante :
1-J'ai enregistré une nouvelle macro que j'ai arrêté dès le début.
2-Je l'ai ouverte et ai copié ta macro et enregistré (j'ai modifié le
dossier C: en D:temp)
3-J'ai ouvert le fichier à séparer en autant de fichiers word que de
destinataires et cliquer sur la macro.

Une idée ?

--
MCA


"Circé" a écrit :

Bonjour,

Ce n'est pas prévu, mais une macro peut le faire après coup. Regarde
ici :
http://faqword.fr/index.php/wfaq/51-wvba/552

Circé
http://faqword.fr


MCA a exposé le 26/01/2009 :
> Bonjour,
> J'aimerais fusionner mes lettres dans autant de fichiers qu'il y a de
> destinataires (et non un fichier global). Est-ce possible ?
>
> Merci de votre aide





Avatar
Circé
Bonjour MCA,

Tout d'abord, as tu mis le niveau de sécurité macro sur Moyen et non
sur Elevé, et as tu activé les macros ?

As-tu bien pris la seconde macro (la première fonctionne avec des sauts
de page, hors dans un doc issu du publipostage, il s'agit de sauts de
section

MCA a formulé ce mardi :
Merci Circé de ta réponse.
J'ai essayé mais cela ne fonctionne pas. Rien ne se passe.

J'ai procédé de la façon suivante :
1-J'ai enregistré une nouvelle macro que j'ai arrêté dès le début.



Euh... pour quoi faire ???

2-Je l'ai ouverte et ai copié ta macro et enregistré (j'ai modifié le
dossier C: en D:temp)



OK pour le dossier, car mon ancienne appli m'avalait les , tu as donc
bien fait de rétablir...

Circé
http://faqword.fr

3-J'ai ouvert le fichier à séparer en autant de fichiers word que de
destinataires et cliquer sur la macro.

Une idée ?

--
MCA


"Circé" a écrit :

Bonjour,

Ce n'est pas prévu, mais une macro peut le faire après coup. Regarde
ici :
http://faqword.fr/index.php/wfaq/51-wvba/552

Circé
http://faqword.fr


MCA a exposé le 26/01/2009 :
Bonjour,
J'aimerais fusionner mes lettres dans autant de fichiers qu'il y a de
destinataires (et non un fichier global). Est-ce possible ?

Merci de votre aide









Avatar
MCA
Circé
Dans word2007, je ne vois pas où on peut mettre le niveau (bas, moyen,
élevé..).

J'ai bien activé les macros dans :
BOUTON OFFICE/Options WORD/Centre de gestion de la
confidentialité/Paramètres du Centre de gestion de la
confidentialité/Paramètres des macros/Activer toutes les macros

et rajouté un emplacement réservé dans :
BOUTON OFFICE/Options WORD/Centre de gestion de la
confidentialité/Paramètres du Centre de gestion de la
confidentialité/Paramètres des macros/Emplacements approuvés

J'ai bien pris la 2ème macro avec les sauts de section.

Cela ne marche toujours pas.
--
MCA


"Circé" a écrit :

Bonjour MCA,

Tout d'abord, as tu mis le niveau de sécurité macro sur Moyen et non
sur Elevé, et as tu activé les macros ?

As-tu bien pris la seconde macro (la première fonctionne avec des sauts
de page, hors dans un doc issu du publipostage, il s'agit de sauts de
section

MCA a formulé ce mardi :
> Merci Circé de ta réponse.
> J'ai essayé mais cela ne fonctionne pas. Rien ne se passe.
>
> J'ai procédé de la façon suivante :
> 1-J'ai enregistré une nouvelle macro que j'ai arrêté dès le début.

Euh... pour quoi faire ???

> 2-Je l'ai ouverte et ai copié ta macro et enregistré (j'ai modifié le
> dossier C: en D:temp)

OK pour le dossier, car mon ancienne appli m'avalait les , tu as donc
bien fait de rétablir...

Circé
http://faqword.fr

> 3-J'ai ouvert le fichier à séparer en autant de fichiers word que de
> destinataires et cliquer sur la macro.
>
> Une idée ?
>
> --
> MCA
>
>
> "Circé" a écrit :
>
>> Bonjour,
>>
>> Ce n'est pas prévu, mais une macro peut le faire après coup. Regarde
>> ici :
>> http://faqword.fr/index.php/wfaq/51-wvba/552
>>
>> Circé
>> http://faqword.fr
>>
>>
>> MCA a exposé le 26/01/2009 :
>>> Bonjour,
>>> J'aimerais fusionner mes lettres dans autant de fichiers qu'il y a de
>>> destinataires (et non un fichier global). Est-ce possible ?
>>>
>>> Merci de votre aide
>>
>>
>>





Avatar
Circé
Bonjour,

Cette macro est depuis très longtemps dans la faq. Je viens de la
regarder et en fait, elle a peut être fonctionné avec d'anciennes
versions, mais là j'ai un gros doute, car elle est basée sur des
signets cachés Section, or a priori ça n'existe pas... :-s

Geo ou Heureux-Oli pourront peut être confirmer...

Donc, je vais la remplacer par une autre qui a été écrite par
anacoluthe et que j'ai un peu modifié. Elle fonctionne parfaitement.

Cela dit, ça n'explique pas pourquoi chez toi ça ne fait "rien"... Car
en fait de ne rien faire, tu devrais tomber sur une erreur !

Et pour couronner le tout, la faq ne répond plus... Pfffuittt !

En attendant, je te la mets ici :

Sub SectionsDansDocumentsSéparés()
Application.ScreenUpdating = False

Dim SousDoc As Document
Dim R As Range
Dim S As Section
Dim DocNum

For Each S In ActiveDocument.Sections
Set R = S.Range: R.End = R.End - 1
Set SousDoc = Documents.Add
ChangeFileOpenDirectory "C:"
With SousDoc
DocNum = DocNum + 1
.Content = R
.SaveAs FileName:="test_" & DocNum & ".docx"
.Close
End With
Next S

Set SousDoc = Nothing
Set R = Nothing
Set S = Nothing
Application.ScreenUpdating = False

End Sub

Tu mets la macro dans ton doc, tu l'enregistres en format docm dans un
emplacement approuvé.

Circé
http://faqword.fr


Le 27/01/2009, MCA a supposé :
Circé
Dans word2007, je ne vois pas où on peut mettre le niveau (bas, moyen,
élevé..).

J'ai bien activé les macros dans :
BOUTON OFFICE/Options WORD/Centre de gestion de la
confidentialité/Paramètres du Centre de gestion de la
confidentialité/Paramètres des macros/Activer toutes les macros

et rajouté un emplacement réservé dans :
BOUTON OFFICE/Options WORD/Centre de gestion de la
confidentialité/Paramètres du Centre de gestion de la
confidentialité/Paramètres des macros/Emplacements approuvés

J'ai bien pris la 2ème macro avec les sauts de section.

Cela ne marche toujours pas.
--
MCA


"Circé" a écrit :

Bonjour MCA,

Tout d'abord, as tu mis le niveau de sécurité macro sur Moyen et non
sur Elevé, et as tu activé les macros ?

As-tu bien pris la seconde macro (la première fonctionne avec des sauts
de page, hors dans un doc issu du publipostage, il s'agit de sauts de
section

MCA a formulé ce mardi :
Merci Circé de ta réponse.
J'ai essayé mais cela ne fonctionne pas. Rien ne se passe.

J'ai procédé de la façon suivante :
1-J'ai enregistré une nouvelle macro que j'ai arrêté dès le début.



Euh... pour quoi faire ???

2-Je l'ai ouverte et ai copié ta macro et enregistré (j'ai modifié le
dossier C: en D:temp)



OK pour le dossier, car mon ancienne appli m'avalait les , tu as donc
bien fait de rétablir...

Circé
http://faqword.fr

3-J'ai ouvert le fichier à séparer en autant de fichiers word que de
destinataires et cliquer sur la macro.

Une idée ?

--
MCA


"Circé" a écrit :

Bonjour,

Ce n'est pas prévu, mais une macro peut le faire après coup. Regarde
ici :
http://faqword.fr/index.php/wfaq/51-wvba/552

Circé
http://faqword.fr


MCA a exposé le 26/01/2009 :
Bonjour,
J'aimerais fusionner mes lettres dans autant de fichiers qu'il y a de
destinataires (et non un fichier global). Est-ce possible ?

Merci de votre aide
















Avatar
heureux-oli
Salut Circé,

Le liens que tu donnes est un peu bizarre pour la demande.

On copie le contenu d'un signet qui n'est pas défini ?
Il manque les déclarations qui génèrent une erreur. Mais c'est le signet qui
est le plus gênant.


J'ai écris un code qui devrait convenir, il me semble comprendre que la
question touche le publipostage.

http://heureuxoli.developpez.com/office/word/publipostage/#L7-G

Le code :

Sub TestPublipost()
' Déclaration des variables
Dim iR As Integer
Dim i As Integer
Dim oDoc As Document
Dim DocName As String
Dim oDS As MailMergeDataSource

' Affectation des objets
Set oDoc = ActiveDocument
Set oDS = oDoc.MailMerge.DataSource

iR = MailMerge.DataSource.RecordCount
Debug.Print iR
For i = 1 To iR
With oDoc.MailMerge
'Définition du premier et dernier enregistrement
.DataSource.FirstRecord = i

.DataSource.LastRecord = i
' Envoi des données dans un nouveau document
.Destination = wdSendToNewDocument
' Exécution du publipostage
.Execute
' Actualisation de l'enregistrement pour la sauvegarde
.DataSource.ActiveRecord = i
'Utilisation de deux champs pour obtenir le nom du document
DocName = .DataSource.DataFields(2).Value
DocName = DocName & "-" & .DataSource.DataFields(3).Value
Debug.Print DocName; i
End With
' Sauvegarde du document publiposté
With ActiveDocument
.SaveAs "c:temp" & DocName & ".doc"
.Close
End With
Next i
End Sub


--
Heureux-oli
http://heureuxoli.developpez.com/
http://word.developpez.com/

----------------------------------------------------------------------------------

"Circé" a écrit dans le message de news:

Bonjour,

Cette macro est depuis très longtemps dans la faq. Je viens de la regarder
et en fait, elle a peut être fonctionné avec d'anciennes versions, mais là
j'ai un gros doute, car elle est basée sur des signets cachés Section, or
a priori ça n'existe pas... :-s

Geo ou Heureux-Oli pourront peut être confirmer...

Donc, je vais la remplacer par une autre qui a été écrite par anacoluthe
et que j'ai un peu modifié. Elle fonctionne parfaitement.

Cela dit, ça n'explique pas pourquoi chez toi ça ne fait "rien"... Car en
fait de ne rien faire, tu devrais tomber sur une erreur !

Et pour couronner le tout, la faq ne répond plus... Pfffuittt !

En attendant, je te la mets ici :

Sub SectionsDansDocumentsSéparés()
Application.ScreenUpdating = False

Dim SousDoc As Document
Dim R As Range
Dim S As Section
Dim DocNum

For Each S In ActiveDocument.Sections
Set R = S.Range: R.End = R.End - 1
Set SousDoc = Documents.Add
ChangeFileOpenDirectory "C:"
With SousDoc
DocNum = DocNum + 1
.Content = R
.SaveAs FileName:="test_" & DocNum & ".docx"
.Close
End With
Next S

Set SousDoc = Nothing
Set R = Nothing
Set S = Nothing
Application.ScreenUpdating = False

End Sub

Tu mets la macro dans ton doc, tu l'enregistres en format docm dans un
emplacement approuvé.

Circé
http://faqword.fr


Le 27/01/2009, MCA a supposé :
Circé
Dans word2007, je ne vois pas où on peut mettre le niveau (bas, moyen,
élevé..).

J'ai bien activé les macros dans :
BOUTON OFFICE/Options WORD/Centre de gestion de la
confidentialité/Paramètres du Centre de gestion de la
confidentialité/Paramètres des macros/Activer toutes les macros

et rajouté un emplacement réservé dans :
BOUTON OFFICE/Options WORD/Centre de gestion de la
confidentialité/Paramètres du Centre de gestion de la
confidentialité/Paramètres des macros/Emplacements approuvés

J'ai bien pris la 2ème macro avec les sauts de section.

Cela ne marche toujours pas.
--
MCA


"Circé" a écrit :

Bonjour MCA,

Tout d'abord, as tu mis le niveau de sécurité macro sur Moyen et non sur
Elevé, et as tu activé les macros ?

As-tu bien pris la seconde macro (la première fonctionne avec des sauts
de page, hors dans un doc issu du publipostage, il s'agit de sauts de
section

MCA a formulé ce mardi :
Merci Circé de ta réponse.
J'ai essayé mais cela ne fonctionne pas. Rien ne se passe.

J'ai procédé de la façon suivante :
1-J'ai enregistré une nouvelle macro que j'ai arrêté dès le début.



Euh... pour quoi faire ???

2-Je l'ai ouverte et ai copié ta macro et enregistré (j'ai modifié le
dossier C: en D:temp)



OK pour le dossier, car mon ancienne appli m'avalait les , tu as donc
bien fait de rétablir...

Circé
http://faqword.fr

3-J'ai ouvert le fichier à séparer en autant de fichiers word que de
destinataires et cliquer sur la macro.

Une idée ?

--
MCA


"Circé" a écrit :

Bonjour,

Ce n'est pas prévu, mais une macro peut le faire après coup. Regarde
ici :
http://faqword.fr/index.php/wfaq/51-wvba/552

Circé
http://faqword.fr


MCA a exposé le 26/01/2009 :
Bonjour,
J'aimerais fusionner mes lettres dans autant de fichiers qu'il y a de
destinataires (et non un fichier global). Est-ce possible ?

Merci de votre aide



















Avatar
Circé
Hello !

Il y a eu pas mal de copier-coller dans la faq, et je ne sais pas d'où
sort cette macro, et je n'arrive pas à en retrouver l'origine.

Le but du jeu n'était pas de faire un publipostage, mais de convertir
le résultat d'un publipostage (ou bien n'importe quel fichier constitué
de plusieurs sections) par autant de fichiers qu'il y a de sauts de
section.

Cela dit, c'est corrigé ! La macro est vérifiée et fonctionne
parfaitement.

http://faqword.fr/index.php/wfaq/51-wvba/552-comment-couper-un-gros-fichier-en-autant-de-petits-fichiers-quil-y-a-de-sauts-de-section-.html

Circé
http://faqword.fr


Après mûre réflexion, heureux-oli a écrit :
Salut Circé,

Le liens que tu donnes est un peu bizarre pour la demande.

On copie le contenu d'un signet qui n'est pas défini ?
Il manque les déclarations qui génèrent une erreur. Mais c'est le signet qui
est le plus gênant.


J'ai écris un code qui devrait convenir, il me semble comprendre que la
question touche le publipostage.

http://heureuxoli.developpez.com/office/word/publipostage/#L7-G

Le code :

Sub TestPublipost()
' Déclaration des variables
Dim iR As Integer
Dim i As Integer
Dim oDoc As Document
Dim DocName As String
Dim oDS As MailMergeDataSource

' Affectation des objets
Set oDoc = ActiveDocument
Set oDS = oDoc.MailMerge.DataSource

iR = MailMerge.DataSource.RecordCount
Debug.Print iR
For i = 1 To iR
With oDoc.MailMerge
'Définition du premier et dernier enregistrement
.DataSource.FirstRecord = i

.DataSource.LastRecord = i
' Envoi des données dans un nouveau document
.Destination = wdSendToNewDocument
' Exécution du publipostage
.Execute
' Actualisation de l'enregistrement pour la sauvegarde
.DataSource.ActiveRecord = i
'Utilisation de deux champs pour obtenir le nom du document
DocName = .DataSource.DataFields(2).Value
DocName = DocName & "-" & .DataSource.DataFields(3).Value
Debug.Print DocName; i
End With
' Sauvegarde du document publiposté
With ActiveDocument
.SaveAs "c:temp" & DocName & ".doc"
.Close
End With
Next i
End Sub


--
Heureux-oli
http://heureuxoli.developpez.com/
http://word.developpez.com/

----------------------------------------------------------------------------------

"Circé" a écrit dans le message de news:

Bonjour,

Cette macro est depuis très longtemps dans la faq. Je viens de la regarder
et en fait, elle a peut être fonctionné avec d'anciennes versions, mais là
j'ai un gros doute, car elle est basée sur des signets cachés Section, or a
priori ça n'existe pas... :-s

Geo ou Heureux-Oli pourront peut être confirmer...

Donc, je vais la remplacer par une autre qui a été écrite par anacoluthe et
que j'ai un peu modifié. Elle fonctionne parfaitement.

Cela dit, ça n'explique pas pourquoi chez toi ça ne fait "rien"... Car en
fait de ne rien faire, tu devrais tomber sur une erreur !

Et pour couronner le tout, la faq ne répond plus... Pfffuittt !

En attendant, je te la mets ici :

Sub SectionsDansDocumentsSéparés()
Application.ScreenUpdating = False

Dim SousDoc As Document
Dim R As Range
Dim S As Section
Dim DocNum

For Each S In ActiveDocument.Sections
Set R = S.Range: R.End = R.End - 1
Set SousDoc = Documents.Add
ChangeFileOpenDirectory "C:"
With SousDoc
DocNum = DocNum + 1
.Content = R
.SaveAs FileName:="test_" & DocNum & ".docx"
.Close
End With
Next S

Set SousDoc = Nothing
Set R = Nothing
Set S = Nothing
Application.ScreenUpdating = False

End Sub

Tu mets la macro dans ton doc, tu l'enregistres en format docm dans un
emplacement approuvé.

Circé
http://faqword.fr


Le 27/01/2009, MCA a supposé :
Circé
Dans word2007, je ne vois pas où on peut mettre le niveau (bas, moyen,
élevé..).

J'ai bien activé les macros dans :
BOUTON OFFICE/Options WORD/Centre de gestion de la
confidentialité/Paramètres du Centre de gestion de la
confidentialité/Paramètres des macros/Activer toutes les macros

et rajouté un emplacement réservé dans :
BOUTON OFFICE/Options WORD/Centre de gestion de la
confidentialité/Paramètres du Centre de gestion de la
confidentialité/Paramètres des macros/Emplacements approuvés

J'ai bien pris la 2ème macro avec les sauts de section.

Cela ne marche toujours pas.
-- MCA


"Circé" a écrit :

Bonjour MCA,

Tout d'abord, as tu mis le niveau de sécurité macro sur Moyen et non sur
Elevé, et as tu activé les macros ?

As-tu bien pris la seconde macro (la première fonctionne avec des sauts
de page, hors dans un doc issu du publipostage, il s'agit de sauts de
section

MCA a formulé ce mardi :
Merci Circé de ta réponse.
J'ai essayé mais cela ne fonctionne pas. Rien ne se passe.

J'ai procédé de la façon suivante :
1-J'ai enregistré une nouvelle macro que j'ai arrêté dès le début.



Euh... pour quoi faire ???

2-Je l'ai ouverte et ai copié ta macro et enregistré (j'ai modifié le
dossier C: en D:temp)



OK pour le dossier, car mon ancienne appli m'avalait les , tu as donc
bien fait de rétablir...

Circé
http://faqword.fr

3-J'ai ouvert le fichier à séparer en autant de fichiers word que de
destinataires et cliquer sur la macro.

Une idée ?

-- MCA


"Circé" a écrit :

Bonjour,

Ce n'est pas prévu, mais une macro peut le faire après coup. Regarde
ici :
http://faqword.fr/index.php/wfaq/51-wvba/552

Circé
http://faqword.fr


MCA a exposé le 26/01/2009 :
Bonjour,
J'aimerais fusionner mes lettres dans autant de fichiers qu'il y a de
destinataires (et non un fichier global). Est-ce possible ?

Merci de votre aide





















Avatar
heureux-oli
Salut Circé,

Voilà ce que je viens d'écrire pour enregistrer chaque page dans un document
séparé.
Sachant que les page ne sont pas des objets en VBA Word, il faut bidouiller
un peu
Ça ne fonctionne que pour du texte et des inlineshapes, pour des shapes, le
code devient tout de suite une usine à gaz et j'ai pas fait.

Sub SeparerPages()
Dim intPage As Integer 'pour la page en cours
Dim intDoc As Integer 'pour le document

intDoc = 0

Do
intDoc = intDoc + 1 'définit le no qui sera donné au document
'on se rend à la seconde page et on recule d'un caractère
Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=2
Selection.MoveLeft Unit:=wdCharacter, Count:=1
'On sélectionne de la fin de la page au début du document
Selection.HomeKey Unit:=wdStory, Extend:=wdExtend
'on coupe
Selection.Cut
'on ajoute un nouveau document
Application.Documents.Add
'on colle
Selection.Paste
'on sauve
ActiveDocument.SaveAs "c:tempdocument" & intDoc
'on ferme
ActiveDocument.Close
'tant qu'il reste plus d'une page on recommence
Loop While Selection.Information(wdNumberOfPagesInDocument) > 1
'C'est la dernière page
ActiveDocument.SaveAs "c:tempdocument" & intDoc + 1

End Sub


Je demande pardon pour les objets sélection utilisés ! :-)


--
Heureux-oli
http://heureuxoli.developpez.com/
http://word.developpez.com/

----------------------------------------------------------------------------------

"Circé" a écrit dans le message de news:

Bonjour,

Cette macro est depuis très longtemps dans la faq. Je viens de la regarder
et en fait, elle a peut être fonctionné avec d'anciennes versions, mais là
j'ai un gros doute, car elle est basée sur des signets cachés Section, or
a priori ça n'existe pas... :-s

Geo ou Heureux-Oli pourront peut être confirmer...

Donc, je vais la remplacer par une autre qui a été écrite par anacoluthe
et que j'ai un peu modifié. Elle fonctionne parfaitement.

Cela dit, ça n'explique pas pourquoi chez toi ça ne fait "rien"... Car en
fait de ne rien faire, tu devrais tomber sur une erreur !

Et pour couronner le tout, la faq ne répond plus... Pfffuittt !

En attendant, je te la mets ici :

Sub SectionsDansDocumentsSéparés()
Application.ScreenUpdating = False

Dim SousDoc As Document
Dim R As Range
Dim S As Section
Dim DocNum

For Each S In ActiveDocument.Sections
Set R = S.Range: R.End = R.End - 1
Set SousDoc = Documents.Add
ChangeFileOpenDirectory "C:"
With SousDoc
DocNum = DocNum + 1
.Content = R
.SaveAs FileName:="test_" & DocNum & ".docx"
.Close
End With
Next S

Set SousDoc = Nothing
Set R = Nothing
Set S = Nothing
Application.ScreenUpdating = False

End Sub

Tu mets la macro dans ton doc, tu l'enregistres en format docm dans un
emplacement approuvé.

Circé
http://faqword.fr


Le 27/01/2009, MCA a supposé :
Circé
Dans word2007, je ne vois pas où on peut mettre le niveau (bas, moyen,
élevé..).

J'ai bien activé les macros dans :
BOUTON OFFICE/Options WORD/Centre de gestion de la
confidentialité/Paramètres du Centre de gestion de la
confidentialité/Paramètres des macros/Activer toutes les macros

et rajouté un emplacement réservé dans :
BOUTON OFFICE/Options WORD/Centre de gestion de la
confidentialité/Paramètres du Centre de gestion de la
confidentialité/Paramètres des macros/Emplacements approuvés

J'ai bien pris la 2ème macro avec les sauts de section.

Cela ne marche toujours pas.
--
MCA


"Circé" a écrit :

Bonjour MCA,

Tout d'abord, as tu mis le niveau de sécurité macro sur Moyen et non sur
Elevé, et as tu activé les macros ?

As-tu bien pris la seconde macro (la première fonctionne avec des sauts
de page, hors dans un doc issu du publipostage, il s'agit de sauts de
section

MCA a formulé ce mardi :
Merci Circé de ta réponse.
J'ai essayé mais cela ne fonctionne pas. Rien ne se passe.

J'ai procédé de la façon suivante :
1-J'ai enregistré une nouvelle macro que j'ai arrêté dès le début.



Euh... pour quoi faire ???

2-Je l'ai ouverte et ai copié ta macro et enregistré (j'ai modifié le
dossier C: en D:temp)



OK pour le dossier, car mon ancienne appli m'avalait les , tu as donc
bien fait de rétablir...

Circé
http://faqword.fr

3-J'ai ouvert le fichier à séparer en autant de fichiers word que de
destinataires et cliquer sur la macro.

Une idée ?

--
MCA


"Circé" a écrit :

Bonjour,

Ce n'est pas prévu, mais une macro peut le faire après coup. Regarde
ici :
http://faqword.fr/index.php/wfaq/51-wvba/552

Circé
http://faqword.fr


MCA a exposé le 26/01/2009 :
Bonjour,
J'aimerais fusionner mes lettres dans autant de fichiers qu'il y a de
destinataires (et non un fichier global). Est-ce possible ?

Merci de votre aide



















Avatar
heureux-oli
Salut,

Je viens d'en mettre un pour les pages.

--
Heureux-oli
Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
http://heureuxoli.developpez.com/
http://word.developpez.com/

----------------------------------------------------------------------------------

"Circé" a écrit dans le message de news:
%
Hello !

Il y a eu pas mal de copier-coller dans la faq, et je ne sais pas d'où
sort cette macro, et je n'arrive pas à en retrouver l'origine.

Le but du jeu n'était pas de faire un publipostage, mais de convertir le
résultat d'un publipostage (ou bien n'importe quel fichier constitué de
plusieurs sections) par autant de fichiers qu'il y a de sauts de section.

Cela dit, c'est corrigé ! La macro est vérifiée et fonctionne
parfaitement.

http://faqword.fr/index.php/wfaq/51-wvba/552-comment-couper-un-gros-fichier-en-autant-de-petits-fichiers-quil-y-a-de-sauts-de-section-.html

Circé
http://faqword.fr


Après mûre réflexion, heureux-oli a écrit :
Salut Circé,

Le liens que tu donnes est un peu bizarre pour la demande.

On copie le contenu d'un signet qui n'est pas défini ?
Il manque les déclarations qui génèrent une erreur. Mais c'est le signet
qui est le plus gênant.


J'ai écris un code qui devrait convenir, il me semble comprendre que la
question touche le publipostage.

http://heureuxoli.developpez.com/office/word/publipostage/#L7-G

Le code :

Sub TestPublipost()
' Déclaration des variables
Dim iR As Integer
Dim i As Integer
Dim oDoc As Document
Dim DocName As String
Dim oDS As MailMergeDataSource

' Affectation des objets
Set oDoc = ActiveDocument
Set oDS = oDoc.MailMerge.DataSource

iR = MailMerge.DataSource.RecordCount
Debug.Print iR
For i = 1 To iR
With oDoc.MailMerge
'Définition du premier et dernier enregistrement
.DataSource.FirstRecord = i

.DataSource.LastRecord = i
' Envoi des données dans un nouveau document
.Destination = wdSendToNewDocument
' Exécution du publipostage
.Execute
' Actualisation de l'enregistrement pour la sauvegarde
.DataSource.ActiveRecord = i
'Utilisation de deux champs pour obtenir le nom du document
DocName = .DataSource.DataFields(2).Value
DocName = DocName & "-" & .DataSource.DataFields(3).Value
Debug.Print DocName; i
End With
' Sauvegarde du document publiposté
With ActiveDocument
.SaveAs "c:temp" & DocName & ".doc"
.Close
End With
Next i
End Sub


--
Heureux-oli
http://heureuxoli.developpez.com/
http://word.developpez.com/

----------------------------------------------------------------------------------

"Circé" a écrit dans le message de news:

Bonjour,

Cette macro est depuis très longtemps dans la faq. Je viens de la
regarder et en fait, elle a peut être fonctionné avec d'anciennes
versions, mais là j'ai un gros doute, car elle est basée sur des signets
cachés Section, or a priori ça n'existe pas... :-s

Geo ou Heureux-Oli pourront peut être confirmer...

Donc, je vais la remplacer par une autre qui a été écrite par anacoluthe
et que j'ai un peu modifié. Elle fonctionne parfaitement.

Cela dit, ça n'explique pas pourquoi chez toi ça ne fait "rien"... Car
en fait de ne rien faire, tu devrais tomber sur une erreur !

Et pour couronner le tout, la faq ne répond plus... Pfffuittt !

En attendant, je te la mets ici :

Sub SectionsDansDocumentsSéparés()
Application.ScreenUpdating = False

Dim SousDoc As Document
Dim R As Range
Dim S As Section
Dim DocNum

For Each S In ActiveDocument.Sections
Set R = S.Range: R.End = R.End - 1
Set SousDoc = Documents.Add
ChangeFileOpenDirectory "C:"
With SousDoc
DocNum = DocNum + 1
.Content = R
.SaveAs FileName:="test_" & DocNum & ".docx"
.Close
End With
Next S

Set SousDoc = Nothing
Set R = Nothing
Set S = Nothing
Application.ScreenUpdating = False

End Sub

Tu mets la macro dans ton doc, tu l'enregistres en format docm dans un
emplacement approuvé.

Circé
http://faqword.fr


Le 27/01/2009, MCA a supposé :
Circé
Dans word2007, je ne vois pas où on peut mettre le niveau (bas, moyen,
élevé..).

J'ai bien activé les macros dans :
BOUTON OFFICE/Options WORD/Centre de gestion de la
confidentialité/Paramètres du Centre de gestion de la
confidentialité/Paramètres des macros/Activer toutes les macros

et rajouté un emplacement réservé dans :
BOUTON OFFICE/Options WORD/Centre de gestion de la
confidentialité/Paramètres du Centre de gestion de la
confidentialité/Paramètres des macros/Emplacements approuvés

J'ai bien pris la 2ème macro avec les sauts de section.

Cela ne marche toujours pas.
-- MCA


"Circé" a écrit :

Bonjour MCA,

Tout d'abord, as tu mis le niveau de sécurité macro sur Moyen et non
sur Elevé, et as tu activé les macros ?

As-tu bien pris la seconde macro (la première fonctionne avec des
sauts de page, hors dans un doc issu du publipostage, il s'agit de
sauts de section

MCA a formulé ce mardi :
Merci Circé de ta réponse.
J'ai essayé mais cela ne fonctionne pas. Rien ne se passe.

J'ai procédé de la façon suivante :
1-J'ai enregistré une nouvelle macro que j'ai arrêté dès le début.



Euh... pour quoi faire ???

2-Je l'ai ouverte et ai copié ta macro et enregistré (j'ai modifié le
dossier C: en D:temp)



OK pour le dossier, car mon ancienne appli m'avalait les , tu as donc
bien fait de rétablir...

Circé
http://faqword.fr

3-J'ai ouvert le fichier à séparer en autant de fichiers word que de
destinataires et cliquer sur la macro.

Une idée ?

-- MCA


"Circé" a écrit :

Bonjour,

Ce n'est pas prévu, mais une macro peut le faire après coup. Regarde
ici :
http://faqword.fr/index.php/wfaq/51-wvba/552

Circé
http://faqword.fr


MCA a exposé le 26/01/2009 :
Bonjour,
J'aimerais fusionner mes lettres dans autant de fichiers qu'il y a
de destinataires (et non un fichier global). Est-ce possible ?

Merci de votre aide

























Avatar
MCA
Bonjour Circé et heureux-oli,
Merci à vous deux de vous être penché sur mon problème.
En fait, j'ai trouvé la réponse sur le site du support de MICROSOFT, voici
le lien ci-après :

http://support.microsoft.com/default.aspx/kb/306348/fr

J'ai essayé et cela a fonctionné.

Encore merci à vous et je garde quand même vos codes "sous le coude".


--
MCA


"heureux-oli" a écrit :

Salut Circé,

Voilà ce que je viens d'écrire pour enregistrer chaque page dans un document
séparé.
Sachant que les page ne sont pas des objets en VBA Word, il faut bidouiller
un peu
Ça ne fonctionne que pour du texte et des inlineshapes, pour des shapes, le
code devient tout de suite une usine à gaz et j'ai pas fait.

Sub SeparerPages()
Dim intPage As Integer 'pour la page en cours
Dim intDoc As Integer 'pour le document

intDoc = 0

Do
intDoc = intDoc + 1 'définit le no qui sera donné au document
'on se rend à la seconde page et on recule d'un caractère
Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=2
Selection.MoveLeft Unit:=wdCharacter, Count:=1
'On sélectionne de la fin de la page au début du document
Selection.HomeKey Unit:=wdStory, Extend:=wdExtend
'on coupe
Selection.Cut
'on ajoute un nouveau document
Application.Documents.Add
'on colle
Selection.Paste
'on sauve
ActiveDocument.SaveAs "c:tempdocument" & intDoc
'on ferme
ActiveDocument.Close
'tant qu'il reste plus d'une page on recommence
Loop While Selection.Information(wdNumberOfPagesInDocument) > 1
'C'est la dernière page
ActiveDocument.SaveAs "c:tempdocument" & intDoc + 1

End Sub


Je demande pardon pour les objets sélection utilisés ! :-)


--
Heureux-oli
http://heureuxoli.developpez.com/
http://word.developpez.com/

----------------------------------------------------------------------------------

"Circé" a écrit dans le message de news:

> Bonjour,
>
> Cette macro est depuis très longtemps dans la faq. Je viens de la regarder
> et en fait, elle a peut être fonctionné avec d'anciennes versions, mais là
> j'ai un gros doute, car elle est basée sur des signets cachés Section, or
> a priori ça n'existe pas... :-s
>
> Geo ou Heureux-Oli pourront peut être confirmer...
>
> Donc, je vais la remplacer par une autre qui a été écrite par anacoluthe
> et que j'ai un peu modifié. Elle fonctionne parfaitement.
>
> Cela dit, ça n'explique pas pourquoi chez toi ça ne fait "rien"... Car en
> fait de ne rien faire, tu devrais tomber sur une erreur !
>
> Et pour couronner le tout, la faq ne répond plus... Pfffuittt !
>
> En attendant, je te la mets ici :
>
> Sub SectionsDansDocumentsSéparés()
> Application.ScreenUpdating = False
>
> Dim SousDoc As Document
> Dim R As Range
> Dim S As Section
> Dim DocNum
>
> For Each S In ActiveDocument.Sections
> Set R = S.Range: R.End = R.End - 1
> Set SousDoc = Documents.Add
> ChangeFileOpenDirectory "C:"
> With SousDoc
> DocNum = DocNum + 1
> .Content = R
> .SaveAs FileName:="test_" & DocNum & ".docx"
> .Close
> End With
> Next S
>
> Set SousDoc = Nothing
> Set R = Nothing
> Set S = Nothing
> Application.ScreenUpdating = False
>
> End Sub
>
> Tu mets la macro dans ton doc, tu l'enregistres en format docm dans un
> emplacement approuvé.
>
> Circé
> http://faqword.fr
>
>
> Le 27/01/2009, MCA a supposé :
>> Circé
>> Dans word2007, je ne vois pas où on peut mettre le niveau (bas, moyen,
>> élevé..).
>>
>> J'ai bien activé les macros dans :
>> BOUTON OFFICE/Options WORD/Centre de gestion de la
>> confidentialité/Paramètres du Centre de gestion de la
>> confidentialité/Paramètres des macros/Activer toutes les macros
>>
>> et rajouté un emplacement réservé dans :
>> BOUTON OFFICE/Options WORD/Centre de gestion de la
>> confidentialité/Paramètres du Centre de gestion de la
>> confidentialité/Paramètres des macros/Emplacements approuvés
>>
>> J'ai bien pris la 2ème macro avec les sauts de section.
>>
>> Cela ne marche toujours pas.
>> --
>> MCA
>>
>>
>> "Circé" a écrit :
>>
>>> Bonjour MCA,
>>>
>>> Tout d'abord, as tu mis le niveau de sécurité macro sur Moyen et non sur
>>> Elevé, et as tu activé les macros ?
>>>
>>> As-tu bien pris la seconde macro (la première fonctionne avec des sauts
>>> de page, hors dans un doc issu du publipostage, il s'agit de sauts de
>>> section
>>>
>>> MCA a formulé ce mardi :
>>>> Merci Circé de ta réponse.
>>>> J'ai essayé mais cela ne fonctionne pas. Rien ne se passe.
>>>>
>>>> J'ai procédé de la façon suivante :
>>>> 1-J'ai enregistré une nouvelle macro que j'ai arrêté dès le début.
>>>
>>> Euh... pour quoi faire ???
>>>
>>>> 2-Je l'ai ouverte et ai copié ta macro et enregistré (j'ai modifié le
>>>> dossier C: en D:temp)
>>>
>>> OK pour le dossier, car mon ancienne appli m'avalait les , tu as donc
>>> bien fait de rétablir...
>>>
>>> Circé
>>> http://faqword.fr
>>>
>>>> 3-J'ai ouvert le fichier à séparer en autant de fichiers word que de
>>>> destinataires et cliquer sur la macro.
>>>>
>>>> Une idée ?
>>>>
>>>> --
>>>> MCA
>>>>
>>>>
>>>> "Circé" a écrit :
>>>>
>>>>> Bonjour,
>>>>>
>>>>> Ce n'est pas prévu, mais une macro peut le faire après coup. Regarde
>>>>> ici :
>>>>> http://faqword.fr/index.php/wfaq/51-wvba/552
>>>>>
>>>>> Circé
>>>>> http://faqword.fr
>>>>>
>>>>>
>>>>> MCA a exposé le 26/01/2009 :
>>>>>> Bonjour,
>>>>>> J'aimerais fusionner mes lettres dans autant de fichiers qu'il y a de
>>>>>> destinataires (et non un fichier global). Est-ce possible ?
>>>>>>
>>>>>> Merci de votre aide
>>>>>
>>>>>
>>>>>
>>>
>>>
>
>





1 2