Publipostage

Bonjour à tous,

Voila, je cherche à faire un publipostage d’étiquette (jusqu'à la tous va bien) mais avec des quantités d'étiquettes différentes.

Je m'explique :

J'ai plusieurs produits avec des dimensions différentes, j'aimerais faire une étiquette pour chaque produit hors j'ai (par exemple) 7 caissons de 1.00 x 2.00 m, 2 caissons de 0.50 x 1.00 m etc. etc...

J'ai bien fait ma base de donnée depuis Excel mais lorsque je l'importe sur word, sa coince dans les quantités d’étiquettes.

Merci d'avance pour vos réponses.

74test-bd.xlsx (9.42 Ko)

Bonsoir,

Je ne suis pas un spécialiste de Word, mais il ne me semble pas possible de faire ce que tu demandes avec les options natives du publipostage.

Pour pouvoir répondre à ta demande, je te propose une solution VBA Word à adapter à ton besoin. Dans ma solution, lorsqu'on exécute la macro, on compte le nombre de lignes d'étiquettes qui se trouvent dans le fichier Excel, donc modifie la requête du pubipostage pour ne prendre que les lignes du classeur Excel dont le nb d'étiquettes est supérieur à zéro (il faut faire un filtre avec l'option Modifier la liste de destinataires/Filtrer/Champ Quantité>0), ensuite le programme lit chacune des lignes, exécute le publipostage de la ligne et imprime la page créée en spécifiant le nb d'étiquettes souhaité, ensuite il supprime le classeur d'étiquettes que l'on vient d'imprimer.

Ajoute un module à ton document Word (Alt+T11), copie ce code dans le module, referme la fenêtre VBA et enregistre ton document.

Pour exécuter la macro : Alt+F8 ImprPublipostage.

Voici le code :

Option Explicit

Sub ImprPublipostage()
   Dim iNbEnr As Integer
   Dim iItem As Integer
   Dim Doc As Document
   Dim NbExp As String
   ' Chargement des variables
   Set Doc = ThisDocument
'   Set Source = Doc.MailMerge.DataSource
   iNbEnr = Doc.MailMerge.DataSource.RecordCount
   ' Boucle sur les lignes de la feuille Excel
   For iItem = 1 To iNbEnr
      With Doc.MailMerge
         'Définition du premier et dernier enregistrement
         .DataSource.FirstRecord = iItem
         .DataSource.LastRecord = iItem
         ' Envoi des données dans un nouveau document
         .Destination = wdSendToNewDocument
         ' Exécution du publipostage
         .Execute
         ' Actualisation de l'enregistrement
         .DataSource.ActiveRecord = iItem
         ' Impression des étiquettes en fonction du nombre précisé dans la colonne Quantité
         NbExp = .DataSource.DataFields("Quantité").Value
         If IsNumeric(NbExp) Then ActiveDocument.PrintOut Copies:=CInt(NbExp)
         ' Fermeture du document publiposté
         If Not (ThisDocument Is ActiveDocument) Then ActiveDocument.Close False
      End With
   Next iItem
End Sub
Rechercher des sujets similaires à "publipostage"