Boucle pour dupliquer des lignes dans excel

Pliskhy -  
Polux31 Messages postés 7219 Statut Membre -
Bonjour,

j'ai un tableau excel à 3 colonnes qui réfence:
- 1 article
- 1 code de réference
- 1 nombre d'étiquettes nécessaires.

ce que je cherche à faire c'est à l'aide d'un bouton, c'est dupliquer sur une feuille 2 l'article et le numero de référence sur autant de lignes qu'il y as d'étiquettes nécessaires.

Par exemple
Feuille 1

A 001 2
B 002 3
etc...

Feuille 2
A 001
A 001
B 002
B 002
B 002
etc...

merci, d'avance pour l'aide que vous pourriez m'apporter.

3 réponses

  1. eljojo_e Messages postés 1255 Statut Membre 155
     
    Bonjour,
    essaye ca :
    Sub test()
    numd = 1
    For num1 = 1 To 1000 'nombre de ligne max
    If Range("a" & num1).Value = "" Then
    Sheets("Feuil2").Range("a" & num2 - 1).Value = ""
    Sheets("Feuil2").Range("b" & num2 - 1).Value = ""
    Exit Sub
    End If
    a = Range("a" & num1).Value
    b = Range("b" & num1).Value
    c = Range("c" & num1).Value
    For num2 = numd To c + numd
    Sheets("Feuil2").Range("a" & num2).Value = a
    Sheets("Feuil2").Range("b" & num2).Value = b
    Next
    numd = numd + c
    Next

    End Sub

    Mesurer la masse de sa connerie permettrait dans connaitre sa gravité ;)
    0
  2. Pliskhy
     
    Re,

    Merci ta méthode fonctionne, il me reste à l'intégrer dans mon tableau.
    0
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    La méthode fonctionne effectivement. Mais ça implique que la longueur du tableau reste figée à un nombre de ligne et qu'il faut revenir sur le code pour modifier le nombre de lignes si le tableau évolue.

    Voilà une méthode qui s'adapte quelque soit la longueur du tableau:

    Dim Derlig1 As Long
    Dim Derlig2 As Long
    Dim nb As Integer
    Dim i As Long
    Dim j As Integer
    
        Derlig1 = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
        For i = 2 To Derlig1
            nb = CInt(Sheets(1).Range("C" & i).Value)
            For j = 1 To nb
                Derlig2 = Sheets(2).Range("A" & Rows.Count).End(xlUp).Row
                Sheets(2).Range("A" & derlig2 + 1).Value = Sheets(1).Range("A" & i).Value
                Sheets(2).Range("B" & derlig2 + 1).Value = Sheets(1).Range("B" & i).Value
            Next j
        Next i

    0