Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA, Supprimer ligne selon un critère

  • Initiateur de la discussion Initiateur de la discussion richert90
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
15
Affichages
784
Réponses
5
Affichages
910
Réponses
10
Affichages
661
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…