Urgent ! : Insertion auto de lignes / Excel

Fermé
fraxa Messages postés 18 Date d'inscription samedi 22 mai 2010 Statut Membre Dernière intervention 13 juillet 2012 - 13 juil. 2012 à 15:15
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 - 13 juil. 2012 à 19:03
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 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
Modifié par Morgothal le 13/07/2012 à 16:14
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 867 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 8 février 2015 212
13 juil. 2012 à 16:17
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 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
13 juil. 2012 à 16:18
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 867 Date d'inscription mardi 24 mai 2011 Statut Membre Dernière intervention 8 février 2015 212
13 juil. 2012 à 16:23
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 Date d'inscription samedi 22 mai 2010 Statut Membre Dernière intervention 13 juillet 2012
13 juil. 2012 à 17:05
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 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
13 juil. 2012 à 19:03
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