VBA : Supprimer plusieurs lignes [Résolu]

- - Dernière réponse :  New_VBA_User - 23 août 2019 à 16:53
Bonjour,

J'aimerai faire un filtre avec un bouton pour supprimer des lignes qui contiennent le mot.
"Poids de contrôle" sachant que dans mon classeur j'ai plusieurs lignes qui ont le mot Poids de contrôle,
ex: Poids de contrôle 12
Poids de contrôle 455

J'aimerai supprimer tout les ligne en même temps.

les ligne sont dans la colonne C


j'utilise le code suivant:

Private Sub CommandButton1_Click()
Dim del As Integer

With ThisWorkbook.Sheets("Sheet1")
For del = .Range("C" & .Rows.Count).End(xlUp).Row To 2 Step -1
'je travaille sur la colonne C
If .Range("C" & del).Value = "Poids de contrôle" Then
.Rows(del).Delete
End If

Next del
End With

End Sub

ça ne marche pas.

Merci de votre aide.
Afficher la suite 

2 réponses

Messages postés
8717
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 octobre 2019
436
0
Merci
bonjour, merci d'utiliser les balises de code quand tu partages du code.
"ça ne marche pas": message d'erreur, comportement inattendu, ...?
as-tu exécuté ton code en pas à pas pour comprendre ce qu'il faisait?
bonjour,

je n'ai pas d'erreur, mais je n'arrive pas à supprimer les lignes qui ont le mot par ex.Poids de contrôle 23

ca va supprimer les lignes qui ont le mot exact sans rien après.
Commenter la réponse de yg_be
Messages postés
11206
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
17 octobre 2019
1457
0
Merci
Bonjour

Normal que cela ne fonctionne pas tu fais rechercher comme valeur de la cellule Poids de contrôle alors que c'est Poids de contrôle 455

Remplace ta boucle For Next par celel-ci
For del = .Range("C" & .Rows.Count).End(xlUp).Row To 2 Step -1
If Len(Application.WorksheetFunction.Substitute(.Range("C" & del).Value, "Poids de contrôle", "")) < Len(.Range("C" & del).Value) Then .Rows(del).Delete
Next del

on compare la longueur des chaines : celle de la cellule dans laquelle Poids de contrôle est remplacé par du vide et celle sans suppression, si la 1ere est plus courte que la 2nde on efface la ligne

Cdlmnt
Via
f894009
Messages postés
14794
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
17 octobre 2019
1177 -
Bonjour a vous tous,

avec Instr, me parait plus simple, mais c'est un point de vue

Private Sub CommandButton1_Click()
    Dim del As Integer

    With ThisWorkbook.Sheets("Sheet1")
        For del = .Range("C" & .Rows.Count).End(xlUp).Row To 2 Step -1
            'je travaille sur la colonne C
            If InStr(.Range("C" & del), "Poids de contrôle") Then
                .Rows(del).Delete
            End If
        Next del
    End With
End Sub
Les 2 solutions proposés marchent. Super.
Commenter la réponse de via55