Publipostage + quickpart + macro pdf
eternal1001
-
m@rina Messages postés 26238 Statut Contributeur -
m@rina Messages postés 26238 Statut Contributeur -
Bonjour à tous,
J'ai besoin de vos lumières! Je n'ai pas beaucoup de connaissance mais voilà mon problème :
J'ai une base de données excel qui contient tous les services que font les enseignants (1 enseignant peut avoir une seule ligne ou plusieurs).
Je dois leur éditer des attestations personnalisées dans lesquelles devront figurer leur service.
J'ai donc préparer un document excel avec uniquement nom et prénom sans doublons.
J'ai ensuite :
- préparer mon document word dans lequel j'ai fais un publipostage
- insérer quickpart/champs en sélectionnant ma base de donnée et effectué une requête pour que le service de l'enseignant concerné s'affiche.
Jusque là tout va bien sauf que :
1er problème : le service ne se met pas automatiquement à jour lorsque je fais défiler l'aperçu des résultats.
Je suis obligé de faire ctrl+A et F9 pour mettre à jour les champs
Sauriez-vous s'il existe un moyen que les champs se mettent automatiquement à jour?
2ème problème : je souhaite que chaque attestation soit enregistré automatiquement en un fichier PDF
J'ai donc insérer le code suivant :
Sub SavePubliAsPDF()
Dim LastRec As Integer
Dim Path As String, Id As String
Application.ScreenUpdating = False
'Choix du dossier d'enregistrement des fichiers
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Sélectionnez un dossier où enregistrer vos fichiers"
.Show
If Not (.SelectedItems.Count = 0) Then
Path = .SelectedItems(1)
Else
Exit Sub
End If
End With
'Décompte du nombre d'enregistrements dans le publipostage
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdLastRecord
LastRec = ActiveDocument.MailMerge.DataSource.ActiveRecord
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord
'Enregistrement des fichiers
ActiveDocument.MailMerge.ViewMailMergeFieldCodes = False
For i = 1 To LastRec Step 1
Id = ActiveDocument.MailMerge.DataSource.DataFields(1).Value
ActiveDocument.SaveAs2 Path & "\Service " & Id & ".pdf", wdFormatPDF
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
Next i
MsgBox "L'enregistrement de votre publipostage est terminé." & vbLf & vbLf & LastRec & " fichiers ont été enregistrés dans le dossier : " & Path, vbOKOnly + vbInformation, "Enregistrement du publipostage terminé"
Application.ScreenUpdating = True
End Sub
mais voilà lorsque j'exécute la macro, l'enregistrement d'un pdf par enseignement se fait bien mais le service reste le même pour tout le monde.
Pourriez-vous m'aider?
Merci beaucoup,
J'ai besoin de vos lumières! Je n'ai pas beaucoup de connaissance mais voilà mon problème :
J'ai une base de données excel qui contient tous les services que font les enseignants (1 enseignant peut avoir une seule ligne ou plusieurs).
Je dois leur éditer des attestations personnalisées dans lesquelles devront figurer leur service.
J'ai donc préparer un document excel avec uniquement nom et prénom sans doublons.
J'ai ensuite :
- préparer mon document word dans lequel j'ai fais un publipostage
- insérer quickpart/champs en sélectionnant ma base de donnée et effectué une requête pour que le service de l'enseignant concerné s'affiche.
Jusque là tout va bien sauf que :
1er problème : le service ne se met pas automatiquement à jour lorsque je fais défiler l'aperçu des résultats.
Je suis obligé de faire ctrl+A et F9 pour mettre à jour les champs
Sauriez-vous s'il existe un moyen que les champs se mettent automatiquement à jour?
2ème problème : je souhaite que chaque attestation soit enregistré automatiquement en un fichier PDF
J'ai donc insérer le code suivant :
Sub SavePubliAsPDF()
Dim LastRec As Integer
Dim Path As String, Id As String
Application.ScreenUpdating = False
'Choix du dossier d'enregistrement des fichiers
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Sélectionnez un dossier où enregistrer vos fichiers"
.Show
If Not (.SelectedItems.Count = 0) Then
Path = .SelectedItems(1)
Else
Exit Sub
End If
End With
'Décompte du nombre d'enregistrements dans le publipostage
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdLastRecord
LastRec = ActiveDocument.MailMerge.DataSource.ActiveRecord
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord
'Enregistrement des fichiers
ActiveDocument.MailMerge.ViewMailMergeFieldCodes = False
For i = 1 To LastRec Step 1
Id = ActiveDocument.MailMerge.DataSource.DataFields(1).Value
ActiveDocument.SaveAs2 Path & "\Service " & Id & ".pdf", wdFormatPDF
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
Next i
MsgBox "L'enregistrement de votre publipostage est terminé." & vbLf & vbLf & LastRec & " fichiers ont été enregistrés dans le dossier : " & Path, vbOKOnly + vbInformation, "Enregistrement du publipostage terminé"
Application.ScreenUpdating = True
End Sub
mais voilà lorsque j'exécute la macro, l'enregistrement d'un pdf par enseignement se fait bien mais le service reste le même pour tout le monde.
Pourriez-vous m'aider?
Merci beaucoup,
A voir également:
- Macro publipostage pdf
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Publipostage mail - Accueil - Word
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Save as pdf office 2007 - Télécharger - Bureautique
- Télécharger dictionnaire larousse pdf gratuit - Télécharger - Dictionnaires & Langues
1 réponse
Bonjour
Le premier problème n'est pas un problème. La mise à jour des champs est qq de fréquent à faire sur Word, et ce n'est pas très compliqué.
Le seond problème concerne une macro qui fait un publipostage. Or via ton publipostage tu fais aussi une requête avec le champ DATABASE, la macro ne gère pas ça. Donc c'est normal. Pourquoi ne pas poser la question sur le site où tu as récupéré la macro ?
m@rina
Le premier problème n'est pas un problème. La mise à jour des champs est qq de fréquent à faire sur Word, et ce n'est pas très compliqué.
Le seond problème concerne une macro qui fait un publipostage. Or via ton publipostage tu fais aussi une requête avec le champ DATABASE, la macro ne gère pas ça. Donc c'est normal. Pourquoi ne pas poser la question sur le site où tu as récupéré la macro ?
m@rina