VBA, Supprimer ligne selon un critère

richert90

XLDnaute Occasionnel
Bonsoir à tout le monde;

J'arrive pas à supprimer des lignes d'un tableau en appliquant un critère; voila 2 essais que j'ai effectué


Code:
 For s = 2 To 300
        If Sheets("carac").Cells(s, 4) <> 2 Then
            Rows(s & ":" & s).Select
            Selection.Delete Shift:=xlUp
        End If
    Next s
Ceci ne marche pas ( pourtant je me suis basée sur une macro): j'ai de slignes avec un "2" en 4ieme colonne encore présent, je ne sais pas pourquoi

2ieme code:
Code:
Sub suppr()
    Dim i As Integer
         
    For i = 2 To 30
        If Sheets("carac").Cells(i, 4) <> 2 Then
            Rows(i).Delete
            i = i - 1
        End If
    Next
    End Sub
Celui la fait beuger excel à chaque fois ...

Ce que je veux au final c'est pas de ligne vide dans le tableau, mais que les lignes supprimées soient remplacées en " remontant" les lignes suivantes ( d'ou le Selection.Delete Shift:=xlUp dans le premier code)

Merci de m'aider
 

CBernardT

XLDnaute Barbatruc
Re : VBA, Supprimer ligne selon un critère

Bonsoir richert90 et le forum,

Essaye la macro suivante :
Sub SupprLig()
Dim i As Integer
Application.ScreenUpdating = False
With Sheets("Carac")
For i = 30 To 2 Step -1
If .Cells(i, 4) <> 2 Then
.Rows(i).Delete Shift:=xlUp
End If
Next
End With
End Sub
 

richert90

XLDnaute Occasionnel
Re : VBA, Supprimer ligne selon un critère

Bonjour, J'ai un petit problème, le code marche mais le nombre "2" dans l’instruction doit être choisi avec une liste déroulante dans un userform donc j'ai adapté le code t:

Code:
Private Sub bouton_valider_Click()

    Dim s As Integer
    
        Application.ScreenUpdating = False
        With Sheets("Carac")
            For s = i To 2 Step -1 'i correspondant à la dernière ligne de la base de données
                If .Cells(s, 4) <> base_de_connaissance.zl_1.Value Then 'base_ de_ connaissance est le nom du userform et zl_1 le nom de la liste deroulante
                    .Rows(s).Delete Shift:=xlUp
                End If
             Next
        End With
        base_de_connaissance.Hide

End Sub

Mais le code ne fonctionne, pas, toutes les lignes sont supprimées à chaque fois
Merci de m'aider
 
Dernière édition:

Discussions similaires