code pour une recherche aproximative

gunm

XLDnaute Nouveau
Bonjour tous le monde.

Voici mon problème. J'aimerais faire une recherche via une macro. Le but est de taper le mot rechercher dans une boite de dialogue, ensuite il parcours la plage de donnée et il me la colorie. Mais ma recherche n'est pas forcément égale à la cellule.
Par exemple j'aimerai rechercher "Auch"
et s'il y a une cellule où il y a "auchan" je voudrais qu'il me la prenne en compte
Or dans mon code je met le signe "=" ce qui me pose problème.

Je pense que je doit ajouter a un moment donner le signe * mais je ne sais pas ou et comment.



voici mon code :

Sub recherche()

Dim societe As String
societe = InputBox("quel société recherché ?", "Recherche")

For i = 2 To 10
entreprise = Cells(i, 2).Value
If entreprise = societe Then
Cells(i, 2).interior.color=vbred
End If
end sub


merci de votre réponse
 

Fred0o

XLDnaute Barbatruc
Re : code pour une recherche aproximative

Bonsoir Gunm,

Voici une modification de ton code qui réalise ce que tu souhaites :
VB:
Sub recherche()
    Dim societe As String
    societe = InputBox("quel société recherché ?", "Recherche")
    For i = 2 To 10
        entreprise = Cells(i, 2).Value
        If InStr(1, LCase(entreprise), LCase(societe)) > 0 Then
            Cells(i, 2).Interior.Color = vbRed
        End If
    Next
End Sub

Il manquait un "Next" dans ton code.

A+

Edit : Salut Jean-Marcel.
 

Hellboy

XLDnaute Accro
Re : code pour une recherche aproximative

Sub recherche()

Dim societe As String
Dim LaCellTrouve As Integer
societe = InputBox("quel société recherché ?", "Recherche")

If Not IsError(LaCellTrouve = Range("C:C").Find(What:=societe, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xl
Next, MatchCase:=True, _
SearchFormat:=
False).Row) Then
Cells(LaCellTrouve, 2).Interior.Color = vbRed
End If
End Sub

Une façon de le faire....
 
Dernière édition:

gunm

XLDnaute Nouveau
Re : code pour une recherche aproximative

merci pour vos réponses, ça marche a la perfection ! et super rapide en plus :D

quelqu un pourrais m expliquer cette ligne du coup ?
InStr(1, LCase(entreprise), LCase(societe))

merci à vous !
 

Fred0o

XLDnaute Barbatruc
Re : code pour une recherche aproximative

Re-bonsoir,

Je t'invite à positionner ton curseur sur Instr puis à appuyer sur la touche <F1>. L'aide EXCEL qui est très bien faite te dira :
InStr, fonction

Voir aussi Exemple Particularités
Renvoie une valeur de type Variant (Long) indiquant la position de la première occurrence d'une chaîne à l'intérieur d'une autre chaîne.
Syntaxe
InStr([start, ]string1, string2[, compare])
La syntaxe de la fonction InStr comprend les arguments suivants :
Élément Description start Facultatif. Expression numérique qui définit la position de départ de chaque recherche. Si cet argument est omis, la recherche commence au premier caractère. Si l'argument start contient une valeur de type Null, une erreur se produit. L'argument start est obligatoire si l'argument compare est indiqué. string1 Expression de chaîne dans laquelle la recherche est effectuée. string2 Expression de chaîne recherchée. compare Facultatif. Indique le type de comparaison de chaînes. Si l'argument compare est de type Null, une erreur se produit. Si l'argument compare est omis, la valeur de l'instruction Option Compare détermine le type de comparaison. Indiquez un LCID (LocaleID) correct pour respecter les règles locales spécifiques à la comparaison.

Ensuite, fais la même chose avec LCase (qui transforme tout en minuscule).

A+
 

Statistiques des forums

Discussions
312 765
Messages
2 091 892
Membres
105 084
dernier inscrit
lca.pertus