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

  1. 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
    1. Christof422 Messages postés 990 Statut Membre 213
       
      Ou utilise tu le "i" de ta boucle for?

      Ne pas oublier d'incrementer le i à la fin

      Next i
      0
    2. 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
    3. Christof422 Messages postés 990 Statut Membre 213
       
      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
  2. 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
  3. 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