Suppresion ligne lorsqu´une colonne contient une certaine valeur

Résolu/Fermé
camcam - 21 oct. 2016 à 11:28
camcam1404 Messages postés 64 Date d'inscription mardi 13 décembre 2016 Statut Membre Dernière intervention 9 septembre 2019 - 13 déc. 2016 à 18:52
Bonjour,

J'utilise le code suivant mais je ne comprends pas pourquoi il ne fonctionne pas pour certaines feuilles de calcul alors que pour d'autre oui...

Sub supression_ligne()
Dim Num_Ligne As Long
Dim Last_line As Integer

Last_line = Range("A1").End(xlDown).Row

For Num_Ligne = 1 To Last_line

If Cells(Num_Ligne, 4).Value = "0" Then Cells(Num_Ligne, 4).EntireRow.Delete


Next Num_Ligne

End Sub



3 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 21/10/2016 à 11:55
re,

inutile de boucler sur toutes les lignes même en remontant! ! !

et ne pas oublier de figer l'écran

Option Explicit
'---------------------------------------------
Sub destroy()
Dim Nbre As Long, Cptr As Long

Application.ScreenUpdating = False
With ActiveSheet
Nbre = Application.CountIf(.Columns("A"), 0) 'ou "0" ???
For Cptr = 1 To Nbre
.Rows(.Columns("A").Find(0, Cells(Cells.Rows.Count, "A")).Row).Delete
'ou ....Find("0"........
Next
End With
End Sub


 Michel
1
camcam1404 Messages postés 64 Date d'inscription mardi 13 décembre 2016 Statut Membre Dernière intervention 9 septembre 2019
13 déc. 2016 à 18:52
Merci pour la réponse !
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
21 oct. 2016 à 11:37
bonjour,
"0"= texte ou chiffre ?
Combien de lignes ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
21 oct. 2016 à 11:37
Bonjour,
Lorsque tu supprimes une ligne... les lignes d'en dessous remontent ... ce qui fausse la boucle.
Pour palier à ça il faut faire la boucle en partant du bas puis en remontant.

Essaye ça :

Sub supression_ligne() 
Dim Num_Ligne As Long 
Dim Last_line As Integer 

Last_line = Range("A1").End(xlDown).Row 

For Num_Ligne = Last_line to 1 Step -1 

If Cells(Num_Ligne, 4).Value = "0" Then Cells(Num_Ligne, 4).EntireRow.Delete 


Next Num_Ligne 

End Sub 

0