Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recherche un mot qui contient certain caratere

3 réponses
Avatar
TALL Yaya
Bonjours,

Je souhaite faire un travail de rapprochement :

En faite j'ai deux tableaux identique (mise en forme), le premier qui
contient des éléments saisi par un opérateur,
Le tableau :
sur deux colonne (colonne A : Libelle qui varie colonne B: Montant)

Je voudrai Excel me souligne par exemple ou m'extrait des donnés identique,
ou des donnés qui contienne un certain nombre caractère identique entre les
deux tableau, sachant que sur le tableau 2 différent mode de saisi (ex.
Dupont Jean Francois peux être écrit : Jean Francois Dupont ou Francous Jean
Dupond mais le montant permettrai de distingue...,

Cela me permet de comparer les deux tableaux (la concordance).

Est ce que c'est possible ?

Pour plus de renseignement je suis prêt a vous envoie un model.

Merci pour votre aide & bonne réception.

3 réponses

Avatar
Daniel.M
Bonjour,

La branche d'étude qui traite de cela s'appelle "approximate string matching" et
son concept clé est l'"edit-distance", à savoir combien de 'manipulations'
(ajouter, enlever, substituer) ai-je besoin de faire sur une chaîne pour la
transformer en une autre.

Ton cas me semble assez simple, i.e. comparer les lettres (peu importe leur
position) d'une chaîne avec une autre et retourner un INDICE de concordance.

Cependant, ce genre de manipulation s'implante beaucoup plus facilement par VBA
que par formule Excel.

La stratégie est:
1.Trouver une petite fonction, TL(), qui traduit une chaîne en tableau est un
tableau du nombre d'occurences de chaque lettre (caractère ascii de 0 à 255).

2.Utiliser cette fonction sur S1 et S2 (les 2 chaines à comparer) pour donner
les tableaux V1 et V2 et comparer les différences de fréquences des lettres en
additionnant les différences de façon à construire un petit indice, cmpTab() qui
s'échelonne de 0% (faible concordance) à 100% (forte concordance).

3.Bâtir une fonction, IndiceCmpPlg(), qui cherche dans une Plage la chaîne (S2)
qui correspond (+ haut indice de concordance) avec S1 et retourner sa position.

4.Utiliser cette position pour retourner S2.
=INDEX(Plage;IndiceCmpPlg(Plage,S1))


'1.

Public Function TL(ByVal S As String) As Variant
Dim V(0 To 255), i%, j%, C%

j = Len(S)
For i = 1 To j
C = Asc(Mid(S, i, 1))
V(C) = V(C) + 1
Next i
TL = V
End Function

'2.
Public Function IndiceCmp(s1 As String, s2 As String) As Double
IndiceCmp = cmpTab(TL(s1), Len(s1), TL(s2), Len(s2))
End Function

Public Function cmpTab(ByRef V1 As Variant, ByRef len1 As Integer, _
ByRef V2 As Variant, ByRef len2 As Integer) As Double
Dim i As Integer, cDiff As Integer, nbLet As Integer

nbLet = IIf(len1 < len2, len1, len2)
If nbLet = 0 Then Exit Function

cDiff = 0
For i = 0 To 255
cDiff = cDiff + Abs(V1(i) - V2(i))
Next i

cmpTab = 1 - (cDiff / (2 * nbLet))
End Function

3.
' Trouve dans la Plage, la cellule qui est la plus rapprochée de Chaine
' et retourne son indice dans la plage
Public Function IndiceCmpPlg(Plage As Range, Chaine As String) As Long

Dim C As Range, i As Long, j As Long, temp As Double, LeMax As Double
Dim V1 As Variant, len1 As Integer
LeMax = 0: i = 0
V1 = TL(Chaine): len1 = Len(Chaine)

For Each C In Plage
i = i + 1
temp = cmpTab(V1, len1, TL(C), Len(C))
If temp > LeMax Then LeMax = temp: IndiceCmpPlg = i
Next C
End Function

Salutations,

Daniel M.


"TALL Yaya" wrote in message
news:%
Bonjours,

Je souhaite faire un travail de rapprochement :

En faite j'ai deux tableaux identique (mise en forme), le premier qui
contient des éléments saisi par un opérateur,
Le tableau :
sur deux colonne (colonne A : Libelle qui varie colonne B: Montant)

Je voudrai Excel me souligne par exemple ou m'extrait des donnés identique,
ou des donnés qui contienne un certain nombre caractère identique entre les
deux tableau, sachant que sur le tableau 2 différent mode de saisi (ex.
Dupont Jean Francois peux être écrit : Jean Francois Dupont ou Francous Jean
Dupond mais le montant permettrai de distingue...,

Cela me permet de comparer les deux tableaux (la concordance).

Est ce que c'est possible ?

Pour plus de renseignement je suis prêt a vous envoie un model.

Merci pour votre aide & bonne réception.




Avatar
TALL Yaya
Merci pour ton aide je suis en train d'essayer de comprendre ton message...

Bonne reception,
"Daniel.M" a écrit dans le message de
news: PPKeb.81064$
Bonjour,

La branche d'étude qui traite de cela s'appelle "approximate string
matching" et

son concept clé est l'"edit-distance", à savoir combien de 'manipulations'
(ajouter, enlever, substituer) ai-je besoin de faire sur une chaîne pour
la

transformer en une autre.

Ton cas me semble assez simple, i.e. comparer les lettres (peu importe
leur

position) d'une chaîne avec une autre et retourner un INDICE de
concordance.


Cependant, ce genre de manipulation s'implante beaucoup plus facilement
par VBA

que par formule Excel.

La stratégie est:
1.Trouver une petite fonction, TL(), qui traduit une chaîne en tableau est
un

tableau du nombre d'occurences de chaque lettre (caractère ascii de 0 à
255).


2.Utiliser cette fonction sur S1 et S2 (les 2 chaines à comparer) pour
donner

les tableaux V1 et V2 et comparer les différences de fréquences des
lettres en

additionnant les différences de façon à construire un petit indice,
cmpTab() qui

s'échelonne de 0% (faible concordance) à 100% (forte concordance).

3.Bâtir une fonction, IndiceCmpPlg(), qui cherche dans une Plage la chaîne
(S2)

qui correspond (+ haut indice de concordance) avec S1 et retourner sa
position.


4.Utiliser cette position pour retourner S2.
=INDEX(Plage;IndiceCmpPlg(Plage,S1))


'1.

Public Function TL(ByVal S As String) As Variant
Dim V(0 To 255), i%, j%, C%

j = Len(S)
For i = 1 To j
C = Asc(Mid(S, i, 1))
V(C) = V(C) + 1
Next i
TL = V
End Function

'2.
Public Function IndiceCmp(s1 As String, s2 As String) As Double
IndiceCmp = cmpTab(TL(s1), Len(s1), TL(s2), Len(s2))
End Function

Public Function cmpTab(ByRef V1 As Variant, ByRef len1 As Integer, _
ByRef V2 As Variant, ByRef len2 As Integer) As Double
Dim i As Integer, cDiff As Integer, nbLet As Integer

nbLet = IIf(len1 < len2, len1, len2)
If nbLet = 0 Then Exit Function

cDiff = 0
For i = 0 To 255
cDiff = cDiff + Abs(V1(i) - V2(i))
Next i

cmpTab = 1 - (cDiff / (2 * nbLet))
End Function

3.
' Trouve dans la Plage, la cellule qui est la plus rapprochée de Chaine
' et retourne son indice dans la plage
Public Function IndiceCmpPlg(Plage As Range, Chaine As String) As Long

Dim C As Range, i As Long, j As Long, temp As Double, LeMax As Double
Dim V1 As Variant, len1 As Integer
LeMax = 0: i = 0
V1 = TL(Chaine): len1 = Len(Chaine)

For Each C In Plage
i = i + 1
temp = cmpTab(V1, len1, TL(C), Len(C))
If temp > LeMax Then LeMax = temp: IndiceCmpPlg = i
Next C
End Function

Salutations,

Daniel M.


"TALL Yaya" wrote in message
news:%
Bonjours,

Je souhaite faire un travail de rapprochement :

En faite j'ai deux tableaux identique (mise en forme), le premier qui
contient des éléments saisi par un opérateur,
Le tableau :
sur deux colonne (colonne A : Libelle qui varie colonne B: Montant)

Je voudrai Excel me souligne par exemple ou m'extrait des donnés
identique,


ou des donnés qui contienne un certain nombre caractère identique entre
les


deux tableau, sachant que sur le tableau 2 différent mode de saisi (ex.
Dupont Jean Francois peux être écrit : Jean Francois Dupont ou Francous
Jean


Dupond mais le montant permettrai de distingue...,

Cela me permet de comparer les deux tableaux (la concordance).

Est ce que c'est possible ?

Pour plus de renseignement je suis prêt a vous envoie un model.

Merci pour votre aide & bonne réception.








Avatar
Daniel.M
Salut,

Si tu as besoin de précisions, rapplique avec ce qui fait problème pour toi.

Salutations,

Daniel M.

"TALL Yaya" wrote in message
news:%
Merci pour ton aide je suis en train d'essayer de comprendre ton message...

Bonne reception,