les arguments mot1 et mot2 sont alphanumérique.
La fonction retourne le pourcentage de similitude entre les deux mots.
Source / Exemple :
Function test_de_similitude(mot1, mot2)
Dim flagcolonne(256)
Dim longueur
Dim ligne
Dim colonne
Dim dernier1
Dim premier0
Dim somme
Dim i
longueur = Len(mot1)
ligne = 1
colonne = 1
somme = 0
dernier1 = 1
premier0 = 0
For i = 0 To 255
flagcolonne(i) = False
Next i
'examen des mots
While ligne <= longueur
If flagcolonne(colonne - 1) = False Then
'pas de coincidence dans cette colonne -> tester
If Mid(mot1, ligne, 1) = Mid(mot2, colonne, 1) Then
'les caractères étaient identiques
somme = somme + 1
'bloquer la colonne pour un nouveau test
flagcolonne(colonne - 1) = True
dernier1 = colonne
'passage à la ligne et à la colonne suivantes
premier0 = 0
ligne = ligne + 1
colonne = colonne + 1
If colonne > Len(mot2) Then
'dépassement de la limite droite
'retour à la 1ère colonne
colonne = 1
End If
Else
'les caractères sont différents
'marquer la première différence dans cette ligne
If premier0 = 0 Then
premier0 = colonne
End If
'dans la colonne suivante
colonne = colonne + 1
If colonne > Len(mot2) Then
'trop loin sur la droite
'retour à la 1ère différence constatée
'et une ligne plus bas
colonne = premier0
If colonne = 0 Then
colonne = 1
End If
premier0 = 0
ligne = ligne + 1
End If
End If
Else
'colonne dèja occupée par une similitude
colonne = colonne + 1
If colonne > Len(mot2) Then
'trop loin vers la droite
'retour à la similitude précédente
premier0 = 0
ligne = ligne + 1
End If
End If
Wend
' somme contient le nombre de similitudes
' coefficient de similitude = somme / longueur
test_de_similitude = somme / longueur
End Function
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.