OVH Cloud OVH Cloud

comparer des chaines quasi identiques

11 réponses
Avatar
Oliv'
Bonjour,
existe t'il une fonction VBA Ou non permettant de comparer des chaines de
caractères quasi identiques.

exemple : "olivier" et "oliveir" =quasi identique
et "olivier" et "marcel" = pas identique.

c'est pour trouver des erreurs de frappes dans des noms et prénoms.

Merci d'avance.

--
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
les sites références:
Excel :http://www.excelabo.net http://xcell05.free.fr/
http://dj.joss.free.fr/
http://frederic.sigonneau.free.fr/ http://www.excel-vba-francais.com/
Word : http://faqword.free.fr/
Outlook :http://faq.outlook.free.fr/
Sql :http://sqlpro.developpez.com/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

10 réponses

1 2
Avatar
isabelle
bonjour Oliv',

=EXACT(A1;B1)

isabelle

Bonjour,
existe t'il une fonction VBA Ou non permettant de comparer des chaines de
caractères quasi identiques.

exemple : "olivier" et "oliveir" =quasi identique
et "olivier" et "marcel" = pas identique.

c'est pour trouver des erreurs de frappes dans des noms et prénoms.

Merci d'avance.



Avatar
FILK
Bonjour Oliv,

Jen e pense pas qu'une telle fonction existe. Le coté "à peu pret pareil"
est relativement vague.

Ceci étant, il me semble qu'il existe sur le net des algorithmes qui gerent
à leur manière l'interprétation de la fonction "à peu pret pareil", pas
forcement sur vb; mais bon, ca peut valoir le coup de reprendre les idées si
ta fonction est essentielle. Je suppose aussi que l'algorithme est associé à
la langue utilisée.

Bon courage dans tes recherches.

Philippe


Philippe.


Bonjour,
existe t'il une fonction VBA Ou non permettant de comparer des chaines de
caractères quasi identiques.

exemple : "olivier" et "oliveir" =quasi identique
et "olivier" et "marcel" = pas identique.

c'est pour trouver des erreurs de frappes dans des noms et prénoms.

Merci d'avance.

--
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
les sites références:
Excel :http://www.excelabo.net http://xcell05.free.fr/
http://dj.joss.free.fr/
http://frederic.sigonneau.free.fr/ http://www.excel-vba-francais.com/
Word : http://faqword.free.fr/
Outlook :http://faq.outlook.free.fr/
Sql :http://sqlpro.developpez.com/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~






Avatar
Oliv'
Bonjour Oliv,

Jen e pense pas qu'une telle fonction existe. Le coté "à peu pret
pareil" est relativement vague.


oui je sais bien :-)))

Ceci étant, il me semble qu'il existe sur le net des algorithmes qui
gerent à leur manière l'interprétation de la fonction "à peu pret
pareil", pas forcement sur vb; mais bon, ca peut valoir le coup de
reprendre les idées si ta fonction est essentielle. Je suppose aussi
que l'algorithme est associé à la langue utilisée.


je vais chercher du coté des algorithmes BAYESIENS.

et essayer de voir ce que je peux faire avec ce code
http://frederic.sigonneau.free.fr/code/Fonctions/CompareChaines.txt

Bon courage dans tes recherches.
Merci


Philippe


Philippe.


Bonjour,
existe t'il une fonction VBA Ou non permettant de comparer des
chaines de caractères quasi identiques.

exemple : "olivier" et "oliveir" =quasi identique
et "olivier" et "marcel" = pas identique.

c'est pour trouver des erreurs de frappes dans des noms et prénoms.

Merci d'avance.

--
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
les sites références:
Excel :http://www.excelabo.net http://xcell05.free.fr/
http://dj.joss.free.fr/
http://frederic.sigonneau.free.fr/ http://www.excel-vba-francais.com/
Word : http://faqword.free.fr/
Outlook :http://faq.outlook.free.fr/
Sql :http://sqlpro.developpez.com/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




Avatar
Oliv'
merci isabelle mais ce n'est pas ce que je cherche.

bonjour Oliv',

=EXACT(A1;B1)

isabelle

Bonjour,
existe t'il une fonction VBA Ou non permettant de comparer des
chaines de caractères quasi identiques.

exemple : "olivier" et "oliveir" =quasi identique
et "olivier" et "marcel" = pas identique.

c'est pour trouver des erreurs de frappes dans des noms et prénoms.

Merci d'avance.




Avatar
isabelle
une solution serait de faire une function perso :

par exemple, si les caractères sont identique à 70% et + = VRAI sinon FAUX

Function PresqueIdentique(cellule1 As Range, cellule2 As Range)
nbcar = Application.Max(Len(cellule1), Len(cellule2))
For i = 1 To nbcar
If Mid(cellule1, i, 1) = Mid(cellule2, i, 1) Then x = x + 1
Next
verif = x / nbcar
If verif > 0.7 Then: PresqueIdentique = "VRAI": Else PresqueIdentique = "FAUX"
End Function

isabelle

merci isabelle mais ce n'est pas ce que je cherche.


bonjour Oliv',

=EXACT(A1;B1)

isabelle


Bonjour,
existe t'il une fonction VBA Ou non permettant de comparer des
chaines de caractères quasi identiques.

exemple : "olivier" et "oliveir" =quasi identique
et "olivier" et "marcel" = pas identique.

c'est pour trouver des erreurs de frappes dans des noms et prénoms.

Merci d'avance.









Avatar
isabelle
ou bien le % du contenu de B1 part rapport à A1

=PresqueIdentique2(A1;B1)

Function PresqueIdentique2(cellule1 As Range, cellule2 As Range)
For i = 1 To Len(cellule2)
kk = Application.Find(Mid(cellule2, i, 1), cellule1)
If Not IsError(kk) Then x = x + 1
Next
verif = x / Len(cellule2)
PresqueIdentique2 = verif
End Function

isabelle


une solution serait de faire une function perso :

par exemple, si les caractères sont identique à 70% et + = VRAI sinon FAUX

Function PresqueIdentique(cellule1 As Range, cellule2 As Range)
nbcar = Application.Max(Len(cellule1), Len(cellule2))
For i = 1 To nbcar
If Mid(cellule1, i, 1) = Mid(cellule2, i, 1) Then x = x + 1
Next
verif = x / nbcar
If verif > 0.7 Then: PresqueIdentique = "VRAI": Else PresqueIdentique =
"FAUX"
End Function

isabelle


merci isabelle mais ce n'est pas ce que je cherche.


bonjour Oliv',

=EXACT(A1;B1)

isabelle


Bonjour,
existe t'il une fonction VBA Ou non permettant de comparer des
chaines de caractères quasi identiques.

exemple : "olivier" et "oliveir" =quasi identique
et "olivier" et "marcel" = pas identique.

c'est pour trouver des erreurs de frappes dans des noms et prénoms.

Merci d'avance.












Avatar
Oliv'
MERCI Isabelle c'est un truc dans ce genre effectivement.
J'avais commencé à comparer un a un les caractères en commencant par la
gauche comme dans l'exemple
en mettant tout en majuscules pour limiter les contraintes.
puis j'ai ajouté la même chose par la droite.
+ Comparaison du nombre de caractéres des 2 chaines.

et il me fallait encore vérifier en gros le milieu pour que
"olivier" soit presqueidentique à "pliviet"

faudrait en plus comparer la présence de sequences pour que "olivier
CATTEAU" soit presqueidentique à "CATTEAU OLIVIER".
genre une boucle supplémentaire en faisant varier le troisième argument de
Mid
for j = 1 to Len(cellule2)
Application.Find(Mid(cellule2, i, j), cellule1)


mais bon suis un peu débordé par d'autres choses plus importantes.

Mais j'aime bien tes propositions.
--
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
les sites références:
Excel :http://www.excelabo.net http://xcell05.free.fr/
http://dj.joss.free.fr/
http://frederic.sigonneau.free.fr/ http://www.excel-vba-francais.com/
Word : http://faqword.free.fr/
Outlook :http://faq.outlook.free.fr/
Sql :http://sqlpro.developpez.com/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



ou bien le % du contenu de B1 part rapport à A1

=PresqueIdentique2(A1;B1)

Function PresqueIdentique2(cellule1 As Range, cellule2 As Range)
For i = 1 To Len(cellule2)
kk = Application.Find(Mid(cellule2, i, 1), cellule1)
If Not IsError(kk) Then x = x + 1
Next
verif = x / Len(cellule2)
PresqueIdentique2 = verif
End Function

isabelle


une solution serait de faire une function perso :

par exemple, si les caractères sont identique à 70% et + = VRAI
sinon FAUX Function PresqueIdentique(cellule1 As Range, cellule2 As
Range)
nbcar = Application.Max(Len(cellule1), Len(cellule2))
For i = 1 To nbcar
If Mid(cellule1, i, 1) = Mid(cellule2, i, 1) Then x = x + 1
Next
verif = x / nbcar
If verif > 0.7 Then: PresqueIdentique = "VRAI": Else
PresqueIdentique = "FAUX"
End Function

isabelle


merci isabelle mais ce n'est pas ce que je cherche.


bonjour Oliv',

=EXACT(A1;B1)

isabelle


Bonjour,
existe t'il une fonction VBA Ou non permettant de comparer des
chaines de caractères quasi identiques.

exemple : "olivier" et "oliveir" =quasi identique
et "olivier" et "marcel" = pas identique.

c'est pour trouver des erreurs de frappes dans des noms et
prénoms. Merci d'avance.










Avatar
Modeste
Bonsour® isabelle avec ferveur ;o))) vous nous disiez :

une solution serait de faire une function perso :


;o)))
a quoi cela sert qu'il y en a qui se décarcasse ????
http://j-walk.com/ss/excel/tips/tip77.htm
http://j-walk.com/ss/excel/files/soundex.exe


--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr

Avatar
isabelle
:-) y a un son familié qui a retenti de chez J-Walk
isabelle


Bonsour® isabelle avec ferveur ;o))) vous nous disiez :


une solution serait de faire une function perso :



;o)))
a quoi cela sert qu'il y en a qui se décarcasse ????
http://j-walk.com/ss/excel/tips/tip77.htm
http://j-walk.com/ss/excel/files/soundex.exe





Avatar
Oliv'
Bonsour® isabelle avec ferveur ;o))) vous nous disiez :

une solution serait de faire une function perso :


;o)))
a quoi cela sert qu'il y en a qui se décarcasse ????
http://j-walk.com/ss/excel/tips/tip77.htm
http://j-walk.com/ss/excel/files/soundex.exe



excellent !!! je vais tester.

Oliv'


1 2