Bonjour à tous!
Je débute sur VBA et je cherche à faire ceci:
J'ai une base de données en onglet "COMMANDES", dont j'aimerai pouvoir copier coller certaines colonnes (A, E, G et F dans cet ordre) dans les 4 premières colonnes d'un onglet "ETIQUETTES" quand celles de la colonne A ne sont pas vides (ça, j'ai réussi à faire!).
C'est là où ça devient plus délicat: j'aimerai faire des étiquettes de 10 lignes x 4 colonnes. On a déjà nos 4 colonnes, mais il faut que toutes les 10 lignes, je saute une ligne, et que s'il y a un changement de valeur en colonne A, on passe à la prochaine étiquette (en sautant le nombre de ligne nécessaire pour que l'étiquette fasse toujours 10 lignes).
En plus de cela, j'aimerai que les valeurs des colonnes A et B dans "ETIQUETTES" ne soient affichées qu'une fois dans la première ligne de chaque étiquette, mais je n'y suis pas encore.
Si ce n'est pas clair, j'ai mis un onglet "Target" dans le fichier joint, c'est ce que j'aimerai réaliser et automatiser dans l'onglet "ETIQUETTES".
Pour le moment mon code ressemble à ça, j'ai réussi à copier les valeurs dans l'onglet qu'il me faut, mais je n'arrive pas à passer de lignes quand une condition se réalise...
Sauriez vous m'aider?
Merci beaucoup!
Je débute sur VBA et je cherche à faire ceci:
J'ai une base de données en onglet "COMMANDES", dont j'aimerai pouvoir copier coller certaines colonnes (A, E, G et F dans cet ordre) dans les 4 premières colonnes d'un onglet "ETIQUETTES" quand celles de la colonne A ne sont pas vides (ça, j'ai réussi à faire!).
C'est là où ça devient plus délicat: j'aimerai faire des étiquettes de 10 lignes x 4 colonnes. On a déjà nos 4 colonnes, mais il faut que toutes les 10 lignes, je saute une ligne, et que s'il y a un changement de valeur en colonne A, on passe à la prochaine étiquette (en sautant le nombre de ligne nécessaire pour que l'étiquette fasse toujours 10 lignes).
En plus de cela, j'aimerai que les valeurs des colonnes A et B dans "ETIQUETTES" ne soient affichées qu'une fois dans la première ligne de chaque étiquette, mais je n'y suis pas encore.
Si ce n'est pas clair, j'ai mis un onglet "Target" dans le fichier joint, c'est ce que j'aimerai réaliser et automatiser dans l'onglet "ETIQUETTES".
Pour le moment mon code ressemble à ça, j'ai réussi à copier les valeurs dans l'onglet qu'il me faut, mais je n'arrive pas à passer de lignes quand une condition se réalise...
Sauriez vous m'aider?
Merci beaucoup!
VB:
Sub generationetiquettes()
'copier les colonnes dans ETIQUETTES
Sheets("COMMANDES").Range("A:A").Copy
Sheets("ETIQUETTES").Range("A1").PasteSpecial xlPasteValues
Sheets("COMMANDES").Range("E:E").Copy
Sheets("ETIQUETTES").Range("B1").PasteSpecial xlPasteValues
Sheets("COMMANDES").Range("G:G").Copy
Sheets("ETIQUETTES").Range("C1").PasteSpecial xlPasteValues
Sheets("COMMANDES").Range("F:F").Copy
Sheets("ETIQUETTES").Range("D1").PasteSpecial xlPasteValues
'supprimer les lignes sans commande dans ETIQUETTES
Sheets("ETIQUETTES").Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
'supprimer ligne 1
Sheets("ETIQUETTES").Range("A1").EntireRow.Delete
'créer les variables
'long = nombre entier
Dim wk_fichier As Workbook
Dim ws_commandes As Worksheet
Dim ws_etiquettes As Worksheet
Dim lastrow_etiquettes As Long
'assigner une valeur aux variables
Set wk_fichier = ActiveWorkbook
Set ws_commandes = wk_fichier.Worksheets("COMMANDES")
Set ws_etiquettes = wk_fichier.Worksheets("ETIQUETTES")
'identifier derniere ligne du numero de Commande dans ETIQUETTES
lastrow_etiquettes = ws_etiquettes.Cells(Rows.Count, 1).End(xlUp).Row
'commencer la boucle sur les lignes dans ETIQUETTES
Dim i As Long
For i = lastrow_etiquettes To 2 Step -1
If Range("a" & i).Value <> Range("a" & i - 1).Value Then Range("a" & i).EntireRow.Insert
Next
'enregistrer le fichier
wk_fichier.Save
End Sub