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

Supprimer une ligne d'un tableau si vide

7 réponses
Avatar
Apitos
Bonjour =E0 tous,

Pour supprimer tous les =E9l=E9ments vides d'un tableau variant, j'utilise =
ce code, mais il d=E9clenche une erreur (Item.Delete) :

'----------------
j =3D 0
For Each Item In B$
If Len(Trim(Item)) =3D 0 Then
Item.Delete
Else
MsgBox "item " & j & " : " & Item
End If
j =3D j + 1
Next Item

'----------------

Merci.

7 réponses

Avatar
OLEGNA
Le 21/05/2012 13:25, Apitos a écrit :
Bonjour à tous,

Pour supprimer tous les éléments vides d'un tableau variant, j'utilise ce code, mais il déclenche une erreur (Item.Delete) :

'----------------
j = 0
For Each Item In B$
If Len(Trim(Item)) = 0 Then
Item.Delete
Else
MsgBox "item "& j& " : "& Item
End If
j = j + 1
Next Item

'----------------

Merci.



Bonjour à tous.
Je n'ai pas compris!
B$ est bien la collection des lignes de ton tableau ?
Si B$ est ton tableau lui-même, tu ne peux pas détruire de cellules dans
ton tableau!
???

--
OLEGNA
Avatar
Apitos
Bonsoir OLEGNA,

Si B$ est ton tableau lui-même, tu ne peux pas détruire de cellules d ans
ton tableau!



Alors j'ai essayé cette autre solution :

'---------------------------
'-- Récupération des éléments non vides du tableau B$ dans un nouve au tableau BB$

i = 0: j = 0
For Each Item In B$
If Len(Trim(Item)) > 0 Then
ReDim Preserve BB$(i)
BB$(i) = B$(j)
i = i + 1
End If
j = j + 1
Next Item
'---------------------------

Et ça marche !
Avatar
Jacquouille
Bonsoir
Ton tableau (a1:c10) est baptisé zn;
si(=SOMMEPROD(ESTVIDE(A1:C1)*1)=colonnes(zn);alors entire.rows.delete;passer
à la ligne suivante)

Si tu déchiffres cela, tu auras la solution à ton problème.
Il ne te reste plus qu'à mettre cela en grand breton.
tu dois compter les colonnes de ton tableau.
Ensuite, vérifier que la somme des tests (vrai) pour cel vide dans chaque
ligne est = au Nb de col. dans ce cas, delete la ligne.
Tu dois supprimer la ligne entière et non une cel. De plus, il te faudra
commencer le test par la dernière ligne de ton tableau pour remonter ( n =
lignes(zn) to 1 step -1 )
1000 excuses, mais je n'ai rien d'autre sous la main ......

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Apitos" a écrit dans le message de groupe de discussion :


Bonjour à tous,

Pour supprimer tous les éléments vides d'un tableau variant, j'utilise ce
code, mais il déclenche une erreur (Item.Delete) :

'----------------
j = 0
For Each Item In B$
If Len(Trim(Item)) = 0 Then
Item.Delete
Else
MsgBox "item " & j & " : " & Item
End If
j = j + 1
Next Item

'----------------

Merci.
Avatar
Apitos
Bonsoir Jaquouille,

Mon tableau est dynamique de type variant et ce n'est pas une plage sur une feuille.
Avatar
DanielCo
Bonjour,
Oui, tu ne peux pas le supprimer. Qu'est-ce que tu cherches à faire ?
Daniel


Bonjour à tous,

Pour supprimer tous les éléments vides d'un tableau variant, j'utilise ce
code, mais il déclenche une erreur (Item.Delete) :

'----------------
j = 0
For Each Item In B$
If Len(Trim(Item)) = 0 Then
Item.Delete
Else
MsgBox "item " & j & " : " & Item
End If
j = j + 1
Next Item

'----------------

Merci.
Avatar
Jacquouille
Bonjour
En employant des termes techniques, c'est précis, mais on risque de se
gourrer (cfr plage et cel d'un autre msg).
Un certain nombre de col et de lignes forment un tableau, une plage, une
zone, une base de données .........
Appelons et baptisons ce machin Zn. Quand tu grossis ou maigris d'un KG,
ton slip suit les méandres de ton corps, mais il reste quand même un slip.
Ici, que tu rajoutes une colonne ou des lignes, cela restera une base de
données, dont tu peux compter les lignes et les colonnes.
Quand tu auras ces deux renseignements, tu pars de la dernière ligne de Zn
et tu reviens vers la première (step -1).***
Au moyen de la formule proposée ou d'une autre, tu compares le Nb de col
avec le nombre de cel vides sur une même ligne. Si les deux coïncident,
c'est que la ligne est vide.
Si vide, ----> delete.
Next.
**** Excel balaye une plage ligne par ligne, en commençant en haut.
Si tu analyse le ligne 3, puis que tu la supprimes, c'est la quatrième qui
vient prendre sa place, MAIS elle ne sera pas analysée puisque Excel vient
de le faire. Donc, si elle est vide, elle ne sera pas supprimée.
tandis que en commençant par le bas, si on supprime une ligne, c'est une
ligne déjà analysée qui prend sa place. .....d'où le step -1.
PS Si ton tableau n'est pas une plage sur une feuille, qu'est-ce donc? Une
photo ?

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Apitos" a écrit dans le message de groupe de discussion :


Bonsoir Jaquouille,

Mon tableau est dynamique de type variant et ce n'est pas une plage sur une
feuille.
Avatar
Apitos
Bonsoir Jaquouille,

Tu me dira quel type de tableau j'utilise dans ce code :

'---------------------------
'-- Récupération des éléments non vides
'-- du tableau B$ dans un nouveau tableau BB$
Dim B$(), BB$()

i = 0: j = 0

For Each Item In B$
If Len(Trim(Item)) > 0 Then
ReDim Preserve BB$(i)
BB$(i) = B$(j)
i = i + 1
End If
j = j + 1
Next Item
'---------------------------