Publipostage avancé

N

Nico

Guest
Bonjour à tous !!!
je souhaiterais faire un publipostage un peu particulier:
A partir d'une source excel:
nom--prénom--nombre etiq
toto---jean------3
fifi----éric--------2
riri----ben--------5

je veux 3 etiquettes de toto; 2 de fifi; et 5 de riri mais j'ai pas cette option avec le publipostage de word

Auriez-vous une solution ?? macro,...

Merci beaucoup
 

21ch181

XLDnaute Junior
Bonjour,

je vois plusieurs possibilités :

1 - créer un fichier excel avec autant de lignes du nom X que tu as besoin d'étiquettes (dans ton exemple : 3 lignes toto, 2 lignes fifi...), ce fichier généré sous excel étant repris ensuite comme data source de ton publipostage sous word ==> pas 'beau' mais fonctionne parfaitement et simple

2 - imprimer toutes tes étiquettes depuis excel par une macro avec 2 boucles imbriquées :
..for i=1 to dernier nom
.....for j=1 to nombre étiquette du nom
..........print....
.....next j
..next i
==> tu n'as qu'à faire un modèle de l'étiquette dans Excel

3 - macro dans Word où tu répètes l'impression autant de fois que le nombre désiré ==> mais je décline je ne maîtrise pas assez !

Attention mes hypothèses ne sont valides que si tu n'as qu'une seule étiquette de front sur ton support !

Cordialement
 
N

Nico

Guest
pilou écrit:
Je pense que le + simple c'est d'utiliser ta troisième colonne, de récuperer le nombre et d'inserer/copier autant de fois que nombre - 1.

ensuite tu utilises Word.

bon courage

J'y avais pensé mais c'est pas 2 ou 3 étiquettes mais une dizaine...

21ch181 écrit:
Bonjour,

je vois plusieurs possibilités :

1 - créer un fichier excel avec autant de lignes du nom X que tu as besoin d'étiquettes (dans ton exemple : 3 lignes toto, 2 lignes fifi...), ce fichier généré sous excel étant repris ensuite comme data source de ton publipostage sous word ==> pas 'beau' mais fonctionne parfaitement et simple

2 - imprimer toutes tes étiquettes depuis excel par une macro avec 2 boucles imbriquées :
..for i=1 to dernier nom
.....for j=1 to nombre étiquette du nom
..........print....
.....next j
..next i
==> tu n'as qu'à faire un modèle de l'étiquette dans Excel

3 - macro dans Word où tu répètes l'impression autant de fois que le nombre désiré ==> mais je décline je ne maîtrise pas assez !

Attention mes hypothèses ne sont valides que si tu n'as qu'une seule étiquette de front sur ton support !

Cordialement

1-pour creer autant de lignes que le nombre d'etiquettes, il faudrait pouvoir l'automatiser, je sui preneur de toutes aide...


Merci quand même à vous 2 :silly:
 

21ch181

XLDnaute Junior
Bonsoir Nico,

Voici le petit bout de code qui te dépannera je pense !
J'ai mis un peu de temps à répondre car j'étais occupé ailleurs !!

Je suppose que les valeurs à recopier autant de fois qu'il est nécessaire sont en colonnes 1 et 2
Les boucles ci dessous permettent de créer autant d'occurences en colonnes 4 et 5 que le nombre d'étiquettes indiqué en colone 3.
Si tu avais plus de 2 colonnes de données il faudrait bien sur adapter ! mais je pense que tu pourras faire ! Sinon ..... fais signe !
Au fait, la boucle tourne tant qu'il y a quelque chose (espace compris !) en colonne 1 !!
A la fin de l'éxécution, il sufit soit de supprimer les colonnes 1, 2 et 3 soit de recopier les colonnes 4 et 5 dans un nouveau classeur pour que tu ai des données 'propres' pour word.

Bonne nuit !

Sub test()
i = 1
j = 1
Do While IsEmpty(Cells(i, 1)) = False
For k = 1 To Cells(i, 3)
Cells(j, 4) = Cells(i, 1)
Cells(j, 5) = Cells(i, 2)
j = j + 1
Next k
i = i + 1
Loop
End Sub


NB : Monsieur le modérateur, y aurait-il une soluce pour conserver l'indentation dans les posts SVP ?
 
N

Nico

Guest
21ch181 écrit:
Bonsoir Nico,

Voici le petit bout de code qui te dépannera je pense !
J'ai mis un peu de temps à répondre car j'étais occupé ailleurs !!

Je suppose que les valeurs à recopier autant de fois qu'il est nécessaire sont en colonnes 1 et 2
Les boucles ci dessous permettent de créer autant d'occurences en colonnes 4 et 5 que le nombre d'étiquettes indiqué en colone 3.
Si tu avais plus de 2 colonnes de données il faudrait bien sur adapter ! mais je pense que tu pourras faire ! Sinon ..... fais signe !
Au fait, la boucle tourne tant qu'il y a quelque chose (espace compris !) en colonne 1 !!
A la fin de l'éxécution, il sufit soit de supprimer les colonnes 1, 2 et 3 soit de recopier les colonnes 4 et 5 dans un nouveau classeur pour que tu ai des données 'propres' pour word.

Bonne nuit !

Sub test()
i = 1
j = 1
Do While IsEmpty(Cells(i, 1)) = False
For k = 1 To Cells(i, 3)
Cells(j, 4) = Cells(i, 1)
Cells(j, 5) = Cells(i, 2)
j = j + 1
Next k
i = i + 1
Loop
End Sub


NB : Monsieur le modérateur, y aurait-il une soluce pour conserver l'indentation dans les posts SVP ?

le début me plait bien mais j'ai un message d'erreur...
j'utilises les colonnes 2 et 5 et le nombre d'etiquettes est en colonne 7

merci beaucoup
 

CBernardT

XLDnaute Barbatruc
Bonsoir Nico et 21ch181,

Un essai d'impression d'étiquettes :

1- La feuille 'detail' contient les données de nom et de nombre ;
2- La feuille 'Modele' est le type d'étiquette à imprimer.

La macro place les noms et prénoms dans les cellules du modèle et lance l'impression du nombre de feuilles désiré.

Cordialement

CBernardT [file name=TiragEtiquettes.zip size=14326]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/TiragEtiquettes.zip[/file]

Message édité par: CBernardT, à: 13/04/2005 23:40
 

Pièces jointes

  • TiragEtiquettes.zip
    14 KB · Affichages: 44

21ch181

XLDnaute Junior
Bonjour Nico,

L'erreur que tu as sur la ligne 'for k...' est probablement due au fait que dans la colonne 3 tu as soit rien soit du texte : or la macro attends du numérique puisque c'est un controle de boucle !

Comte tenu de ce que tu dis de l'emplacement de tes données qui sont en colonnes 2 et 5 et le nombre d'étiquettes en 7 alors tu dois modifier la macro ainsi pour ne plus avoir l'erreur et un résultat correct :

Sub test()
i = 1
j = 1
Do While IsEmpty(Cells(i, 2)) = False
For k = 1 To Cells(i, 7)
Cells(j, 10) = Cells(i, 2)
Cells(j, 11) = Cells(i, 5)
j = j + 1
Next k
i = i + 1
Loop
End Sub

nota : le chiffre de droite dans les 'cells()' correspond au n° de colonne : si tu souhaites changer ta feuille de données il te suffit de mettre à jour ces chiffres !

Le résultat se trouvera en colonnes 10 et 11

Cordialement

Alain

Un petit mot pour CBernardT : j'ai décroché de mon PC plus tôt que toi !!
 
N

Nico

Guest
@CBernardT: merci pour la macro mais je ne veux pas lancer un nombre de planches d'étiquettes mais le nombre d'étiquettes
Sur ma planche d'étiquettes:

toto toto toto
riri riri fifi
fifi fifi fifi
fifi nono nono
nono...


@21ch181: j'ai toujours le même message d'erreur et je ne comprends pas pourquoi...

merci quand même
 

Discussions similaires

Réponses
28
Affichages
1 K
Réponses
7
Affichages
550

Statistiques des forums

Discussions
312 334
Messages
2 087 384
Membres
103 530
dernier inscrit
dieubrice