VBA Excel insersion de lignes vides toutes les 30 lignes

Fermé
kiwi2017! Messages postés 3 Date d'inscription jeudi 4 mai 2017 Statut Membre Dernière intervention 12 mai 2017 - Modifié le 4 mai 2017 à 16:35
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 13 mai 2017 à 12:25
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

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
4 mai 2017 à 17:08
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
kiwi2017! Messages postés 3 Date d'inscription jeudi 4 mai 2017 Statut Membre Dernière intervention 12 mai 2017
Modifié le 11 mai 2017 à 18:10
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
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
12 mai 2017 à 08:37
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
kiwi2017! Messages postés 3 Date d'inscription jeudi 4 mai 2017 Statut Membre Dernière intervention 12 mai 2017
12 mai 2017 à 11:35
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
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
13 mai 2017 à 12:25
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