Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Valeur proche

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

oussema wis

XLDnaute Nouveau
Bonjour,

voila mon problème j'ai deux feuilles qui contient des listes des clients chaque feuille est saisie par une personne donc les noms des clients ne sont pas les mêmes dans les deux feuilles je veux rapprocher les noms par la fonction valeur proche pour recherche le pin de la deuxième feuille dans la première .ci joint une fichier excel

Merci beaucoup.
 

Pièces jointes

Bonjour,

Voici une proposition sur la base d'un module vb trouvé là : http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=9353&lngWId=1

La fonction de ce module renvoie un score (entre 0 et 1) de similarité entre deux chaines de caractères.

A partir d'elle j'en ai créé une autre (LaPlusProche) qui compare une chaine à une plage de cellules contenant les chaînes à comparer à la première, elle renvoie la chaine ayant le score de similarité le plus proche.

A utiliser parcimonieusement pour éviter les ralentissements de calculs.

Prévoir des aides à la saisie pour vos utilisateurs plutôt que ce système de correction qui ne sera jamais assez fiable.

Cordialement

[Edition] petite amélioration de la fonction, prenant maintenant en compte une scoremini de similarité à trouvé entre 0 et 1 :
VB:
Function LaPlusProche(ByVal Nom As String, PlageCellules As Range, Optional ScoreMini As Single = 0.5) As Variant
    Dim listeRefs As Variant
    Dim i As Integer
    Dim Res As Double, oldRes As Double
   
    '
    ' Si le scoremini n'est pas entre 0 et 1 alors renvoyer #VALEUR!
    If ScoreMini < 0 Or ScoreMini > 1 Then
        LaPlusProche = CVErr(xlErrValue)
        Exit Function
    End If
    '
    ' Valeur par défaut : Non trouvé (#NA!)
    LaPlusProche = CVErr(xlErrNA)
   
    '
    ' Tenter de déterminer la forme de la plage de cellules
    With PlageCellules
        If .Columns.Count > .Rows.Count Then
            '
            ' Horizontale (plus de colonnes que de lignes)
            ' on prend la première ligne
            listeRefs = Application.Transpose(PlageCellules.Rows(1))
        Else
            '
            ' Verticale ou carrée
            ' On prend la première colonne
            listeRefs = PlageCellules.Columns(1)
        End If
    End With

    For i = 1 To UBound(listeRefs)
        '
        ' Score de similarité
        Res = Simil(Nom, listeRefs(i, 1))
        '
        ' Ne conserver le score et la chaine
        ' que si le score est supérieur à l'ancien retenu
        If Res >= ScoreMini And Res > oldRes Then
           oldRes = Res
           LaPlusProche = listeRefs(i, 1)
        End If
    Next i
    Erase listeRefs
End Function
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
22
Affichages
806
  • Question Question
XL 2019 B
Réponses
10
Affichages
412
Réponses
17
Affichages
654
Réponses
4
Affichages
138
Réponses
40
Affichages
1 K
D
  • Question Question
Réponses
5
Affichages
79
Didierpasdoué
D
  • Question Question
Microsoft 365 DMP CLIENTS
Réponses
6
Affichages
198
Réponses
1
Affichages
153
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…