Reperer une valeur texte

Bonjour,

Gros probleme sur mon projet : j' ai un fichier en feuille 1 et un autre en feuille 2

La feuille 1 contient en colonne A une liste de nom d'entreprise et en colonne B une liste de valeur numerique

La feuille 2 contient en colonne A une liste de nom d'entreprise et en colonne B une liste de valeur numerique

Cependant l'orthographe des noms peut differrer de la feuille 1 a la feuille 2 par exemple je peux avoir RENAULT en feuille 1 et RENAULT GR en feuille 2

Mon objectif est que ma macro repere les noms d'entreprise correspondant en feuille 1 et 2 malgres qu il ne soit pas ecrit de la meme facon donc dans notre exemple Renault puis que pour chaque valeur qui match alors je veux afficher la valeur correspondante a l entreprise de la feuille 2 en feuille 1 colonne C .

Pouvez vous m'aider svp mon principal probleme etant que les noms d'entreprise peuvent ne pas etre ecrit pareil, j'ai le code suivant mais il ne vas detecter que les cellules exactement identiques :

Dim ENT1 As Range

Dim ENT2 As Range

Dim VAL as Range

Dim A As Range

Dim i As Integer

Set ENT1 = Worksheets("Sheet1").Range("A2:A350")

Set ENT2 = Worksheets("Sheet2").Range("A2:A350")

Set VAL = Worksheets("Sheet1").Range("C2:C350")

For Each A In ENT2

For i = 1 To 350

If A.Value = ENT1.Cells(i).Value Then

VAL.Cells(i).Value = A.Offset(0, 1).Value

End If

Next i

Next A

Merci bien

Salut Hugo,

essaie ce genre de truc :

sFlag = "Renault" & " *"
sFlag1 ="Renault GR"'
If sFlag1 Like sFlag Then ...

Il faudra sans doute calculer, pour chaque nom d'entreprise testé, lequel, dans chaque feuille, est le plus court!

En espérant aussi qu'il y ait un espace entre les différentes orthographes!

A l'heure actuelle, c'est le moyen le plus facile que je connaisse!

A l'aide, les as!

A+

Salut,

C'est quasiment le seul en pareil cas... !

Mais Like est très efficace (et trop méconnu). On peut faire des modèle de comparaisons très adaptés, sachant que * remplace 1 ou plusieurs caractères et peut être positionné devant, derrière, à l'intérieur, ? remplace 1 caractère avec les mêmes possiblités, # remplace 1 caractère numérique, et en outre on peut créer des options pour le cas ou un caractère pourrait être substitué à un autre, en mettant entre crochets les caractères susceptibles d'intervenir à une position donnée...

Cordialement.

curulis57 a écrit :

Il faudra sans doute calculer, pour chaque nom d'entreprise testé, lequel, dans chaque feuille, est le plus court!

En espérant aussi qu'il y ait un espace entre les différentes orthographes!

Oui, il faudra faire un split(_____," ") de chaque terme.

L'énoncé ne précise pas ce que l'on fait quand plusieurs valeurs sont trouvées !

J'en ai fait la somme ...

Sub Rechercher()

For i = 1 To Sheets("Feuil1").Cells(Application.Rows.Count, 1).End(xlUp).Row
Debug.Print i & " : " & Sheets("Feuil1").Cells(i, 1).Value
    tab1 = Split(UCase(Sheets("Feuil1").Cells(i, 1).Value) & " ", " ")
    For ii = 0 To UBound(tab1) - 1
        For j = 1 To Sheets("Feuil2").Cells(Application.Rows.Count, 1).End(xlUp).Row
            If UCase(Sheets("Feuil2").Cells(j, 1).Value) Like tab1(ii) Then
                Sheets("Feuil1").Cells(i, 3) = Sheets("Feuil1").Cells(i, 3) + Sheets("Feuil2").Cells(i, 2)
            End If
        Next
    Next
Next

End Sub
6hugo.xlsm (17.16 Ko)

Bonjour,

Tu as la distance de Levenshtein qui te donne une note fonction de l'écartement de 2 chaines.

En vba : https://sysmod.wordpress.com/2012/07/27/string-fuzzy-matching-in-vba-and-vb-net/

Avec un addin de MS, beaucoup plus rapide mais il faut pouvoir l'installer sur le poste :

Fuzzy Lookup : https://www.microsoft.com/en-us/download/details.aspx?id=15011

eric

Merci pour toutes vos infos, ca m ' a beaucoup aide

Rechercher des sujets similaires à "reperer valeur texte"