Urgent ! : Insertion auto de lignes / Excel

fraxa Messages postés 18 Statut Membre -  
Morgothal Messages postés 1350 Statut Membre -
Bonjour,

Voici mon problème :

J'ai un fichier de 572 lignes. Chaque ligne est une référence produit. Je souhaite insérer 17 lignes après chaque ligne de référence. Cela donnerait ceci : Ref 1 : ligne 1, puis 17 lignes à insérer avant ref2. La ref 2 n'est donc plus en ligne 2, mais en ligne 19... et ainsi de suite.

Comment faire ?
Merci de votre aide, c'est très urgent... ;-)

3 réponses

Morgothal Messages postés 1350 Statut Membre 184
 
Bonjour,
Avec ce code ça fonctionne :
Sub insertion() 

Dim ligne, colonne, i As Integer 
For i = 1 To 600 
ligne = ActiveCell.Row 
colonne = ActiveCell.Column 

    Rows(ligne + 1 & ":" & ligne + 17).Select 
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 
    Cells(ligne + 18, colonne).Select 

Next 

End Sub 
Il faut sélectionner la cellule sur la première ligne et première colonne di tableau où l'on insert les lignes.
A+
2
Christof422 Messages postés 990 Statut Membre 212
 
Ou utilise tu le "i" de ta boucle for?

Ne pas oublier d'incrementer le i à la fin

Next i
0
Morgothal Messages postés 1350 Statut Membre 184
 
Je ne l'utilise pas, l'incrément se fait de 17 en 17 ici
Rows(ligne + 1 & ":" & ligne + 17).Select
Et le i à la fin n'est pas nécessaire, je n'ai qu'une boucle For
0
Christof422 Messages postés 990 Statut Membre 212
 
Autant pour moi, je ne savais pas que l'on pouvais se passer de l'increment lorsque l'on a qu'une seule boucle.

La macro marche très bien.
0
fraxa Messages postés 18 Statut Membre
 
Merci beaucoup, c'est clair net et précis, et en plus ça fonctionne !

J'en profite pour vous demander comment faire pour recopier les lignes 2, 20, 38, 56, 74, (et tous les multiples de 18 jusqu'à la ligne 10262) dans les 17 lignes vierges créées par la macro précédente.

Pour imager ce qu'il me faut, cela donnerait ceci :
ligne 2 copiée jusqu'à ligne 19
ligne 20 copiée jusqu'à ligne 37
ligne 38 copiée jusqu'à ligne 55,
etc jusqu'à la ligne 10262 qui sera donc copiée jusqu'à la ligne 10279.

J'espère avoir été clair...!

Merci de votre aide.
0
Morgothal Messages postés 1350 Statut Membre 184
 
Re,
Ce code permet de tirer chaque référence jusqu'à la suivante :
Sub copie()
Dim ligne, i As Integer

For i = 1 To 600
    ligne = ActiveCell.Row
    
    Selection.AutoFill Destination:=Range("A" & ligne & ":A" & ligne + 17), Type:=xlFillDefault
    Cells(ligne + 18, 1).Select

Next
End Sub


Bonne soirée
0