Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

supprimer des lignes, des colonnes par VB.

24 réponses
Avatar
Greg
Bonsoir,

1) Je souhaite supprimer (et non masquer) toutes les colonnes dont les
cellules sont vides sur la première ligne (ligne 1), pour les 28 premières
colonnes seulement. Quel code me permettrait d'atteindre l'objectif?

2) Est-ce réalisable pour l'élimination des lignes lorsque la première
cellule (en colonne A) est vide, et ce pour les 32 premières lignes?

Merci de votre aide

Greg

10 réponses

1 2 3
Avatar
LSteph
Bonjour,

A- Même sans essayer ! Suffite de lire le code:
1- si on ne doit supprimer que les colonnes dont la première ligne est
vide
il faut traiter [A1:AB1] (... et en employant entirecolumn -cf point
2)
et non [A1:AB28].columns
sinon tu vas traiter de gauche à droite et de haut en bas toute les
cellules de la plage
(même si l'expression est sans boucle c'est ce qui est demandé et
ainsi que l'application le traiite)
Donc cela va tout décaler selon les vides de la plage.

2- <..[a1:a31].rows
Lorsque tu traite les lignes ou les colonnes d'une plage seul
l'intérieur de cette plage est traité
pour traiter la ligne entière ou la colonne entière utiliser entirerow
ou entirecolumn.

B-Pour toi en Essayant
rempli des x aux aux colonnes d'à coté et vois la différence entre
Réponse 2)
[A1:A32].SpecialCells(xlCellTypeBlanks).Rows.Delete



et

[A1:A32].SpecialCells(xlCellTypeBlanks).EntireRow.Delete


Amicordialement.

--
lSteph



On 16 juil, 10:34, "Caetera" <EtiennePloufCahé@wanadoo.fr> wrote:
>> [A1:AB28].SpecialCells(xlCellTypeBlanks).Columns.Delete
> A mon humble avis, ça na fonctionne pas...

Même en essayant ?...

Etc


Avatar
LSteph
Bonjour Daniel,

Sauf utilisation du mode L1C1
la 26 ème colonne est bien AB pour autres versions aussi 97....2003
Et malgré que ces souvenirs soient lointains même ..avant, il me
semble!

:o))

--
lSteph


On 16 juil, 11:03, Daniel.C wrote:
Je n'écrirais pas cela sans avoir essayé. Pourquoi AB28 ? 28 étant le
nombre de colonnes, pas un nombre de lignes ?
Avec XL2007 en tout cas.
Daniel



>>> [A1:AB28].SpecialCells(xlCellTypeBlanks).Columns.Delete

>> A mon humble avis, ça na fonctionne pas...

> Même en essayant ?...

> Etc- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
Caetera
> Réponse 1)
[A1:AB28].SpecialCells(xlCellTypeBlanks).Columns.Delete



Il est évident qu'il fallait lire
[A1:AB1].SpecialCells(xlCellTypeBlanks).Columns.Delete
et
[A1:A32].SpecialCells(xlCellTypeBlanks).Rows.Delete


Mais ma remarque valait pour le "entirecolumn" qui n'apporte strictement rien de
plus que "columns" (s'il s'agit d'une ligne ou une colonne ne faisant évidemment
pas partie d'un tableau)
Quant à la boucle....
Suffit de faire un test sur une plage du style [A1:A20000] pour supprimer les
lignes des cellules vides pour se rendre compte que
SpecialCells(xlCellTypeBlanks).... est bien plus performant...

Etc
Avatar
LSteph
Bonjour,
Il est évident qu'il fallait lire... et que c'est bien ce qu'on a
lu!! Pour la boucle ou non on a dis la même chose!!
Relis! et essaye J'ai juste repris ton expression en contractant pour
l'explication [A..... rows ne va pas

Réponse 2)
[A1:A32].SpecialCells(xlCellTypeBlanks).Rows.Delete



il faut entirerow

[A1:A32].SpecialCells(xlCellTypeBlanks).EntireRow.Delete

Si tu veux fais toi même la différtence qui se voit sans essayer

de même pour les colonnes on doit pas traiter [a1:ab28] mais [a1:ab1]
et encore une fois entirecolumn ..

Est-ce plus clair!

--
lSteph


On 16 juil, 11:49, "Caetera" <EtiennePloufCahé@wanadoo.fr> wrote:
> Réponse 1)
> [A1:AB28].SpecialCells(xlCellTypeBlanks).Columns.Delete


Mais ma remarque valait pour le "entirecolumn" qui n'apporte strictement rien de
plus que "columns" (s'il s'agit d'une ligne ou une colonne ne faisant é videmment
pas partie d'un tableau)
Quant à la boucle....
Suffit de faire un test sur une plage du style [A1:A20000] pour supprimer les
lignes des cellules vides pour se rendre compte que
SpecialCells(xlCellTypeBlanks).... est bien plus performant...

Etc


Avatar
LSteph
...au cas ou tu n'ai toujours pas vu le pb voici visuellement, les _
représentent les vides:

XX__XX
XXXXXX
_XXXXX
XXXXXX

Avec [A1:AB28].SpecialCells(xlCellTypeBlanks).Columns.Delete
tu obtiens:
XXXXXX
XXXXXX
XXXXXX
_X__XX


Avec [A1:AB1].SpecialCells(xlCellTypeBlanks).entirecolumn.Delete

XXXX
XXXX
_XXX
XXXX


Cordialement.

--
lSteph



On 16 juil, 11:49, "Caetera" <EtiennePloufCahé@wanadoo.fr> wrote:
> Réponse 1)
> [A1:AB28].SpecialCells(xlCellTypeBlanks).Columns.Delete

Il est évident qu'il fallait lire
[A1:AB1].SpecialCells(xlCellTypeBlanks).Columns.Delete
et
[A1:A32].SpecialCells(xlCellTypeBlanks).Rows.Delete

Mais ma remarque valait pour le "entirecolumn" qui n'apporte strictement rien de
plus que "columns" (s'il s'agit d'une ligne ou une colonne ne faisant é videmment
pas partie d'un tableau)
Quant à la boucle....
Suffit de faire un test sur une plage du style [A1:A20000] pour supprimer les
lignes des cellules vides pour se rendre compte que
SpecialCells(xlCellTypeBlanks).... est bien plus performant...

Etc


Avatar
Greg
Bonjour à tous et heureux de voir que la question a tant stimulé vos
cellules grises. Le combat des chefs permet-il de conclure au code idéal
pour le béotien?

Merci à vous

Greg

"LSteph" a écrit dans le message de
news:
...au cas ou tu n'ai toujours pas vu le pb voici visuellement, les _
représentent les vides:

XX__XX
XXXXXX
_XXXXX
XXXXXX

Avec [A1:AB28].SpecialCells(xlCellTypeBlanks).Columns.Delete
tu obtiens:
XXXXXX
XXXXXX
XXXXXX
_X__XX


Avec [A1:AB1].SpecialCells(xlCellTypeBlanks).entirecolumn.Delete

XXXX
XXXX
_XXX
XXXX


Cordialement.

--
lSteph



On 16 juil, 11:49, "Caetera" <EtiennePloufCahé@wanadoo.fr> wrote:
> Réponse 1)
> [A1:AB28].SpecialCells(xlCellTypeBlanks).Columns.Delete

Il est évident qu'il fallait lire
[A1:AB1].SpecialCells(xlCellTypeBlanks).Columns.Delete
et
[A1:A32].SpecialCells(xlCellTypeBlanks).Rows.Delete

Mais ma remarque valait pour le "entirecolumn" qui n'apporte strictement
rien de
plus que "columns" (s'il s'agit d'une ligne ou une colonne ne faisant
évidemment
pas partie d'un tableau)
Quant à la boucle....
Suffit de faire un test sur une plage du style [A1:A20000] pour supprimer
les
lignes des cellules vides pour se rendre compte que
SpecialCells(xlCellTypeBlanks).... est bien plus performant...

Etc


Avatar
Daniel.C
De plus, "SpecialCells(xlCellTypeBlanks)" ne prend en compte que les
cellules vraiment vides, pas celles qui retournent une valeur "".

1) Je souhaite supprimer (et non masquer) toutes les colonnes dont les
cellules sont vides sur la première ligne (ligne 1), pour les 28 premières
colonnes seulement. Quel code me permettrait d'atteindre l'objectif?



2) Est-ce réalisable pour l'élimination des lignes lorsque la première
cellule (en colonne A) est vide, et ce pour les 32 premières lignes?



***************

Tu as déjà posé la question.......
Inutile et pas performant de faire une boucle

Réponse 1)
[A1:AB28].SpecialCells(xlCellTypeBlanks).Columns.Delete

Réponse 2)
[A1:A32].SpecialCells(xlCellTypeBlanks).Rows.Delete

Etc


Avatar
Daniel.C
Bonjour.
Il n'y a pas de combat, ni de chef en ce qui me concerne mais une
viviante confrontation d'idées. Quant à savoir quelle solution est la
meilleure ? comme l'a dit LSteph, autant éviter les boucles; utilise :
[A1:AB1].SpecialCells(xlCellTypeBlanks).EntireColumn.Delete
intellectuellement plus satisfaisante, si tu n'as que des valeurs en
A1:AB1; si tu as des formules dans la plage susceptibles de renvoyer
une valeur vide, utilise la boucle, plus universelle.
Voila.
Daniel

Bonjour à tous et heureux de voir que la question a tant stimulé vos cellules
grises. Le combat des chefs permet-il de conclure au code idéal pour le
béotien?

Merci à vous

Greg

"LSteph" a écrit dans le message de
news:
...au cas ou tu n'ai toujours pas vu le pb voici visuellement, les _
représentent les vides:

XX__XX
XXXXXX
_XXXXX
XXXXXX

Avec [A1:AB28].SpecialCells(xlCellTypeBlanks).Columns.Delete
tu obtiens:
XXXXXX
XXXXXX
XXXXXX
_X__XX


Avec [A1:AB1].SpecialCells(xlCellTypeBlanks).entirecolumn.Delete

XXXX
XXXX
_XXX
XXXX


Cordialement.

--
lSteph



On 16 juil, 11:49, "Caetera" <EtiennePloufCahé@wanadoo.fr> wrote:
> Réponse 1)
> [A1:AB28].SpecialCells(xlCellTypeBlanks).Columns.Delete

Il est évident qu'il fallait lire
[A1:AB1].SpecialCells(xlCellTypeBlanks).Columns.Delete
et
[A1:A32].SpecialCells(xlCellTypeBlanks).Rows.Delete

Mais ma remarque valait pour le "entirecolumn" qui n'apporte strictement
rien de
plus que "columns" (s'il s'agit d'une ligne ou une colonne ne faisant
évidemment
pas partie d'un tableau)
Quant à la boucle....
Suffit de faire un test sur une plage du style [A1:A20000] pour supprimer
les
lignes des cellules vides pour se rendre compte que
SpecialCells(xlCellTypeBlanks).... est bien plus performant...

Etc




Avatar
Caetera
>..au cas ou tu n'ai toujours pas vu le pb



Au cas où tu n'aurais toujours pas lu ce que j'ai écris au-dessus :

Bis Repetita :
"...Mais ma remarque valait pour le "entirecolumn" qui n'apporte strictement
rien de
plus que "columns" (s'il s'agit d'une ligne ou une colonne ne faisant évidemment
pas partie d'un tableau)...""

Ter Repetita :
"....(s'il s'agit d'une ligne ou une colonne ne faisant évidemment pas partie
d'un tableau)..."

Les propriétés "entirecolumn, entirerow" pas plus d'ailleurs que "Column, row"
n'ont de véritable importance et peuventt être omise puisqu'il s'agit en fait de
la suppression des cellules vides

Quater Repetita :
"....(s'il s'agit d'une ligne ou une colonne ne faisant évidemment pas partie
d'un tableau)..."

Etc
Avatar
LSteph
Bonjour,

Il n'y a pas plus de combat que de chefs, seulement confrontations de
solutions.
Tant que l'un de nous est dans l'erreur c'est qu' a priori il ne
voit pas encore pourquoi,
solutions et explications viendront à l'appui jusqu'à ce qu'il puisse
voir.
Et parfois,une autre solution viendra apporter encore une autre
possibilité.
Il n'y a pas plus de code ideal que de route qui mènerait partout.
Il y a celles qui mènent là où l'on veut aller.

--
lSteph


On 16 juil, 12:47, "Greg" wrote:
Bonjour à tous et heureux de voir que la question a tant stimulé vos
cellules grises. Le combat des chefs permet-il de conclure au code idéa l
pour le béotien?

Merci à vous

Greg

"LSteph" a écrit dans le message denews:54653157-f
...au cas ou tu n'ai toujours pas vu le pb voici visuellement, les _
représentent les vides:

XX__XX
XXXXXX
_XXXXX
XXXXXX

Avec [A1:AB28].SpecialCells(xlCellTypeBlanks).Columns.Delete
tu obtiens:
XXXXXX
XXXXXX
XXXXXX
_X__XX

Avec [A1:AB1].SpecialCells(xlCellTypeBlanks).entirecolumn.Delete

XXXX
XXXX
_XXX
XXXX

Cordialement.

--
lSteph

On 16 juil, 11:49, "Caetera" <EtiennePloufCahé@wanadoo.fr> wrote:



> > Réponse 1)
> > [A1:AB28].SpecialCells(xlCellTypeBlanks).Columns.Delete

> Il est évident qu'il fallait lire
> [A1:AB1].SpecialCells(xlCellTypeBlanks).Columns.Delete
> et
> [A1:A32].SpecialCells(xlCellTypeBlanks).Rows.Delete

> Mais ma remarque valait pour le "entirecolumn" qui n'apporte strictemen t
> rien de
> plus que "columns" (s'il s'agit d'une ligne ou une colonne ne faisant
> évidemment
> pas partie d'un tableau)
> Quant à la boucle....
> Suffit de faire un test sur une plage du style [A1:A20000] pour supprim er
> les
> lignes des cellules vides pour se rendre compte que
> SpecialCells(xlCellTypeBlanks).... est bien plus performant...

> Etc- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


1 2 3