MACRO sélectionner un enregistrement d'un document fusionné
Résolu
TaoQian
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Pour l'élaboration d'un gros dossier, j'ai dû créer 9 documents Word fusionnés avec Excel (soit plus de 2000 champs de fusion).
Dans une macro (créée avec l'enregistreur) j'arrive à fusionner les 9 docs en un seul, puis enregistrer le fichier final.
Mais, je n'ai pas la main pour sélectionner UN enregistrement en particulier : je suis obligée d'en saisir le numéro dans la macro avant chaque exécution : par exemple
With .DataSource
.FirstRecord = 3
.LastRecord = 3
Pouvez-vous m'expliquer comment modifier la macro pour avoir le choix lors de son exécution , soit par le numéro d'enregistrement, soit par le contenu d'un champs (chacun des 9 documents comporte au moins un champs de fusion commun qu'on appellera "contrat", et j'ai 25 contrats à traiter d'où l'intérêt d'une automatisation).
Merci d'avance si vous avez une solution à me proposer. Attention, si je sais faire des macros simples via l'enregistreur je suis ignare en langage VBA, il me faut donc une solution facile et limpide.
Bien cordialement
Pour l'élaboration d'un gros dossier, j'ai dû créer 9 documents Word fusionnés avec Excel (soit plus de 2000 champs de fusion).
Dans une macro (créée avec l'enregistreur) j'arrive à fusionner les 9 docs en un seul, puis enregistrer le fichier final.
Mais, je n'ai pas la main pour sélectionner UN enregistrement en particulier : je suis obligée d'en saisir le numéro dans la macro avant chaque exécution : par exemple
With .DataSource
.FirstRecord = 3
.LastRecord = 3
Pouvez-vous m'expliquer comment modifier la macro pour avoir le choix lors de son exécution , soit par le numéro d'enregistrement, soit par le contenu d'un champs (chacun des 9 documents comporte au moins un champs de fusion commun qu'on appellera "contrat", et j'ai 25 contrats à traiter d'où l'intérêt d'une automatisation).
Merci d'avance si vous avez une solution à me proposer. Attention, si je sais faire des macros simples via l'enregistreur je suis ignare en langage VBA, il me faut donc une solution facile et limpide.
Bien cordialement
A voir également:
- MACRO sélectionner un enregistrement d'un document fusionné
- Comment reduire la taille d'un document - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Signer un document word - Guide
- Comment ouvrir un document docx - Guide
- Comment récupérer un document dans le presse-papier samsung - Guide
2 réponses
Bonjour,
en utilisant une variable ça ne marche pas ?
dim numEnr as long
numEnr = Application.InputBox("Numero d'enregistrement", "Saisie numéro", Type:=1)
....
With .DataSource
.FirstRecord = numEnr
.LastRecord = numEnr
....
Ou bien faire une boucle
For numEnr = 1 to 9
...
Next numEnr
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
en utilisant une variable ça ne marche pas ?
dim numEnr as long
numEnr = Application.InputBox("Numero d'enregistrement", "Saisie numéro", Type:=1)
....
With .DataSource
.FirstRecord = numEnr
.LastRecord = numEnr
....
Ou bien faire une boucle
For numEnr = 1 to 9
...
Next numEnr
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Merci Eric,
J'ai sans doute mal entré les lignes : ça ne marche pas.
J'ai un message "erreur de compilation : membre de méthode ou de données introuvable" et le terme InputBox est surligné.
TQ
J'ai sans doute mal entré les lignes : ça ne marche pas.
J'ai un message "erreur de compilation : membre de méthode ou de données introuvable" et le terme InputBox est surligné.
TQ
non 25, si on parle bien de la même chose
pour info voilà un extrait de la macro originale :
Documents.Open FileName:="""C:\Mon fichier-1ère partie.doc""", _
ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
wdOpenFormatAuto, XMLTransform:=""
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = 1
.LastRecord = 1
End With
.Execute Pause:=False
End With
ActiveDocument.SaveAs FileName:="MF 1ère partie.doc", FileFormat:= _
wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
Documents.Open FileName:="""Mon fichier-2ème partie.doc""", _
ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
wdOpenFormatAuto, XMLTransform:=""
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = 1
.LastRecord = 1
End With
.Execute Pause:=False
End With
ActiveDocument.SaveAs FileName:="MF 2ème partie.doc", FileFormat:= _
wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
ETC.. jusqu'à Mon fichier-9ème partie.doc
End Sub
pour info voilà un extrait de la macro originale :
Documents.Open FileName:="""C:\Mon fichier-1ère partie.doc""", _
ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
wdOpenFormatAuto, XMLTransform:=""
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = 1
.LastRecord = 1
End With
.Execute Pause:=False
End With
ActiveDocument.SaveAs FileName:="MF 1ère partie.doc", FileFormat:= _
wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
Documents.Open FileName:="""Mon fichier-2ème partie.doc""", _
ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
wdOpenFormatAuto, XMLTransform:=""
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = 1
.LastRecord = 1
End With
.Execute Pause:=False
End With
ActiveDocument.SaveAs FileName:="MF 2ème partie.doc", FileFormat:= _
wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
ETC.. jusqu'à Mon fichier-9ème partie.doc
End Sub
et bien tu mets
et tu remplaces partout :
Au début le programme te demandera le n° voulu et il sera remplacé par ta saisie dans .FirstRecord et .LastRecord
Essaie sur une copie car je ne connais pas les macros word.
eric
dim numEnr as long numEnr = Application.InputBox("Numero d'enregistrement", "Saisie numéro", Type:=1)tout au début,
et tu remplaces partout :
.FirstRecord = 1 .LastRecord = 1par :
.FirstRecord = numEnr .LastRecord = numEnr
Au début le programme te demandera le n° voulu et il sera remplacé par ta saisie dans .FirstRecord et .LastRecord
Essaie sur une copie car je ne connais pas les macros word.
eric
Merci de ta patience ...
Voilà donc ce que j'ai fait, mais j'ai le même message avec "InputBox" surligné.
Qu'en penses-tu ?
Documents.Open FileName:="""Manuel-systeme-1ère partie.doc""", _
ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
wdOpenFormatAuto, XMLTransform:=""
Dim numEnr As Long
numEnr = Application.InputBox("Numero d'enregistrement", "Saisie numéro", Type:=1)
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = numEnr
.LastRecord = numEnr
End With
ActiveDocument.SaveAs FileName:="MAS 1ère partie.doc", FileFormat:= _
wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
ActiveWindow.Close
Voilà donc ce que j'ai fait, mais j'ai le même message avec "InputBox" surligné.
Qu'en penses-tu ?
Documents.Open FileName:="""Manuel-systeme-1ère partie.doc""", _
ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", Revert:=False, _
WritePasswordDocument:="", WritePasswordTemplate:="", Format:= _
wdOpenFormatAuto, XMLTransform:=""
Dim numEnr As Long
numEnr = Application.InputBox("Numero d'enregistrement", "Saisie numéro", Type:=1)
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = numEnr
.LastRecord = numEnr
End With
ActiveDocument.SaveAs FileName:="MAS 1ère partie.doc", FileFormat:= _
wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
ActiveWindow.Close
Bonjour,
TOUTE SEULEUH... comme dirait mon petit-fils (mon pseudo aurait pu être mamy ou mémé).
Il fallait définir autant de variables que de fichiers mais en donnant aux variables de 2 à 9 la valeur de la première !!!
C'était juste une question de logique.
En tout cas si j'y ai passé du temps, ça va me faire gagner un bon nombre d'heures de travail pour les années qui viennent.
Un grand merci à Eric
bonne continuation
eric