Suppresion ligne lorsqu´une colonne contient une certaine valeur

Résolu
camcam -  
camcam1404 Messages postés 64 Date d'inscription   Statut Membre Dernière intervention   -
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



A voir également:

3 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
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   Statut Membre Dernière intervention  
 
Merci pour la réponse !
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
bonjour,
"0"= texte ou chiffre ?
Combien de lignes ?
0
jordane45 Messages postés 38483 Date d'inscription   Statut Modérateur Dernière intervention   4 746
 
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