supprimer une ligne directement dans une macro

Le
jones
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #4669181
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



Philippe.R
Le #4669071
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" 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
jones
Le #4798771
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
Publicité
Poster une réponse
Anonyme