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

9 réponses

1 2
Avatar
Céline
toutes mes excuses alors
:-/
Céline



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 lign es
(qui seront vides) à chaque ligne... de façon automatiqés, po ur
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
'certains' ne s'adressait n'est pas à toi.

JB



toutes mes excuses alors
:-/
Céline



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 li gnes
(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
| on ne cherche pas vraiment à redimentionner une cellule

Une cellule est une cellule, on peut lui appliquer des "formatages"
comme la fusion avec d'autres cellules..., l'intégrer à un ensemble
de cellules (plage de cellules) mais la cellule est
l'unité de base d'excel et elle ne peut pas y être scindé.

| éviter la fonction Select

Lorsque c'est possible, il est préférable de ne pas utiliser la sélection
de cellules, objets, feuilles... cela augmente l'efficacité et la rapidité
de l'exécution du code...je n'invente rien en énonçant ceci !


Les 2 lignes de code sont identiques :

Range("A1:A5").EntireRow.Insert
'OU
Range("A1").Resize(5).EntireRow.Insert

Dans les 2 cas, 5 lignes seront ajoutés... non pas après la ligne A1
mais l'insertion se fait avant ... nous aurons donc 5 lignes vides
suivis de ce qui se trouvait en ligne 1 qui se retrouvera en ligne 6.

Le nombre de lignes qui est ajouté dépend du nombre de lignes
de la plage à partir de laquelle nous désirons ajouter des lignes.

Range("A1:A5").EntireRow.Insert = 5 lignes
'OU
Range("A1").Resize(5).EntireRow.Insert = 5 lignes

Range("A1:A2").EntireRow.Insert = 2 lignes -> insérerait 2 lignes


Techniquement, on pourrait même écrire :
Range("A1:A5, A10:A15").EntireRow.Insert
je te laisse deviner (?) le résultat ... (pas nécessairement celui attendu)
Avatar
Céline
Effectivement l''exemple que tu proposes est interessant !

j'ai repris mon cas particulier, pourvoir un peu si ct pas moi qui
allais mal..
et effectivement tout s'arrange.
comme je te l'avais dit, je cherche à insérer le nmbre de lignes
(Nb_A) voulu auquel s'ajoute un certain nombre (Nb_B) de lignes de
telle manière que la cellule décalée se retrouve en tete d'une
nouvelle page.
immédiatement après, une macro colle des informations sur ceraines
des cellules dans les lignes Nb_A

La cellule décalée se retrouve donc juste après un saut de page,
donc tout porte à croire que cela s'est passé correctement; mais les
lignes Nb_B n'apparaissent pas !
et donc la page complétée n'a que ... 25 lignes par ex au lieu de 50
!
--> comme si excel cachait automatiquement les lignes insérées qui
sont vides...
et donc au niveau du saut de page on passe de la ligne 751 à 752...
donc si je veux écrire d'autres choses dans ma page il faut que
j'insère des lignes, ce qui bien sur ne va pas me décaler mon saut de
page.. (heureusement!)
:pp
Est-ce que tu comprends mon étonnement (pas simple à espliquer) et en
connais-tu l'explication ??

Bonne après-midi
Céline





| on ne cherche pas vraiment à redimentionner une cellule

Une cellule est une cellule, on peut lui appliquer des "formatages"
comme la fusion avec d'autres cellules..., l'intégrer à un ensemble
de cellules (plage de cellules) mais la cellule est
l'unité de base d'excel et elle ne peut pas y être scindé.

| éviter la fonction Select

Lorsque c'est possible, il est préférable de ne pas utiliser la sél ection
de cellules, objets, feuilles... cela augmente l'efficacité et la rapid ité
de l'exécution du code...je n'invente rien en énonçant ceci !


Les 2 lignes de code sont identiques :

Range("A1:A5").EntireRow.Insert
'OU
Range("A1").Resize(5).EntireRow.Insert

Dans les 2 cas, 5 lignes seront ajoutés... non pas après la ligne A1
mais l'insertion se fait avant ... nous aurons donc 5 lignes vides
suivis de ce qui se trouvait en ligne 1 qui se retrouvera en ligne 6.

Le nombre de lignes qui est ajouté dépend du nombre de lignes
de la plage à partir de laquelle nous désirons ajouter des lignes.

Range("A1:A5").EntireRow.Insert = 5 lignes
'OU
Range("A1").Resize(5).EntireRow.Insert = 5 lignes

Range("A1:A2").EntireRow.Insert = 2 lignes -> insérerait 2 lign es


Techniquement, on pourrait même écrire :
Range("A1:A5, A10:A15").EntireRow.Insert
je te laisse deviner (?) le résultat ... (pas nécessairement celui at tendu)


Avatar
MichDenis
Ta problématique en est une d'impression...

À cet effet, si tu ajoutes la macro complémentaire "Gestionnaire de rapports",
tu pourras par la suite, définir des vues personnalisées (affichages), les
regroupés à l'intérieur d'un "Rapport". Pour lancer l'impression, tu n'auras
qu'à lancer le "Rapport" associé.

Les vues personnalisées permettent de définir toute sorte de caractéristiques
à une plage de cellules. La vue personnalisée ainsi définie les retient et lors
du lancement de l'impression ...Excel applique lui-même les caractéristiques
qu'il aura enregistrées.

Si tu as un peu de temps, consulte l'aide sur le sujet !

Je n'ai pas vraiment compris la donne de ton problème et je n'ai pas fait de test explicite
sur le sujet mais si je devais faire l'opération, je débuterais d'abord par insérer les lignes vides
dont j'ai besoin pour obtenir la disposition voulue des données, et j'insérerais seulement APRÈS
les sauts de page dont j'ai besoin.

Ceci étant dit, as-tu essayé d'exécuter ta macro pas à pas à l'aide de la touche F8 ?
Observe à chaque exécution de ligne de code ce qui se passe réellement dans ta feuille,
ça donne souvent une bonne idée de ce qui se passe et où le code (ligne) est déficient.


Salutations!




"Céline" a écrit dans le message de news:

Effectivement l''exemple que tu proposes est interessant !

j'ai repris mon cas particulier, pourvoir un peu si ct pas moi qui
allais mal..
et effectivement tout s'arrange.
comme je te l'avais dit, je cherche à insérer le nmbre de lignes
(Nb_A) voulu auquel s'ajoute un certain nombre (Nb_B) de lignes de
telle manière que la cellule décalée se retrouve en tete d'une
nouvelle page.
immédiatement après, une macro colle des informations sur ceraines
des cellules dans les lignes Nb_A

La cellule décalée se retrouve donc juste après un saut de page,
donc tout porte à croire que cela s'est passé correctement; mais les
lignes Nb_B n'apparaissent pas !
et donc la page complétée n'a que ... 25 lignes par ex au lieu de 50
!
--> comme si excel cachait automatiquement les lignes insérées qui
sont vides...
et donc au niveau du saut de page on passe de la ligne 751 à 752...
donc si je veux écrire d'autres choses dans ma page il faut que
j'insère des lignes, ce qui bien sur ne va pas me décaler mon saut de
page.. (heureusement!)
:pp
Est-ce que tu comprends mon étonnement (pas simple à espliquer) et en
connais-tu l'explication ??

Bonne après-midi
Céline





| on ne cherche pas vraiment à redimentionner une cellule

Une cellule est une cellule, on peut lui appliquer des "formatages"
comme la fusion avec d'autres cellules..., l'intégrer à un ensemble
de cellules (plage de cellules) mais la cellule est
l'unité de base d'excel et elle ne peut pas y être scindé.

| éviter la fonction Select

Lorsque c'est possible, il est préférable de ne pas utiliser la sélection
de cellules, objets, feuilles... cela augmente l'efficacité et la rapidité
de l'exécution du code...je n'invente rien en énonçant ceci !


Les 2 lignes de code sont identiques :

Range("A1:A5").EntireRow.Insert
'OU
Range("A1").Resize(5).EntireRow.Insert

Dans les 2 cas, 5 lignes seront ajoutés... non pas après la ligne A1
mais l'insertion se fait avant ... nous aurons donc 5 lignes vides
suivis de ce qui se trouvait en ligne 1 qui se retrouvera en ligne 6.

Le nombre de lignes qui est ajouté dépend du nombre de lignes
de la plage à partir de laquelle nous désirons ajouter des lignes.

Range("A1:A5").EntireRow.Insert = 5 lignes
'OU
Range("A1").Resize(5).EntireRow.Insert = 5 lignes

Range("A1:A2").EntireRow.Insert = 2 lignes -> insérerait 2 lignes


Techniquement, on pourrait même écrire :
Range("A1:A5, A10:A15").EntireRow.Insert
je te laisse deviner (?) le résultat ... (pas nécessairement celui attendu)


Avatar
Céline
Bonjour MichDenis,
si tu es toujours interessé,
voici un petit classeur simplifié de ma situation pour t'illustrer mon
interrogation sur le fait que les sauts de pages diminuent le nombre de
lignes par pages...
Par contre comme tu pourras peutêtre le constater,
la méthode insertrow colle automatiquement le contenu du
presse-papier, autant de fois qu'elle le peut sur l'étendue de la
ligne !
dans mon cas particulier (un classeur comparable à celui-ci) cela ne
me pose pas de problème
mais ici le résultat visuel est étrange !
Evidemment,
pour résoudre le pb il suffira d'éviter de copier les cellules avant
d'appeler inserer_lignes_ou_non
bonne journée,
Céline


PS : juste le temps que je m'y retrouve avec Cjoint...


Ta problématique en est une d'impression...

À cet effet, si tu ajoutes la macro complémentaire "Gestionnaire de r apports",
tu pourras par la suite, définir des vues personnalisées (affichages) , les
regroupés à l'intérieur d'un "Rapport". Pour lancer l'impression, t u n'auras
qu'à lancer le "Rapport" associé.

Les vues personnalisées permettent de définir toute sorte de caract éristiques
à une plage de cellules. La vue personnalisée ainsi définie les ret ient et lors
du lancement de l'impression ...Excel applique lui-même les caractéri stiques
qu'il aura enregistrées.

Si tu as un peu de temps, consulte l'aide sur le sujet !

Je n'ai pas vraiment compris la donne de ton problème et je n'ai pas fa it de test explicite
sur le sujet mais si je devais faire l'opération, je débuterais d'abo rd par insérer les lignes vides
dont j'ai besoin pour obtenir la disposition voulue des données, et j'i nsérerais seulement APRÈS
les sauts de page dont j'ai besoin.

Ceci étant dit, as-tu essayé d'exécuter ta macro pas à pas à l' aide de la touche F8 ?
Observe à chaque exécution de ligne de code ce qui se passe réellem ent dans ta feuille,
ça donne souvent une bonne idée de ce qui se passe et où le code (l igne) est déficient.


Salutations!




"Céline" a écrit dans le message de news:

Effectivement l''exemple que tu proposes est interessant !

j'ai repris mon cas particulier, pourvoir un peu si ct pas moi qui
allais mal..
et effectivement tout s'arrange.
comme je te l'avais dit, je cherche à insérer le nmbre de lignes
(Nb_A) voulu auquel s'ajoute un certain nombre (Nb_B) de lignes de
telle manière que la cellule décalée se retrouve en tete d'une
nouvelle page.
immédiatement après, une macro colle des informations sur ceraines
des cellules dans les lignes Nb_A

La cellule décalée se retrouve donc juste après un saut de page,
donc tout porte à croire que cela s'est passé correctement; mais les
lignes Nb_B n'apparaissent pas !
et donc la page complétée n'a que ... 25 lignes par ex au lieu de 50
!
--> comme si excel cachait automatiquement les lignes insérées qui
sont vides...
et donc au niveau du saut de page on passe de la ligne 751 à 752...
donc si je veux écrire d'autres choses dans ma page il faut que
j'insère des lignes, ce qui bien sur ne va pas me décaler mon saut de
page.. (heureusement!)
:pp
Est-ce que tu comprends mon étonnement (pas simple à espliquer) et en
connais-tu l'explication ??

Bonne après-midi
Céline





| on ne cherche pas vraiment à redimentionner une cellule

Une cellule est une cellule, on peut lui appliquer des "formatages"
comme la fusion avec d'autres cellules..., l'intégrer à un ensemble
de cellules (plage de cellules) mais la cellule est
l'unité de base d'excel et elle ne peut pas y être scindé.

| éviter la fonction Select

Lorsque c'est possible, il est préférable de ne pas utiliser la s élection
de cellules, objets, feuilles... cela augmente l'efficacité et la rap idité
de l'exécution du code...je n'invente rien en énonçant ceci !


Les 2 lignes de code sont identiques :

Range("A1:A5").EntireRow.Insert
'OU
Range("A1").Resize(5).EntireRow.Insert

Dans les 2 cas, 5 lignes seront ajoutés... non pas après la ligne A1
mais l'insertion se fait avant ... nous aurons donc 5 lignes vides
suivis de ce qui se trouvait en ligne 1 qui se retrouvera en ligne 6.

Le nombre de lignes qui est ajouté dépend du nombre de lignes
de la plage à partir de laquelle nous désirons ajouter des lignes.

Range("A1:A5").EntireRow.Insert = 5 lignes
'OU
Range("A1").Resize(5).EntireRow.Insert = 5 lignes

Range("A1:A2").EntireRow.Insert = 2 lignes -> insérerait 2 li gnes


Techniquement, on pourrait même écrire :
Range("A1:A5, A10:A15").EntireRow.Insert
je te laisse deviner (?) le résultat ... (pas nécessairement celui attendu)




Avatar
Céline
Donc.
voici le lien :
http://cjoint.com/?kfjYi0IZRP
Merci !



Bonjour MichDenis,
si tu es toujours interessé,
voici un petit classeur simplifié de ma situation pour t'illustrer mon
interrogation sur le fait que les sauts de pages diminuent le nombre de
lignes par pages...
Par contre comme tu pourras peutêtre le constater,
la méthode insertrow colle automatiquement le contenu du
presse-papier, autant de fois qu'elle le peut sur l'étendue de la
ligne !
dans mon cas particulier (un classeur comparable à celui-ci) cela ne
me pose pas de problème
mais ici le résultat visuel est étrange !
Evidemment,
pour résoudre le pb il suffira d'éviter de copier les cellules avant
d'appeler inserer_lignes_ou_non
bonne journée,
Céline


PS : juste le temps que je m'y retrouve avec Cjoint...


Ta problématique en est une d'impression...

À cet effet, si tu ajoutes la macro complémentaire "Gestionnaire de rapports",
tu pourras par la suite, définir des vues personnalisées (affichage s), les
regroupés à l'intérieur d'un "Rapport". Pour lancer l'impression, tu n'auras
qu'à lancer le "Rapport" associé.

Les vues personnalisées permettent de définir toute sorte de caract éristiques
à une plage de cellules. La vue personnalisée ainsi définie les r etient et lors
du lancement de l'impression ...Excel applique lui-même les caracté ristiques
qu'il aura enregistrées.

Si tu as un peu de temps, consulte l'aide sur le sujet !

Je n'ai pas vraiment compris la donne de ton problème et je n'ai pas fait de test explicite
sur le sujet mais si je devais faire l'opération, je débuterais d'a bord par insérer les lignes vides
dont j'ai besoin pour obtenir la disposition voulue des données, et j 'insérerais seulement APRÈS
les sauts de page dont j'ai besoin.

Ceci étant dit, as-tu essayé d'exécuter ta macro pas à pas à l'aide de la touche F8 ?
Observe à chaque exécution de ligne de code ce qui se passe réell ement dans ta feuille,
ça donne souvent une bonne idée de ce qui se passe et où le code (ligne) est déficient.


Salutations!




"Céline" a écrit dans le message de news:

Effectivement l''exemple que tu proposes est interessant !

j'ai repris mon cas particulier, pourvoir un peu si ct pas moi qui
allais mal..
et effectivement tout s'arrange.
comme je te l'avais dit, je cherche à insérer le nmbre de lignes
(Nb_A) voulu auquel s'ajoute un certain nombre (Nb_B) de lignes de
telle manière que la cellule décalée se retrouve en tete d'une
nouvelle page.
immédiatement après, une macro colle des informations sur ceraines
des cellules dans les lignes Nb_A

La cellule décalée se retrouve donc juste après un saut de page,
donc tout porte à croire que cela s'est passé correctement; mais les
lignes Nb_B n'apparaissent pas !
et donc la page complétée n'a que ... 25 lignes par ex au lieu de 50
!
--> comme si excel cachait automatiquement les lignes insérées qui
sont vides...
et donc au niveau du saut de page on passe de la ligne 751 à 752...
donc si je veux écrire d'autres choses dans ma page il faut que
j'insère des lignes, ce qui bien sur ne va pas me décaler mon saut de
page.. (heureusement!)
:pp
Est-ce que tu comprends mon étonnement (pas simple à espliquer) et en
connais-tu l'explication ??

Bonne après-midi
Céline





| on ne cherche pas vraiment à redimentionner une cellule

Une cellule est une cellule, on peut lui appliquer des "formatages"
comme la fusion avec d'autres cellules..., l'intégrer à un ensemb le
de cellules (plage de cellules) mais la cellule est
l'unité de base d'excel et elle ne peut pas y être scindé.

| éviter la fonction Select

Lorsque c'est possible, il est préférable de ne pas utiliser la s élection
de cellules, objets, feuilles... cela augmente l'efficacité et la r apidité
de l'exécution du code...je n'invente rien en énonçant ceci !


Les 2 lignes de code sont identiques :

Range("A1:A5").EntireRow.Insert
'OU
Range("A1").Resize(5).EntireRow.Insert

Dans les 2 cas, 5 lignes seront ajoutés... non pas après la ligne A1
mais l'insertion se fait avant ... nous aurons donc 5 lignes vides
suivis de ce qui se trouvait en ligne 1 qui se retrouvera en ligne 6.

Le nombre de lignes qui est ajouté dépend du nombre de lignes
de la plage à partir de laquelle nous désirons ajouter des lignes.

Range("A1:A5").EntireRow.Insert = 5 lignes
'OU
Range("A1").Resize(5).EntireRow.Insert = 5 lignes

Range("A1:A2").EntireRow.Insert = 2 lignes -> insérerait 2 lignes


Techniquement, on pourrait même écrire :
Range("A1:A5, A10:A15").EntireRow.Insert
je te laisse deviner (?) le résultat ... (pas nécessairement celu i attendu)






Avatar
MichDenis
Difficile de corriger une macro qui ne fonctionne pas...
cela demande que je devine le résultat désiré.. et ça
je ne l'ai pas saisi.

Demande toi :

A ) à partir de quelle ligne tu veux insérer des nouvelles lignes ?
B ) Comment déterminer le nombre de lignes à ajouter ?
C ) Combien de lignes dois-tu ajouter ?
D ) Ajouter le nombre de lignes désirées où il le faut...
E ) Copier la plage de cellules où il le faut
Avatar
Céline
Difficile de corriger une macro qui ne fonctionne pas...
??

je viens de la retester, ca ne plante pas chez moi
bref, ce n'est pas grave, je m'en suis sortie...
bonne soirée




Difficile de corriger une macro qui ne fonctionne pas...
cela demande que je devine le résultat désiré.. et ça
je ne l'ai pas saisi.

Demande toi :

A ) à partir de quelle ligne tu veux insérer des nouvelles lignes ?
B ) Comment déterminer le nombre de lignes à ajouter ?
C ) Combien de lignes dois-tu ajouter ?
D ) Ajouter le nombre de lignes désirées où il le faut...
E ) Copier la plage de cellules où il le faut


1 2