Urgent ! : Insertion auto de lignes / Excel

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

  • Votes
  • Date
  • Date décroissante
  1. 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+
    1. Ou utilise tu le "i" de ta boucle for?

      Ne pas oublier d'incrementer le i à la fin

      Next i
    2. 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
    3. 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.
  2. 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.
    1. 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