Surligner les mots qui se ressemblent

guigui06 -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je travaille sur un fichier excel. Je souhaiterais que dans une colonne donnée soit surligné (ou mis en couleur provisoirement ou tout autre moyen pour que l'on puisse le voir), les mots qui se ressemblent (pas seulement en doublons). C'est à dire que s'il est marqué "point" ou "poind" il faudrait que cela se mette en surbrilance pour que l'utilisateur estime s'il s'agit d'un doublon à supprimer ou pas...

Voila je ne sais pas si c'est réalisable avec formules, ou macro..

merci pour vos réponses

2 réponses

  1. jfqld Messages postés 8725 Date d'inscription   Statut Membre Dernière intervention   127
     
    tu cliques sur ta colonne pour qu elle soit entièrement en subrillance
    dans ACCUEIL
    mise en forme conditionnelle
    Règle de mise en surbrillance des cellules
    et tu cliques sur VALEUR EN DOUBLE
    et tous les mots identiques se mettront en surbrillance

    0
    1. guigui06
       
      oui je connais cette facon la. Seulement je souhaiterais une technique qui permet de mettre non seulement les mots en doubles mais également qui se ressemblen (à quelques lettres près...)
      0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Par formule, c'est niet!

    Par VBA, pourquoi pas.
    J'ai trouvé pour toi, ICI, une fonction personnalisée qui transforme des chaînes de caractères en un code. Si les chaînes de caractères sont similaires, elles possèdent le même code, et donc tu peux repérer des quasi-doublons...

    Mise en place :
    - depuis un classeur excel, tapez ALT+F11
    - Insertion/Module
    - copié-collé ce code dans le module ainsi créé :
    Function SOUNDEX(Surname As String) As String
    ' Developed by Richard J. Yanco
    ' This function follows the Soundex rules given at
    ' http://home.utah-inter.net/kinsearch/Soundex.html
    
        Dim Result As String, c As String * 1
        Dim Location As Integer
    
        Surname = UCase(Surname)
    
    '   First character must be a letter
        If Asc(Left(Surname, 1)) < 65 Or Asc(Left(Surname, 1)) > 90 Then
            SOUNDEX = ""
            Exit Function
        Else
    '       St. is converted to Saint
            If Left(Surname, 3) = "ST." Then
                Surname = "SAINT" & Mid(Surname, 4)
            End If
    
    '       Convert to Soundex: letters to their appropriate digit,
    '                     A,E,I,O,U,Y ("slash letters") to slashes
    '                     H,W, and everything else to zero-length string
    
            Result = Left(Surname, 1)
            For Location = 2 To Len(Surname)
                Result = Result & Category(Mid(Surname, Location, 1))
            Next Location
          
    '       Remove double letters
            Location = 2
            Do While Location < Len(Result)
                If Mid(Result, Location, 1) = Mid(Result, Location + 1, 1) Then
                    Result = Left(Result, Location) & Mid(Result, Location + 2)
                Else
                    Location = Location + 1
                End If
            Loop
        
    '       If category of 1st letter equals 2nd character, remove 2nd character
            If Category(Left(Result, 1)) = Mid(Result, 2, 1) Then
                Result = Left(Result, 1) & Mid(Result, 3)
            End If
        
    '       Remove slashes
            For Location = 2 To Len(Result)
                If Mid(Result, Location, 1) = "/" Then
                    Result = Left(Result, Location - 1) & Mid(Result, Location + 1)
                End If
            Next
        
    '       Trim or pad with zeroes as necessary
            Select Case Len(Result)
                Case 4
                    SOUNDEX = Result
                Case Is < 4
                    SOUNDEX = Result & String(4 - Len(Result), "0")
                Case Is > 4
                    SOUNDEX = Left(Result, 4)
            End Select
        End If
    End Function
    
    Private Function Category(c) As String
    '   Returns a Soundex code for a letter
        Select Case True
            Case c Like "[AEIOUY]"
                Category = "/"
            Case c Like "[BPFV]"
                Category = "1"
            Case c Like "[CSKGJQXZ]"
                Category = "2"
            Case c Like "[DT]"
                Category = "3"
            Case c = "L"
                Category = "4"
            Case c Like "[MN]"
                Category = "5"
            Case c = "R"
                Category = "6"
            Case Else 'This includes H and W, spaces, punctuation, etc.
                Category = ""
        End Select
    End Function

    - fermer la fenêtre Visual Basic Editor

    Utilisation :
    En A1 saisir : point
    En A2 saisir : poind
    En A3 saisir : loind
    En A4 saisir : moins

    En B1 saisir la formule : =SOUNDEX(A1)
    "étirer" cette formule vers le bas

    En C1 saisir la formule : =SI(NB.SI(B:B;B1)>1;"Doublon";"")
    "étirer" cette formule vers le bas...
    0