Afficher seulement les "mots clés" autorisés

Bonsoir,

Encore besoin de vous :'(

J'ai un fichier (voir PJ) qui contient une liste de mots autorisés en A et en colonne B des mots (seul ou plusieurs séparés par des virgules). L'objectif est d'obtenir en C seulement les mots clés qui ont été autorisés.

Le fichier est en PJ pour une meilleure compréhension.

10tmp.xlsx (29.22 Ko)

Avec toute ma gratitude.

Bonsoir,

une solution avec une fonction personnalisée, à mettre dans un module

Function motauth(liste, listea)
    t = Split(liste, ",")
    For i = LBound(t) To UBound(t)
        Set re = listea.Find(Trim(t(i)), lookat:=xlWhole, LookIn:=xlValues)
        If Not re Is Nothing Then
            m = m & t(i) & ","
        End If
    Next i
    motauth = Left(m, Len(m) - 1)
End Function

appel de la fonction

=motauth(liste, listea)

liste est la cellule qui contient la liste des mots à valider par rapport à listea qui est une plage de cellules qui contient les mots autorisés.

17tmp.xlsm (14.12 Ko)

Merci bcp.

Et tu valides l''appel de la fonction via "Controle + Maj + Entrée" ? Car je viens de faire des tests et il m'indique #Valeur!

bonjour

non, une simple validation. la fonction renvoie "#value" si aucun mot n'est trouvé dans la liste des mots autorisés. dis-moi ce qu'il faut afficher dans ce cas, je te mettrai une correction.

C'est parfait comme ça. C'etait en fait Excel sous Mac qui m******. Sous windows, ça marche comme sur des roulettes. Merci infiniment.

Re

Et tu saurais comment faire pour detecter seulement une partie des Keywords ? Je m'explique :

Colonne A - Mots clés authorisés : PHP

Colonne B - Mots clés : PHP5,PHP 5,PHP 5.2

Colonne C - Résultats : PHP

Bonsoir,

une proposition

Function motauth(liste, listea)
    Dim t()
    liste = UCase(liste)
    For Each c In listea
        i = i + 1
        ReDim Preserve t(1 To i)
        t(i) = c
    Next
    For i = LBound(t) To UBound(t) - 1
        For j = i + 1 To UBound(t)
            If Len(t(i)) < Len(t(j)) Then a = t(i): t(i) = t(j): t(j) = a
        Next j
    Next i
    For i = LBound(t) To UBound(t)
        If InStr(liste, UCase(t(i))) > 0 Then
            m = m & t(i) & ","
            liste = Replace(liste, UCase(t(i)), "")
        End If
    Next i
    motauth = Left(m, Len(m) - 1)
End Function
10tmp.xlsm (15.01 Ko)

Magique ! Tu es un As !

Merci beaucoup

Rechercher des sujets similaires à "afficher seulement mots cles autorises"