VBA - Methode Find
RussellD
Messages postés
60
Statut
Membre
-
superip69 -
superip69 -
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 :
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
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
-
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+ -
Bonjour,
ou alors simplement un test de longueur de chaine de caractère :
if len(X)=len(c.value) then c.activate
++