Bonjour,
Tout d'abord je n'ai aucune formation VBA, je suis à mes débuts et ce n'est pas mon cœur de métier mais j'ai besoin de réussir une macro afin de gagner du temps au boulot.
J'ai un fichier excel, construit de la sorte :
A B C D
1 MAX 16 ADRESSE 2
J'aimerais que cette ligne (A1;D1) soit dupliqué 1 fois (D-1) (Si D=5, alors dupliqué 4 fois^^)
J'aurais quotidiennement environ 50 lignes, et 10% d'entres elles auront un nombre ">2" en colonne "D", donc pas mal de duplication de ligne.
J'ai trouvé pas mal de code faisant cela, mais impossible d'en faire fonctionner un.
J'ai trouvé celui-ci, j'ai essayé de l'adapter mais ca ne marche pas.
Voici mon code :
AA est égale à D (dans mon exemple soit le nbr de ligne souhaité)
Z correspond à une colonne vierge permettant de stocker le "D-1"
A correspond à la colonne "NOM" afin de ne pas dupliquer 2 fois une ligne déjà dupliqué
3 correspond au numéro de ma première ligne de données.
<code basic>
Sub duplique()
Application.ScreenUpdating = False
der = Range("A65536").End(xlUp).Row + 1
For n = 3 To Range("A65536").End(xlUp).Row
For i = 3 To der
If Range("Z" & i) > 1 Then
eti = Range("A" & i).Value
nbr = Range("Z" & i).Value
Range("AA" & i) = 1
For j = i + 1 To i + nbr - 1
If Range("A" & j).Value = eti Then
Range("AA" & j) = Range("AA" & j - 1) + 1
Range("Z" & j) = nbr
Else
Rows(j).Insert shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
Range("A" & j) = eti
Range("AA" & j) = Range("AA" & j - 1) + 1
Range("Z" & j) = Range("Z" & i).Value
der = der + 1
End If
Next j
i = j - 1
End If
Next i
Next n
End Sub
</code>
Merci de votre aide, à votre écoute,
Simon
Tout d'abord je n'ai aucune formation VBA, je suis à mes débuts et ce n'est pas mon cœur de métier mais j'ai besoin de réussir une macro afin de gagner du temps au boulot.
J'ai un fichier excel, construit de la sorte :
A B C D
1 MAX 16 ADRESSE 2
J'aimerais que cette ligne (A1;D1) soit dupliqué 1 fois (D-1) (Si D=5, alors dupliqué 4 fois^^)
J'aurais quotidiennement environ 50 lignes, et 10% d'entres elles auront un nombre ">2" en colonne "D", donc pas mal de duplication de ligne.
J'ai trouvé pas mal de code faisant cela, mais impossible d'en faire fonctionner un.
J'ai trouvé celui-ci, j'ai essayé de l'adapter mais ca ne marche pas.
Voici mon code :
AA est égale à D (dans mon exemple soit le nbr de ligne souhaité)
Z correspond à une colonne vierge permettant de stocker le "D-1"
A correspond à la colonne "NOM" afin de ne pas dupliquer 2 fois une ligne déjà dupliqué
3 correspond au numéro de ma première ligne de données.
<code basic>
Sub duplique()
Application.ScreenUpdating = False
der = Range("A65536").End(xlUp).Row + 1
For n = 3 To Range("A65536").End(xlUp).Row
For i = 3 To der
If Range("Z" & i) > 1 Then
eti = Range("A" & i).Value
nbr = Range("Z" & i).Value
Range("AA" & i) = 1
For j = i + 1 To i + nbr - 1
If Range("A" & j).Value = eti Then
Range("AA" & j) = Range("AA" & j - 1) + 1
Range("Z" & j) = nbr
Else
Rows(j).Insert shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
Range("A" & j) = eti
Range("AA" & j) = Range("AA" & j - 1) + 1
Range("Z" & j) = Range("Z" & i).Value
der = der + 1
End If
Next j
i = j - 1
End If
Next i
Next n
End Sub
</code>
Merci de votre aide, à votre écoute,
Simon