Création d'étiquette avec une boucle VBA

Bonjour,

Mon souhait serait de créer des étiquettes comme dans le modèle du fichier joint / onglet 3 : MACRO étiquettes.

La source de cet onglet se trouve dans l'onglet 2 "TCD for étiquettes". Ce TCD se réfère lui même d'un export contenant plus de 8 000 lignes. (pour l'exemple j'ai réduit à 10).

Mon problème est que si je tire vers le bas, Excel copie les infos toutes les 3 lignes et vers la droite comme sur le modèle, il faut que je change manuellement les infos de ma ligne (et c'est long 8000 lignes ).

Il faut donc que je passe par une macro et une boucle, monde dont je ne connais malheureusement pas les codes de bonne conduite.

Si toutefois une bonne âme pouvait m'aider sur ce sujet, j'en serai fort satisfait.

PS : serait il possible de laisser des commentaires pour que je puisse comprendre comment vous avez réaliser cet exploit.

Merci à la communauté

Bonjour,

Je ne pense pas que l'utilisation d'une macro soit nécessaire ici.

On peut réaliser une formule qui va s'occuper d'aller chercher les informations correctement.

Ce que j'ai fait:

  1. Faire en sorte de pouvoir se passer du TCD, pour ça j'ai remplacé les champs qu'on utilise dans le TCD directement par ce qu'il y a dans export sky
  2. Utiliser DECALER pour obtenir la ligne que l'on veut
  3. Copier les formules sur la plage B8:E16

La formule paraît long et complexe, en réalité j'utilise toujours la même chose, par exemple pour le material number:

DECALER('export sky'!$C$2;4*QUOTIENT(LIGNE()-LIGNE($B$5);3)+(COLONNE()-COLONNE($B$5));0)

DECALER retourne une cellule à partir de C2, on lui indique juste de combien de ligne vers le bas on doit se décaler pour aller la chercher, concrètement c'est ce qui permet d'adapter la ligne avec laquelle on travaille pour la création de l'étiquette.

On a ensuite à l'intérieur en vert la cellule de départ, ici c'est C2, la première cellule du tableau qui contient le material number, on va changer la colonne en fonction de l'info qu'on veut, pour le material description ce sera D2, on écrit $C$2 histoire que la colonne et la ligne ne bougent jamais quand on change de cellule, ce sera toujours $C$2 dans la formule.

Cette référence, on la décale en fonction d'où on est dans le fichier.

La partie bleue incrémente de 4 lignes à chaque fois qu'on a fini une ligne d'étiquettes, une ligne d'étiquettes contient 4 étiquettes, d'où le *4, et pour savoir si on est sur une nouvelle ligne, on fait le quotient entre le numéro de ligne sur lequel on est par le nombre de lignes d'infos par étiquette. première ligne d'étiquette = ligne 0 à 2, deuxième ligne d'étiquette = ligne 3 à 5 et ainsi de suite.

La partie jaune incrément de 1 ligne à chaque changement de colonne, la première colonne incrémente de 0.

pour B5 on a :

DECALER('export sky'!$C$2;4*QUOTIENT(LIGNE(B5)-LIGNE($B$5);3)+(COLONNE(B5)-COLONNE($B$5));0)

DECALER('export sky'!$C$2;4*QUOTIENT(5-5;3)+(2-2);0)

DECALER('export sky'!$C$2;4*QUOTIENT(0;3)+0;0)

DECALER('export sky'!$C$2;4*0+0;0)

DECALER('export sky'!$C$2;0;0)

'export sky'!C2

pour C8 on a:

DECALER('export sky'!$C$2;4*QUOTIENT(LIGNE(C8)-LIGNE($B$5);3)+(COLONNE(C8)-COLONNE($B$5));0)

DECALER('export sky'!$C$2;4*QUOTIENT(8-5;3)+(3-2);0)

DECALER('export sky'!$C$2;4*QUOTIENT(3;3)+1;0)

DECALER('export sky'!$C$2;4*1+1;0)

DECALER('export sky'!$C$2;5;0)

'export sky'!C7

Voici le fichier avec les formules modifiées:

A noter qu'il faut changer le 4*QUOTIENT par 5*QUOTIENT si on a 5 étiquettes par ligne par exemple.

Bonjour,

Merci pour cette réponse et le temps passé pour ces explications.

Cependant, je pense que mon fichier risque d'être très lourd si je devais reporter ces formules pour plus de 8000 lignes.

D'après mon expérience, le VBA permet d'alléger considérablement les fichiers.

Et puis surtout, il faut que je m'y colle avec de petits exercices comme celui ci.

Pour finir, je pourrais me la raconter auprès des utilisateurs ... (bien entendu, je dirai la vérité après quelques minutes de gloire)

Dans ce cas si vous voulez vraiment du VBA,

voici le fichier avec un code VBA qui se charge de créer les étiquettes, je suis partis sur le nombre d'étiquettes par colonne qu'il y avait dans l'exemple, donc 7.

Ce fichier VBA fonctionne parfaitement pour mes besoins !

Un grand merci aux équipes de Excel-Pratique et je remercie particulièrement "Ausecour" pour son aide.

Rechercher des sujets similaires à "creation etiquette boucle vba"