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
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
A voir également:
- VBA Excel insersion de lignes vides toutes les 30 lignes
- Aller à la ligne excel - Guide
- Excel trier par ordre alphabétique en gardant les lignes - Guide
- Liste déroulante excel - Guide
- Filtre excel ne prend pas en compte toutes les lignes ✓ - Forum Excel
- Site de vente en ligne particulier - Guide
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
4 mai 2017 à 17:08
Bonjour Kiwi, bonjour le forum,
Essaie comme ça :
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
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
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 ?!...
Je ne comprend rien Kiwi. Dans un premier temps tu parles d'insérer chaque 30 lignes maintenant c'est chaque 16 lignes ?!...
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
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é
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é
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
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 :
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
Modifié le 11 mai 2017 à 18:10
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