OVH Cloud OVH Cloud

excel et sauts automatiques de lignes

19 réponses
Avatar
tdclb
bonjour
j'ai un fichier excel avec 100 lignes, et je voudrais sauter 5 lignes
(qui seront vides) =E0 chaque ligne... de fa=E7on automatiq=E9s, pour
m'=E9viter de faire 500 fois : ins=E9rer, lignes.

en gros j'ai :
XXXXXX
XXXXXX
XXXXXX
XXXXXX
et je voudrais :
XXXXXX




XXXXXX




XXXXXX



XXXXXX


est ce que quelqu'un pourrait me pr=EAter main forte ?
merci d'avance
pascal

10 réponses

1 2
Avatar
Céline
Salut plein_de_consonnes

voici ma proposition

Sub mamacro()

Dim i, j As Integer
i = 2

Do Until Range("A" & i) = ""
For j = 1 To 5
Rows(i & ":" & i).Insert Shift:=xlDown
Next j
i = i + 6
Loop

End Sub

ca te va?
bonne journée
Céline



bonjour
j'ai un fichier excel avec 100 lignes, et je voudrais sauter 5 lignes
(qui seront vides) à chaque ligne... de façon automatiqés, pour
m'éviter de faire 500 fois : insérer, lignes.

en gros j'ai :
XXXXXX
XXXXXX
XXXXXX
XXXXXX
et je voudrais :
XXXXXX




XXXXXX




XXXXXX



XXXXXX


est ce que quelqu'un pourrait me prêter main forte ?
merci d'avance
pascal


Avatar
Céline
oups, j'ajoute :

je pars du principe que tes XXXX sont écrits dans la colonne A
Sinon, mettre à jour la ligne Do until Range("A" & i) = ""
en remplacant A par la colonne considérée....
:p

Ttes mes excuses


Salut plein_de_consonnes

voici ma proposition

Sub mamacro()

Dim i, j As Integer
i = 2

Do Until Range("A" & i) = ""
For j = 1 To 5
Rows(i & ":" & i).Insert Shift:=xlDown
Next j
i = i + 6
Loop

End Sub

ca te va?
bonne journée
Céline



bonjour
j'ai un fichier excel avec 100 lignes, et je voudrais sauter 5 lignes
(qui seront vides) à chaque ligne... de façon automatiqés, pour
m'éviter de faire 500 fois : insérer, lignes.

en gros j'ai :
XXXXXX
XXXXXX
XXXXXX
XXXXXX
et je voudrais :
XXXXXX




XXXXXX




XXXXXX



XXXXXX


est ce que quelqu'un pourrait me prêter main forte ?
merci d'avance
pascal




Avatar
JB
Bonjour,


Range("A65000").End(xlUp).Select
For i = 1 To Selection.CurrentRegion.Rows.Count - 1
ActiveCell.Resize(5, 1).EntireRow.Insert
ActiveCell.Offset(-1, 0).Select
Next

Cordialement JB


bonjour
j'ai un fichier excel avec 100 lignes, et je voudrais sauter 5 lignes
(qui seront vides) à chaque ligne... de façon automatiqés, pour
m'éviter de faire 500 fois : insérer, lignes.

en gros j'ai :
XXXXXX
XXXXXX
XXXXXX
XXXXXX
et je voudrais :
XXXXXX




XXXXXX




XXXXXX



XXXXXX


est ce que quelqu'un pourrait me prêter main forte ?
merci d'avance
pascal


Avatar
tdclb
ça me va plus que bien oui....
quand on ne maitrise pas les macros....
merci beaucoup
bonne journée
pascal

Salut plein_de_consonnes

voici ma proposition

Sub mamacro()

Dim i, j As Integer
i = 2

Do Until Range("A" & i) = ""
For j = 1 To 5
Rows(i & ":" & i).Insert Shift:=xlDown
Next j
i = i + 6
Loop

End Sub

ca te va?
bonne journée
Céline



bonjour
j'ai un fichier excel avec 100 lignes, et je voudrais sauter 5 lignes
(qui seront vides) à chaque ligne... de façon automatiqés, pour
m'éviter de faire 500 fois : insérer, lignes.

en gros j'ai :
XXXXXX
XXXXXX
XXXXXX
XXXXXX
et je voudrais :
XXXXXX




XXXXXX




XXXXXX



XXXXXX


est ce que quelqu'un pourrait me prêter main forte ?
merci d'avance
pascal




Avatar
Céline
effectivement, comme ça, ça fait moins bidouillage...
:p




Bonjour,


Range("A65000").End(xlUp).Select
For i = 1 To Selection.CurrentRegion.Rows.Count - 1
ActiveCell.Resize(5, 1).EntireRow.Insert
ActiveCell.Offset(-1, 0).Select
Next

Cordialement JB


bonjour
j'ai un fichier excel avec 100 lignes, et je voudrais sauter 5 lignes
(qui seront vides) à chaque ligne... de façon automatiqés, pour
m'éviter de faire 500 fois : insérer, lignes.

en gros j'ai :
XXXXXX
XXXXXX
XXXXXX
XXXXXX
et je voudrais :
XXXXXX




XXXXXX




XXXXXX



XXXXXX


est ce que quelqu'un pourrait me prêter main forte ?
merci d'avance
pascal




Avatar
MichDenis
Il y a aussi ceci :

Dans un module standard en adaptant le nom de la feuille.
'------------------------
Sub InserreLignes()
Dim derlig As Long, A As Long
Application.ScreenUpdating = False
With Feuil1
derlig = .Cells.Find(What:="*", After:=[A1], LookIn:=xlFormulas, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
A = 2
Do While A <= derlig
.Cells(A, 1).Resize(5).EntireRow.Insert
A = A + 6
derlig = derlig + 5
Loop
End With
End Sub
'------------------------



"tdclb" a écrit dans le message de news:

bonjour
j'ai un fichier excel avec 100 lignes, et je voudrais sauter 5 lignes
(qui seront vides) à chaque ligne... de façon automatiqés, pour
m'éviter de faire 500 fois : insérer, lignes.

en gros j'ai :
XXXXXX
XXXXXX
XXXXXX
XXXXXX
et je voudrais :
XXXXXX




XXXXXX




XXXXXX



XXXXXX


est ce que quelqu'un pourrait me prêter main forte ?
merci d'avance
pascal
Avatar
Céline
bonjour JB, et MichDenis

toujours avide de connaissance j'aimerais comprendre le fonctionnement
de
.Cells(A, 1).Resize(5).EntireRow.Insert

Pour pouvoir l'utiliser
Plus précisémment, comment fonctionne resize(5) par rapport à insert
(je n'ai pas bien saisi l'aide d'excel sur le sujet)

En pratique j'aimerais adapter cela à mon travail

J'ai un compteur
Quantite_LigneS

il recoit :
Quantite_LigneS = Selection.Rows.Count
selon sa valeur il est réaffecté; disons qu'il valait 71 puis est
réaffecté à 99


J'aimerais remplacer : (1)
For j = 1 To Quantite_LigneS
Rows(Range(Adresse_Cellule_Copie).Row & ":" &
Range(Adresse_Cellule_Copie).Row).Insert Shift:=xlDown
Next j

Par : (2)
Range(Adrese_Cellule_Copie).Resize(Quantite_LigneS).EntireRow.Insert
xlShiftDown

Or l'expérience montre que
(1) m'insère bien 99 lignes
tandis que (2) ne m'en insère que 71

Mais pourquoi donc-t-il ?
Fichtre

Merci de vos explications sur ce problème,
bonne fin de journée
Céline




Il y a aussi ceci :

Dans un module standard en adaptant le nom de la feuille.
'------------------------
Sub InserreLignes()
Dim derlig As Long, A As Long
Application.ScreenUpdating = False
With Feuil1
derlig = .Cells.Find(What:="*", After:=[A1], LookIn:=xlFormul as, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
A = 2
Do While A <= derlig
.Cells(A, 1).Resize(5).EntireRow.Insert
A = A + 6
derlig = derlig + 5
Loop
End With
End Sub
'------------------------



"tdclb" a écrit dans le message de news:

bonjour
j'ai un fichier excel avec 100 lignes, et je voudrais sauter 5 lignes
(qui seront vides) à chaque ligne... de façon automatiqés, pour
m'éviter de faire 500 fois : insérer, lignes.

en gros j'ai :
XXXXXX
XXXXXX
XXXXXX
XXXXXX
et je voudrais :
XXXXXX




XXXXXX




XXXXXX



XXXXXX


est ce que quelqu'un pourrait me prêter main forte ?
merci d'avance
pascal


Avatar
MichDenis
Voici quelques explications sur la macro présentée :

| toujours avide de connaissance j'aimerais comprendre le fonctionnement

| .Cells(A, 1).Resize(5).EntireRow.Insert
La méthode utilisée dans la procédure à l'avantage de ne pas
appeler la méthode "Select".

Cells(A,1).EntireRow.Insert
Cette commande insérerait seulement 1 ligne entière

.Cells(A, 1).Resize(5)
Cette commande redimenstionne la plage si A égalait 1
nous aurions la plage Range("A1:A5")
Le 5 de la méthode resize inclus la ligne de départ et ajoute
4 autres lignes à la sélection.

La méthode Insert va ajouter autant de ligne qu'il y a de lignes
dans la plage désignée. dans cet exemple 5 lignes
en conséquence, la ligne de code
.Cells(A, 1).Resize(5).EntireRow.Insert
Insère 5 lignes juste avant la ligne 2 si A = 2
et ceci pour toutes la boucle.

J'utilise un boucle Do While ... Loop
A = 2 -> Première insertion juste avant la ligne 2
DerLig = Dernière ligne utilisée dans la feuille
Do While A <= derlig
.Cells(A, 1).Resize(5).EntireRow.Insert
'A = Numéro de la ligne -> incrémentation de 6
'puisqu'il insère "Avant"
A = A + 6
'Comme à chaque boucle, il insère 5 lignes
'on doit adapter la dernière ligne de 5 après
'chaque insertion.
derlig = derlig + 5
Loop






Pour pouvoir l'utiliser
Plus précisémment, comment fonctionne resize(5) par rapport à insert
(je n'ai pas bien saisi l'aide d'excel sur le sujet)

En pratique j'aimerais adapter cela à mon travail

J'ai un compteur
Quantite_LigneS

il recoit :
Quantite_LigneS = Selection.Rows.Count
selon sa valeur il est réaffecté; disons qu'il valait 71 puis est
réaffecté à 99


J'aimerais remplacer : (1)
For j = 1 To Quantite_LigneS
Rows(Range(Adresse_Cellule_Copie).Row & ":" &
Range(Adresse_Cellule_Copie).Row).Insert Shift:=xlDown
Next j

Par : (2)
Range(Adrese_Cellule_Copie).Resize(Quantite_LigneS).EntireRow.Insert
xlShiftDown

Or l'expérience montre que
(1) m'insère bien 99 lignes
tandis que (2) ne m'en insère que 71

Mais pourquoi donc-t-il ?
Fichtre

Merci de vos explications sur ce problème,
bonne fin de journée
Céline




Il y a aussi ceci :

Dans un module standard en adaptant le nom de la feuille.
'------------------------
Sub InserreLignes()
Dim derlig As Long, A As Long
Application.ScreenUpdating = False
With Feuil1
derlig = .Cells.Find(What:="*", After:=[A1], LookIn:=xlFormulas, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
A = 2
Do While A <= derlig
.Cells(A, 1).Resize(5).EntireRow.Insert
A = A + 6
derlig = derlig + 5
Loop
End With
End Sub
'------------------------



"tdclb" a écrit dans le message de news:

bonjour
j'ai un fichier excel avec 100 lignes, et je voudrais sauter 5 lignes
(qui seront vides) à chaque ligne... de façon automatiqés, pour
m'éviter de faire 500 fois : insérer, lignes.

en gros j'ai :
XXXXXX
XXXXXX
XXXXXX
XXXXXX
et je voudrais :
XXXXXX




XXXXXX




XXXXXX



XXXXXX


est ce que quelqu'un pourrait me prêter main forte ?
merci d'avance
pascal


Avatar
Céline
bonjour Michdenis

Merci pour tes explications
si je comprends bien, on ne cherche pas vraiment à redimentionner une
cellule mais
plutôt à éviter la fonction Select

Je n'ai pas réussi à adapter ce code à ma situation, peutêtre parce
un certain nombre
de lignes à "redimentionner" sont vides (entre quantité_lignes = 71
et 99)
[cf. : Quantite_LigneS = Selection.Rows.Count
selon sa valeur il est réaffecté; disons qu'il valait 71 puis est
réaffecté à 99 ]

Bref, mon but était d'insérer suffisamment de lignes pour que cela
face une ou
plusieurs pages entière (s)
J'ai tout simplement abandonné et décidé d'insérer un saut de page
à la fin de mes
lignes ajoutées.

Bref, je m'en sors tout de même...
Bonne journée
Céline




Voici quelques explications sur la macro présentée :

| toujours avide de connaissance j'aimerais comprendre le fonctionnement

| .Cells(A, 1).Resize(5).EntireRow.Insert
La méthode utilisée dans la procédure à l'avantage de ne pas
appeler la méthode "Select".

Cells(A,1).EntireRow.Insert
Cette commande insérerait seulement 1 ligne entière

.Cells(A, 1).Resize(5)
Cette commande redimenstionne la plage si A égalait 1
nous aurions la plage Range("A1:A5")
Le 5 de la méthode resize inclus la ligne de départ et ajoute
4 autres lignes à la sélection.

La méthode Insert va ajouter autant de ligne qu'il y a de lignes
dans la plage désignée. dans cet exemple 5 lignes
en conséquence, la ligne de code
.Cells(A, 1).Resize(5).EntireRow.Insert
Insère 5 lignes juste avant la ligne 2 si A = 2
et ceci pour toutes la boucle.

J'utilise un boucle Do While ... Loop
A = 2 -> Première insertion juste avant la ligne 2
DerLig = Dernière ligne utilisée dans la feuille
Do While A <= derlig
.Cells(A, 1).Resize(5).EntireRow.Insert
'A = Numéro de la ligne -> incrémentation de 6
'puisqu'il insère "Avant"
A = A + 6
'Comme à chaque boucle, il insère 5 lignes
'on doit adapter la dernière ligne de 5 après
'chaque insertion.
derlig = derlig + 5
Loop






Pour pouvoir l'utiliser
Plus précisémment, comment fonctionne resize(5) par rapport à insert
(je n'ai pas bien saisi l'aide d'excel sur le sujet)

En pratique j'aimerais adapter cela à mon travail

J'ai un compteur
Quantite_LigneS

il recoit :
Quantite_LigneS = Selection.Rows.Count
selon sa valeur il est réaffecté; disons qu'il valait 71 puis est
réaffecté à 99


J'aimerais remplacer : (1)
For j = 1 To Quantite_LigneS
Rows(Range(Adresse_Cellule_Copie).Row & ":" &
Range(Adresse_Cellule_Copie).Row).Insert Shift:=xlDown
Next j

Par : (2)
Range(Adrese_Cellule_Copie).Resize(Quantite_LigneS).EntireRow.Insert
xlShiftDown

Or l'expérience montre que
(1) m'insère bien 99 lignes
tandis que (2) ne m'en insère que 71

Mais pourquoi donc-t-il ?
Fichtre

Merci de vos explications sur ce problème,
bonne fin de journée
Céline




Il y a aussi ceci :

Dans un module standard en adaptant le nom de la feuille.
'------------------------
Sub InserreLignes()
Dim derlig As Long, A As Long
Application.ScreenUpdating = False
With Feuil1
derlig = .Cells.Find(What:="*", After:=[A1], LookIn:=xlForm ulas, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
A = 2
Do While A <= derlig
.Cells(A, 1).Resize(5).EntireRow.Insert
A = A + 6
derlig = derlig + 5
Loop
End With
End Sub
'------------------------



"tdclb" a écrit dans le message de news:

bonjour
j'ai un fichier excel avec 100 lignes, et je voudrais sauter 5 lignes
(qui seront vides) à chaque ligne... de façon automatiqés, pour
m'éviter de faire 500 fois : insérer, lignes.

en gros j'ai :
XXXXXX
XXXXXX
XXXXXX
XXXXXX
et je voudrais :
XXXXXX




XXXXXX




XXXXXX



XXXXXX


est ce que quelqu'un pourrait me prêter main forte ?
merci d'avance
pascal




Avatar
JB
Il semblerait que certains préfèrent compliquer un pgm simple.

-ActiveCell.Resize(5, 1) sélectionne 5 lignes
-ActiveCell.Resize(5, 1).EntireRow.Insert insère 5 lignes

JB



Resi



effectivement, comme ça, ça fait moins bidouillage...
:p




Bonjour,


Range("A65000").End(xlUp).Select
For i = 1 To Selection.CurrentRegion.Rows.Count - 1
ActiveCell.Resize(5, 1).EntireRow.Insert
ActiveCell.Offset(-1, 0).Select
Next

Cordialement JB


bonjour
j'ai un fichier excel avec 100 lignes, et je voudrais sauter 5 lignes
(qui seront vides) à chaque ligne... de façon automatiqés, pour
m'éviter de faire 500 fois : insérer, lignes.

en gros j'ai :
XXXXXX
XXXXXX
XXXXXX
XXXXXX
et je voudrais :
XXXXXX




XXXXXX




XXXXXX



XXXXXX


est ce que quelqu'un pourrait me prêter main forte ?
merci d'avance
pascal






1 2