Urgent - publipostage en VBA

Mithrandiiir Messages postés 8 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 7 août 2006 - 28 août 2005 à 21:27
Mithrandiiir Messages postés 8 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 7 août 2006 - 29 août 2005 à 08:52
Bonjour!



J'aimerais pouvoir faire un publipostage (étiquettes) sous Word grâce à une macro qui va chercher des données dans Excel




J'ai naturellement enregistré une macro faisant ces opérations, mais quand je lance cette macro, il y a une erreur!!!!



Voici le code pondu par Office, plus quelques ajouts:



Sub CreeEtiquettes()

'

' CreeEtiquettes Macro

'

Application.MailingLabel.DefaultLabelName = "Zweckform 3479" ' ajout



ActiveDocument.MailMerge.MainDocumentType = wdMailingLabels 'format étiquettes



'cherche la source de données

ActiveDocument.MailMerge.OpenDataSource Name:= _

"D:\xxxxxxxxxxxxxxxxxx.xls", ConfirmConversions:= _

False, ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _

PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _

WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _

Connection:= _


"Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User
ID=Admin;Data Source=D:\xxxxxxxxxxxxxxxxxxxx.xls;Mode=Read;Extended
Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet
OLEDB:Registry Path="""";Jet OLEDB:Database Password=""""" _

, SQLStatement:="SELECT * FROM `Feuil1$`", SQLStatement1:="", SubType:= _

wdMergeSubTypeAccess





'champs de fusion



ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldMergeField _

, Text:="""Anrede"""

' etc...............



' quelques lignes d'édition sans importance
.
.

' --------------------------------------

WordBasic.MailMergePropagateLabel
'commande créé par Word et que Word n'arrive pas à exécuter!!!



'J'ai mis ceci à la place :



Set myMerge = ActiveDocument.MailMerge

myMerge.Execute



End Sub




Résultat : la macro ouvre un nouveau document et écrit les données
correctement, mais pas dans le format d'étiquettes que je veux : elle fait une étiquette par page (au lieu de
27)............... :-(((



Ma question : connaissez-vous une commande qui peut exécuter
correctement la propagation des étiquettes ou un autre moyen de faire
ce fichu publipostage?



Je suis au bord du suicide et j'ai besoin de votre aide, merci d'avance!

2 réponses

jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
29 août 2005 à 01:35
Bonsoir,
Modifie avec tes paramèttres et essaie ceci.

Sub Fusionner()
ActiveDocument.MailMerge.MainDocumentType = wdMailingLabels
ActiveDocument.MailMerge.MainDocumentType = wdMailingLabels
ActiveDocument.MailMerge.OpenDataSource Name:= _
"C:\Mes documents\Chêne à clous.xls", ConfirmConversions:=False, ReadOnly _
:=False, LinkToSource:=True, AddToRecentFiles:=False, PasswordDocument:= _
"", PasswordTemplate:="", WritePasswordDocument:="", _
WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
Connection:="Feuille de calcul entière", SQLStatement:="", SQLStatement1 _
:=""
Application.MailingLabel.DefaultPrintBarCode = False
Application.MailingLabel.CreateNewDocument Name:="", Address:="", AutoText _
:="OutilsCréerEtiquettes2"
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.MailAsAttachment = False
.MailAddressFieldName = ""
.MailSubject = ""
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With
ActiveWindow.ActivePane.SmallScroll Down:=296
ActiveWindow.ActivePane.VerticalPercentScrolled = 49
ActiveWindow.ActivePane.SmallScroll Down:=123
ActiveWindow.ActivePane.VerticalPercentScrolled = 3
Selection.MoveRight Unit:=wdCharacter, Count:=2
Selection.TypeBackspace
Selection.TypeBackspace
End Sub

jpleroisse
0
Mithrandiiir Messages postés 8 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 7 août 2006
29 août 2005 à 08:52
Merci pour la réponse!

En revanche, ça ne marche pas encore... Un nouveau document est créé et son format est correct, mais les étiquettes sont désespérément vides. Les données à insérer sont une simple feuille Excel avec sur la première ligne, les en-têtes (Titre, Nom, Prénom, Adresse etc...) et sur les suivantes, les noms des destinataires. 2 questions :

1) A quoi correspond Autotext dans Application.MailingLabel.CreateNewDocument? Dois-je changer la chaîne que tu as mise?

2) Comment faire pour insérer les données du tableur? Ca a quelque chose à voir avec DataSource.FirstRecord et LastRecord? J'ai essayé en rajoutant ceci avant le With ActiveDocument.MailMerge :

ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldMergeField _
, Text:="""Anrede"""
Selection.TypeParagraph

ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldMergeField _
, Text:="""Name"""
Selection.TypeText Text:=" "

ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldMergeField _
, Text:="""Vorname"""
Selection.TypeParagraph

ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldMergeField _
, Text:="""Strasse_Nr"""
Selection.TypeParagraph

ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldMergeField _
, Text:="""PLZ"""
Selection.TypeText Text:=" "

De cette façon, la 1ère étiquette est correcte, mais toutes les autres sont vides...

Merci beaucoup, j'ai déjà pu avancer, et j'espère voir une réponse à mes questions!

Mithrandir
0
Rejoignez-nous