VBA Excel insersion de lignes vides toutes les 30 lignes

kiwi2017! Messages postés 3 Statut Membre -  
ThauTheme Messages postés 1564 Statut Membre -
Bonjour à tous,

je cherche deseperement un code pour m'aider à insérer 2 ou 3 lignes vides après chaque 30 lignes sur Excel

Merci beaucoup pour vos retours!

Cdt,
Kiwi

3 réponses

  1. ThauTheme Messages postés 1564 Statut Membre 160
     
    Bonjour Kiwi, bonjour le forum,

    Essaie comme ça :

    Sub Macro1()
    Dim O As Worksheet 'déclare la variable O (Onglet)
    Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
    Dim I As Long 'déclare la variable I (Incrément)
    Dim LD As Long 'déclare la variable LD (Ligne de Départ)
    
    Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
    DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet O (colonne à adapter à ton cas)
    LD = (DL \ 30) * 30 'définit la ligne de départ LD
    For I = LD To 1 Step -30 'boucle inversée de la ligne de départ à la ligne 1 par pas de 30
        Rows(I + 1).Insert Shift:=xlDown 'insère une ligne vide
        Rows(I + 1).Insert Shift:=xlDown 'insère une ligne vide
        Rows(I + 1).Insert Shift:=xlDown 'insère une ligne vide (à supprimer si tu ne veux que deux lignes vides)
    Next I 'prochaine ligne de la boucle
    End Sub

    1
    1. kiwi2017! Messages postés 3 Statut Membre
       
      Merci beaucoup ThauTheme!

      je ne comprends pas par contre la ligne
      LD = (DL \ 30) * 30 'définit la ligne de départ LD

      elle sert à quoi ?
      Pour être au plus juste de ce que je veux faire j'ai copié ton code comme ça :

      les données commencent en ligne 4 et se termine en ligne 55.
      et avec ce code il se positionne sur la ligne 4 il insère 3 lignes ensuite il compte 16 et il insère 3 lignes ainsi de suite.....

      Alors que ce que je voulais c'est insérer 3 lignes à partir de la ligne 16 . et ainsi de suite sachant que mapremière donnée commence en ligne 4


      Sub Macro1()
      Dim O As Worksheet 'déclare la variable O (Onglet)
      Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
      Dim I As Long 'déclare la variable I (Incrément)
      Dim LD As Long 'déclare la variable LD (Ligne de Départ)

      Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
      DL = O.Cells(Application.Rows.Count, "B").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne B de l'onglet O (colonne à adapter à ton cas)
      LD = (DL \ 4) * 4 'définit la ligne de départ LD
      For I = LD To 1 Step -16 'boucle inversée de la ligne de départ à la ligne 1 par pas de 30
      Rows(I + 1).Insert Shift:=xlDown 'insère une ligne vide
      Rows(I + 1).Insert Shift:=xlDown 'insère une ligne vide
      Rows(I + 1).Insert Shift:=xlDown 'insère une ligne vide (à supprimer si tu ne veux que deux lignes vides)
      Next I 'prochaine ligne de la boucle
      End Sub


      merci beaucoup pour ton retour

      Kiwi
      0
  2. ThauTheme Messages postés 1564 Statut Membre 160
     
    Re,

    Je ne comprend rien Kiwi. Dans un premier temps tu parles d'insérer chaque 30 lignes maintenant c'est chaque 16 lignes ?!...
    0
    1. kiwi2017! Messages postés 3 Statut Membre
       
      Ouiii je suis désolée! je suis revenu sur mon fichier et en fait c'est 16 lignes. du coup j'ai modifié ton code j'ai mis

      For I = LD To 1 Step -16 alors

      et j'ai aussi mis

      LD = (DL \ 4) * 4 'définit la ligne de départ LD

      car ma première donnée commence en ligne 4.

      mais ça marche pas :( :( je ne sais pas ce que j'ai loupé
      0
  3. ThauTheme Messages postés 1564 Statut Membre 160
     
    Re,

    On a définit la dernière ligne DL (55 ici). Comme on part de la fin, il faut que la ligne de départ LD soit un multiple de 16, soit (DL \ 16) * 16 pour que la ligne de début soit la ligne 1. Mais comme dans ton cas la ligne de début est, non pas la ligne 1, mais la ligne 4, ça nous donne : LD = ((DL \ 16) * 16)) + 3. Après il ne reste plus qu'a boucle de la ligne de départ LD à la ligne 4 par pas de 16 :

    Sub Macro1()
    Dim O As Worksheet 'déclare la variable O (Onglet)
    Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
    Dim I As Long 'déclare la variable I (Incrément)
    Dim LD As Long 'déclare la variable LD (Ligne de Départ)
    
    Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
    DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet O (colonne à adapter à ton cas)
    LD = ((DL \ 16) * 16) + 3 'définit la ligne de départ LD
    For I = LD To 4 Step -16 'boucle inversée de la ligne de départ à la ligne 4 par pas de 16
        Rows(I + 1).Insert Shift:=xlDown 'insère une ligne vide
        Rows(I + 1).Insert Shift:=xlDown 'insère une ligne vide
        Rows(I + 1).Insert Shift:=xlDown 'insère une ligne vide (à supprimer si tu ne veux que deux lignes vides)
    Next I 'prochaine ligne de la boucle
    End Sub

    0