Répéter lignes selon nombre précis
Résolu
benoitnat
-
benoitnat -
benoitnat -
Bonjour,
Je n'y connais rien en VBA, j'ai donc beaucoup de mal à adapter les exemples trouvés dans ce forum à ce que je veux faire.
Voilà l'idée :
Je souhaite répéter les lignes de mon classeur un certain nombre de fois (ce nombre est précisé dans une cellule)
exemple :
nombre défini en cellule G1 : 30, en cellule G2 : 20...
Je souhaite donc dupliquer ma ligne 1 30 fois, ma ligne 2 20 fois...
Si quelqu'un connait un truc je suis preneuse mais j'ai besoin de toute la procédure détaillée car comme je l'ai dit, je n'y connais rien !
Par avance merci
Je n'y connais rien en VBA, j'ai donc beaucoup de mal à adapter les exemples trouvés dans ce forum à ce que je veux faire.
Voilà l'idée :
Je souhaite répéter les lignes de mon classeur un certain nombre de fois (ce nombre est précisé dans une cellule)
exemple :
nombre défini en cellule G1 : 30, en cellule G2 : 20...
Je souhaite donc dupliquer ma ligne 1 30 fois, ma ligne 2 20 fois...
Si quelqu'un connait un truc je suis preneuse mais j'ai besoin de toute la procédure détaillée car comme je l'ai dit, je n'y connais rien !
Par avance merci
A voir également:
- Répéter lignes selon nombre précis
- Nombre de jours entre deux dates excel - Guide
- Nombre facile - Télécharger - Outils professionnels
- Afficher lignes masquées excel ✓ - Forum Excel
- Gto nombre episode - Forum Cinéma / Télé
- Faites afficher avec un fond coloré les cellules qui contiennent une valeur comprise entre 250 et 350. quel nombre est dessiné en surbrillance ? ✓ - Forum Excel
4 réponses
Bonjour,
Dans le principe, c'est possible mais j'ai deux questions.
Est-ce que toutes tes cellules G sont remplies ou est-ce qu'il peut y avoir G5=10, G6 vide, G7=15 ?
J'imagine que suivant ton exemple, tu copies 29 fois la ligne 1 entre les lignes 1 et 2, puis 19 lignes entre les lignes 31 et 32 (lignes 2 et 3 d'origine), ...
Dans le principe, c'est possible mais j'ai deux questions.
Est-ce que toutes tes cellules G sont remplies ou est-ce qu'il peut y avoir G5=10, G6 vide, G7=15 ?
J'imagine que suivant ton exemple, tu copies 29 fois la ligne 1 entre les lignes 1 et 2, puis 19 lignes entre les lignes 31 et 32 (lignes 2 et 3 d'origine), ...
Bonjour et merci d'avoir répondu.
Je confirme que toutes les lignes de ma colonne G sont remplies, certaines sont avec le nombre 0.
Sinon c'est ça, je voulais copier 29 fois la ligne 1 entre les lignes 1 et 2, puis 19 lignes entre les lignes 31 et 32 (lignes 2 et 3 d'origine), ...
Pour le cas sur lequel je travaille, je l'ai fait manuellement car je devais le terminer hier, donc si tu n'as pas le temps de te pencher sur le problème ce n'est pas grave, mais si tu as la solution rapidement, ça m'intéresse de la connaître pour une prochaine fois
Merci
Je confirme que toutes les lignes de ma colonne G sont remplies, certaines sont avec le nombre 0.
Sinon c'est ça, je voulais copier 29 fois la ligne 1 entre les lignes 1 et 2, puis 19 lignes entre les lignes 31 et 32 (lignes 2 et 3 d'origine), ...
Pour le cas sur lequel je travaille, je l'ai fait manuellement car je devais le terminer hier, donc si tu n'as pas le temps de te pencher sur le problème ce n'est pas grave, mais si tu as la solution rapidement, ça m'intéresse de la connaître pour une prochaine fois
Merci
Voici le texte de la macro
Sub Copies_lignes()
'
Dim nb_copies As Integer
Dim ligne_traitee As Integer
'
ligne_traitee = 1
'
While Range("G" & ligne_traitee).Value <> ""
nb_copies = Range("G" & ligne_traitee).Value
If nb_copies > 1 Then
Rows(ligne_traitee).Copy
Rows((ligne_traitee + 1) & ":" & (ligne_traitee + nb_copies - 1)).Insert Shift:=xlDown
ligne_traitee = ligne_traitee + nb_copies
Else
ligne_traitee = ligne_traitee + 1
End If
Wend
Application.CutCopyMode = False
End Sub
Sub Copies_lignes()
'
Dim nb_copies As Integer
Dim ligne_traitee As Integer
'
ligne_traitee = 1
'
While Range("G" & ligne_traitee).Value <> ""
nb_copies = Range("G" & ligne_traitee).Value
If nb_copies > 1 Then
Rows(ligne_traitee).Copy
Rows((ligne_traitee + 1) & ":" & (ligne_traitee + nb_copies - 1)).Insert Shift:=xlDown
ligne_traitee = ligne_traitee + nb_copies
Else
ligne_traitee = ligne_traitee + 1
End If
Wend
Application.CutCopyMode = False
End Sub