VBA - Methode Find

Fermé
RussellD Messages postés 57 Date d'inscription jeudi 18 mars 2010 Statut Membre Dernière intervention 6 septembre 2010 - 18 mai 2010 à 17:16
 superip69 - 21 mai 2010 à 11:58
Bonjour à tous,

je programme des macros en VBA sur Excel 2003, et aimerais avoir un peu d'aide concernant la méthode "Find".
J'utilise actuellement un code qui me permet de chercher dans la colonne L et d'activer la cellule contenant la valeur demandée (chosiie dans un ComboBox). La cellule est ensuite supprimée, ainsi que les 3 qui se trouvent à sa droite. Cela donne ceci :

X = ComboBox1.Value
With Range("L:L")
Set c = .Find(X, , xlValues, xlWhole, xlByColumns)
c.Activate
End With
ActiveCell.Offset(0, 3).Delete
ActiveCell.Offset(0, 2).Delete
ActiveCell.Offset(0, 1).Delete
ActiveCell.Delete


le problème, c'est qu'il ne cherche pas la valeur excate.. Par exemple, si vous lui demandez de chercher la valeur "voiture", et que vous avez dans la colonne L les valeurs, entre autres, "voiture" et "voiture de sport", les 2 vont être supprimées.. Je souhaiterais que seule la valeur exacte (donc "voiture") le soit.

Quelqu'un peut-il me donner un coup de main?

D'avance merci pour vos réponses,

Cordialement

2 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
18 mai 2010 à 17:50
Bonjour,
Essaye avec cette macro à mettre dans le module de la feuille.
Option Explicit
Dim Chercher As String

Sub Supprime()
Dim Lig As Long, DerLig As Long
Chercher = "Voiture"
    DerLig = Range("L65535").End(xlUp).Row
    For Lig = DerLig To 1 Step -1 ' 1 = première ligne de la recherche
        'UCase c'est pour ne pas tenir compte de la case maju ou minus
        If UCase(Cells(Lig, "L")) = UCase(Chercher) Then
            Range(Cells(Lig, "L"), Cells(Lig, "O")).Delete Shift:=xlUp
            Lig = Lig - 1
        End If
    Next Lig
End Sub

Tu dois bien sûr, initialiser Chercher quelque part .
A+
0
Bonjour,

ou alors simplement un test de longueur de chaine de caractère :

if len(X)=len(c.value) then c.activate

++
0