XL 2016 Ecarts entre 2 textes - trouver le nombre de différence

Poupi

XLDnaute Nouveau
Hello (pourExcel 2016 et 2019)
Est ce que vous pouvez m'aider pour ceci; je préviens ça s'annonce compliqué (VBA/Fonction VBA/Formules etc)
Défi:
Comparer 2 cellules A2 et B2 (plus généralement 2 colonnes sélectionnées A et B comportant une série de lettre et en sortir 1 résultat dans la cellule à côté C2 (colonne à côté col C)
Rien de mieux que des exemples, j'ai 2 versions, les plus forts peuvent essayer les 2 :)

La version compliquée: nombre total de lettre pas trouvé dans les 2 sens (attention pour la même lettre il faut le même nombre de cette lettre ex. COCA et COKO résultat total différence = 3 càd manque la "A" à gauche comparé à droite, et manque le K et le 2e O à droite comparé à gauche)

Ex:

ABC
ENGIEENGIES
1​
ESSENTIALESENTIAAL
2​
ARIELTOARIELOO
2​
ARAMISARMAIS
0​
AKATOAAKATO
1​
AKATOARAKATOA
1​
ENGIEFRANCECOMPAGNIEENGIESUEZFRANCECOMPAGNIE
4​

Version un peu moins compliquée peut-être ? (les 2 versions m'intéressent) nombre de lettre de B non trouvé dans A (attention pour le même lettre il faut le même nombre de cette lettre ex. COCA et COCAA résultat = 1 le 2e A n'est pas trouvé )

Name GEKIName GraydonC
ENGIEENGIES
1​
ESSENTIALESENTIAAL
1​
ARIELTOARIELOO
1​
ARAMISARMAIS
0​
AKATOAAKATO
0​
AKATOARAKATOA
0​
ENGIEFRANCECOMPAGNIEENGIESUEZFRANCECOMPAGNIE
4​
TELECCTELEK
1​

Merci d'avance pour votre expertise !
Merci bcp bcp
 
Solution
Bonsoir Poupi, patricktoulon,

Voyez le fichier joint, cette fonction VBA comptabilise les écarts entre les 2 textes :
VB:
'Option Compare Text 'activer pour ignorer la casse

Function Ecarts%(text1$, text2$)
Dim i%, x$, j%
For i = Len(text1) To 1 Step -1
    x = Mid(text1, i, 1)
    For j = 1 To Len(text2)
        If Mid(text2, j, 1) = x Then
            text1 = Left(text1, i - 1) & Mid(text1, i + 1)
            text2 = Left(text2, j - 1) & Mid(text2, j + 1)
            Exit For
        End If
Next j, i
Ecarts = Len(text1) + Len(text2)
End Function
A+

Poupi

XLDnaute Nouveau
@patricktoulon Si ce n'est pas claire pour toi voici ce que je voulais dire en exemple ci-dessous;
les fonctions/codes font le taf dans Col C et Col D. :)


Texte 1 (colA)Texte 2 (col B)Ecarts (col C)Correspondance (col D)
ENGIEAKATOA1AKATOAR
ESSENTIALENGIESUEZFRANCECOMPAGNIE4ENGIEFRANCECOMPAGNIE
ARIELTOTELEK3TELECC
ARAMISENGIES1ENGIE
AKATOAESENTIAAL2ESSENTIAL
AKATOARARIELOO2ARIELTO
ENGIEFRANCECOMPAGNIEARMAIS0ARAMIS
ENGIEAKATO1AKATOA
ESSENTIALENGIES1ENGIE
ARIELTOESENTIAAL2ESSENTIAL
ARAMISARIELOO2ARIELTO
AKATOAARMAIS0ARAMIS
AKATOARAKATO1AKATOA
ENGIEFRANCECOMPAGNIEAKATOA1AKATOAR
TELECCENGIESUEZFRANCECOMPAGNIE4ENGIEFRANCECOMPAGNIE
 

Poupi

XLDnaute Nouveau
de rien et étudie bien tranquillement ligne par ligne
tu devrais comprendre le principe
C'est assez compliqué pour qqun qui ne baigne pas dedans, pour toi c'est du Français surement ;-)
d'ailleurs je ne sais toujours pas ce que rend comme résultat cette partie du code
"Select Case True ...etc", avec la réponse : "ben ça veut dire ce que ça veut dire" ça ne m'apprend pas grand chose, tu comprends? :)

Toute manière mon but c'est pas d'embêter les gens, t'es pas là pour transmettre.
un passionné se plus tolérant avec moi ;-)

Mais j'apprécie beaucoup ton aide.
Bonne soirée
 

patricktoulon

XLDnaute Barbatruc
que veux tu que je te dise
select case true
3 mots c'est si difficile que ça a traduire ?
selectionner la case vrai
en dessous tu a
case machin chose
case truc bidule
case blablabla

et bien il va matcher sur la première case qui donne vrai c'est tout

tiens si là tu pige pas je jette mon tablier , je peux plus rien pour toi
VB:
Sub test()
  
   monami = "poupi"

    Select Case True
    Case monami = "toto": t = "ben oui bien sur c'est toto"
    Case monami = "titi": t = "ben oui bien sur c'est titi"
    Case monami = "poupi": t = "ben oui bien sur c'est poupi"
    Case monami = "fifi": t = "ben oui bien sur c'est fifi"
    End Select

    MsgBox t
End Sub
 

Statistiques des forums

Discussions
312 103
Messages
2 085 310
Membres
102 859
dernier inscrit
Diallokass