Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word
Word Forum d'entraide sur le traitement de texte Microsoft 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 04/01/2011, 12h53   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 29
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 29
Points : 3
Points : 3
Par défaut Publipostage image - Ctrl A + F9

Bonjour,

J'ai réalisé un publipostage avec Word, d'après une BDD sous excel, comprenant des images.

La BDD excel ressemble à:

ligne 1 = nom prénom photo
ligne 2 = Martin Pierre C:\\photo\\2010\\pierre.jpg
ligne 3 = Dupond Marie C:\\photo\\2010\\marie.jpg
....
jusqu'à la ligne 200.....


Mon problème: l'image contenue dans la ligne 2 (celle de Pierre), apparait sur mes 200 fiches. Je précise que pour lancer le publipostage, je passe par une macro trouvée sur un tuto du forum, car je souhaite enregistrer autant de fichiers word que j'ai de fiches. Cette macro a comme raccourci Ctrl+P.

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
36
37
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
                Debug.Print DocName; i
    End With
    ' Sauvegarde du document publiposté
    With ActiveDocument
        .SaveAs "C:\Documents and Settings\mesdoc\Bureau\2010\Résultat_Publipostage\" & DocName & ".doc"
        .Close
    End With
Next i
End Sub

Voici donc la procédure que je suis:

- j'ouvre mon doc Word de base
- je vérifie la synthaxe des champs
- je MAJ en faisant Ctrl+A puis F9 (un message en bas a gauche de la fenetrte Word me dit que tous les champs n'ont pa pu etre mis a jour)
- l'assistant du publipostage me propose de cliquer sur étape 56 fin de fusion, ce que je fais
- et enfin je lance la macro Ctrl + P

et là..qd je vais voir les fichiers Word enregistrés, ils contiennent tous la meme image de Pierre...


Bizzare car, quand je passe par une autre méthode qui consiste à lancer l'impression étape 6/6 de l'assistant Pubplipostage (au lieu de lancer la macro), j'obtiens un unique fichier Wrd avec toutes mes images nikel... sauf que... moi je voudrais plein de petits fichiers word.
Images attachées
Type de fichier : jpg synthaxe.jpg (12,7 Ko, 1 affichages)
ruliann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 13h40   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 317
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 317
Points : 29 214
Points : 29 214
Salut,

Les deux ne sont pas mixables.
Soit le code VBA, soit l'assistant publipostage.

Si c'est le VBA qui est utilisé, il faut mettre l'image à jour pour chaque fichier.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 14h21   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 29
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 29
Points : 3
Points : 3
Salut,

ah d'accord...les deux ne sont pas mixables?

donc soit je passe par le VBA, et j'ouvre un à un les fichiers word, puis je les mets à jour en faisant Ctrl A puis F9,

soit je passe par l'assistant publipostage et j'imprime toutes mes fiches ds un seul et même doc word, par contre après à moi d'enregistrer une page par fichier.

à moi de choisir la manip qui me rebute le moins quoi
ruliann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 18h20   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 317
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 317
Points : 29 214
Points : 29 214
Salut,

Tu peux toujours intégrer une mise à jour des champs avant de fermer le document.

Code :
1
2
3
4
5
6
 
    With ActiveDocument
        .Fields.Update
        .SaveAs "C:\Documents and Settings\mesdoc\Bureau\2010\Résultat_Publipostage\" & DocName & ".doc"
        .Close
    End With
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 20h15   #5
Invité de passage
 
Inscription : décembre 2010
Messages : 29
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 29
Points : 3
Points : 3
salut,

Ca revient a faire Ctrl+A et F9 non?
ruliann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 20h31   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 317
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 317
Points : 29 214
Points : 29 214
Salut,

Oui, mais pour chaque document créé.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2011, 15h18   #7
Invité de passage
 
Inscription : décembre 2010
Messages : 29
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 29
Points : 3
Points : 3
salut

ok

bon j'aurais découvert certains rouage du pubipostage avec vous... mais je trouve ça un peu usine à gaz qd même dans mon cas...

connaitriez vous un logiciel qui permette le traitement et a mise en page de base de données? genre Bento par exemple, je pense que j'aurais pu l'utiliser à la place de mon publipostage, vous connaissez?
ruliann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 23h01   #8
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 592
Points : 1 592
Envoyer un message via MSN à carden752
Bonjour,

Tu peux très bien prévoir une macro VBA qui se lance à la fin de ta fusion classique et qui réalise cette extraction.
Je vois un truc du genre copier toutes les sections dans un nouveau document Word que tu enregistres avec le nom que tu veux, même celui d'un champ, il te suffit de le placer à un endroit précis et fixe dans ta lettre type que tu puisses facilement le sélectionner.


Pour intercepter la fin de fusion regarde du coté de l'évènement mailmergeaftermerge

Pour réaliser la copie d'une section, tu peux utiliser ce code
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
Sub copiesection()
Dim nom As String
Dim m As Document
Dim s As Section
Set m = ActiveDocument
For Each s In ActiveDocument.Sections
 nom = Selection.Words(1)
s.Range.Copy
Dim doc As Document
Set doc = Documents.Add
Selection.Paste
doc.Activate
Selection.GoToNext wdGoToSection
Selection.MoveUp unit:=wdLine, Extend:=wdExtend
Selection.Delete
 
m.Activate
Next s
End Sub

En espérant t'aiguiller un petit peu
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 09h28   #9
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 317
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 317
Points : 29 214
Points : 29 214
Salut,

Ce code va bien, mais il est incomplet.
Pour chaque enregistrement, un document est créé et gardé ouvert.
Si on souhaite faire une sauvegarde, le nom doit être donné manuellement ou on utilise le nom générique donné par Word ce qui pose problème pour retrouver les documents.
Alors que dans le tuto, on récupère une ou plusieurs valeurs dans les enregistrements pour donner un nom cohérent au fichier crée.
Chaque fichier est fermé pour ne pas trop perdre de ressources sur la machine.
Je vois pas d'un bon oeil 100 fichiers ouverts en même temps si on n'a que 100 enregistrements.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 12h26   #10
Invité de passage
 
Inscription : décembre 2010
Messages : 29
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 29
Points : 3
Points : 3
salut,

merci à ts les 2.

Je pense pouvoir indiquer "résolu" sur le post. Je touche du bois mais pour le moment je m'en sors avec le code du tuto.

N'empeche que je ne comprend pas pqoi des fois, les macros ne fonctionnent plus... et nécessitent que je copie/colle mon fichier excel et mon doc word de base, dans un autre répertoire afin de réanimer les macros.. Ca m'en a fait des trucs bizzares!
ruliann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 18h59   #11
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 984
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 984
Points : 1 592
Points : 1 592
Envoyer un message via MSN à carden752
Bonjour,

Bien vu Heureux Oli, effectivement, mais ne sachant pas la forme du nom de la sauvegarde, j'avais exprès pas mentionné cela, cependant je voulais rajouter une ligne de commentaires disant de ne pas oublier d'effectuer la sauvegarde.

__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h43.


 
 
 
 
Partenaires

Hébergement Web