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

supprimer une ligne directement dans une macro

3 réponses
Avatar
jones
Bonjour,
Voici mon probl=E8me. J'ai une base de donn=E9e dans un tableau excel. Je
veux ex=E9cuter une macro qui dit de checker la pr=E9sence d'un "X" dans
la 2=E8me colonne et ce d=E8s la troisi=E8me ligne de mon tableau et sur
toutes les lignes suivantes. S'il en trouve un il ne fait rien, mais
s'il le trouve pas il doit cacher la ligne o=F9 le "X" est manquant.

Le code est le suivant :

nombreligne =3D Range("A1").CurrentRegion.Rows.Count

For ctr =3D 1 To nombreligne

If Cells(ctr + 2, 2) <> "X" Then
Cells(ctr + 2, 2).EntireRow.Hidden =3D True
End If

Next

En faisant ceci =E7a marche, mais je ne fais qu'un hide des lignes, je
voudrais maintenant faire la m=EAme chose en deletant les lignes o=F9 il
n'y a pas de "X".

Le code devrait =EAtre :

nombreligne =3D Range("A1").CurrentRegion.Rows.Count

For ctr =3D 1 To nombreligne

If Cells(ctr + 2, 2) <> "X" Then
Cells(ctr + 2, 2).EntireRow.delete
End If

Next

Mais apparemment il se perd dans le calcul des lignes et m'annule des
lignes sans tenir compte si le "X" est bien dans la colonne 2.

Comment faire pour que les lignes soient correctement supprim=E9es ?

D'avance merci =E0 la personne qui trouvera une solution.

Bonne journ=E9e

3 réponses

Avatar
isabelle
bonjour jones,

pour suprimer les lignes il faut commencer par la fin en remontant.

For ctr = nombreligne To 1 Step -1

isabelle



Bonjour,
Voici mon problème. J'ai une base de donnée dans un tableau excel. Je
veux exécuter une macro qui dit de checker la présence d'un "X" dans
la 2ème colonne et ce dès la troisième ligne de mon tableau et sur
toutes les lignes suivantes. S'il en trouve un il ne fait rien, mais
s'il le trouve pas il doit cacher la ligne où le "X" est manquant.

Le code est le suivant :

nombreligne = Range("A1").CurrentRegion.Rows.Count

For ctr = 1 To nombreligne

If Cells(ctr + 2, 2) <> "X" Then
Cells(ctr + 2, 2).EntireRow.Hidden = True
End If

Next

En faisant ceci ça marche, mais je ne fais qu'un hide des lignes, je
voudrais maintenant faire la même chose en deletant les lignes où il
n'y a pas de "X".

Le code devrait être :

nombreligne = Range("A1").CurrentRegion.Rows.Count

For ctr = 1 To nombreligne

If Cells(ctr + 2, 2) <> "X" Then
Cells(ctr + 2, 2).EntireRow.delete
End If

Next

Mais apparemment il se perd dans le calcul des lignes et m'annule des
lignes sans tenir compte si le "X" est bien dans la colonne 2.

Comment faire pour que les lignes soient correctement supprimées ?

D'avance merci à la personne qui trouvera une solution.

Bonne journée



Avatar
Philippe.R
Bonsoir,
pour la suppression de lignes, point de salut si on ne part pas du bas ; il
faudrait donc adapter ainsi :

nombreligne = Range("A1").CurrentRegion.Rows.Count
'ou bien nombreligne = range("a6543").end(xlup).row en supposant la colonne
a comme la plus longue
For ctr = nombreligne to 3 step -1

If Cells(ctr, 2) <> "X" Then
Cells(ctr, 2).EntireRow.delete
End If

Next ctr

--
Avec plaisir
Philippe.R
"jones" a écrit dans le message de
news:
Bonjour,
Voici mon problème. J'ai une base de donnée dans un tableau excel. Je
veux exécuter une macro qui dit de checker la présence d'un "X" dans
la 2ème colonne et ce dès la troisième ligne de mon tableau et sur
toutes les lignes suivantes. S'il en trouve un il ne fait rien, mais
s'il le trouve pas il doit cacher la ligne où le "X" est manquant.

Le code est le suivant :

nombreligne = Range("A1").CurrentRegion.Rows.Count

For ctr = 1 To nombreligne

If Cells(ctr + 2, 2) <> "X" Then
Cells(ctr + 2, 2).EntireRow.Hidden = True
End If

Next

En faisant ceci ça marche, mais je ne fais qu'un hide des lignes, je
voudrais maintenant faire la même chose en deletant les lignes où il
n'y a pas de "X".

Le code devrait être :

nombreligne = Range("A1").CurrentRegion.Rows.Count

For ctr = 1 To nombreligne

If Cells(ctr + 2, 2) <> "X" Then
Cells(ctr + 2, 2).EntireRow.delete
End If

Next

Mais apparemment il se perd dans le calcul des lignes et m'annule des
lignes sans tenir compte si le "X" est bien dans la colonne 2.

Comment faire pour que les lignes soient correctement supprimées ?

D'avance merci à la personne qui trouvera une solution.

Bonne journée
Avatar
jones
Alors un grand merci pour vos réponses, c'est parfait, ça marche.
C'est vrai que j'avais pas pensé à partir depuis le bas.

Merci beaucoup et bonne semaine