Excel - formule de texte complexe

Résolu
Bonjour,

je souhaiterai créer une fonction personnalisée qui compare le nombre de mots identiques entre deux cellules en excluant les mots de moins de XX lettres

Ex :
En A1, j'ai : "Salut je suis une brèle en formule excel"
en A2, j'ai : "T'inkiète, je vais te donner une super formule excel"

En option, je dis de ne comparer que les mots de plus de 3 lettres
Résultat de la formule : 2 (formule et excel), soit 2 mots

En bonus, ce serait super de dire que le mot est présent si dans un cas je l'ai au singulier et dans l'autre au pluriel (Ex : Si j'avais mis un "s" à la fin de excel dans une seule des des celluless, la formule m'aurait tout de même renvoyeé "2"

Merci par avance !!!
A+++

5 réponses

  1. super ça marche nickel !!!
    Merci encore
    0
    1. Rebonjour eriiic,

      je viens de bien utiliser ta formule et j'aurai une petite demande d'amélioration stp :
      En fait, je voudrais que le test ne soit pas sensible à la casse (majuscule et minuscules) et aux accents
      Je souhaiterai également que l'auxiliaire d'un mot (ex : le l' devant un mot, exemple : l'avatar) ne soit pas pris en compte dans la recherche de mot.

      Exemple :
      Si en A1 j'ai : L'état
      Et en A2 j'ai : Etat

      je souhaiterai que la formule renvoie "1" et non pas "0" comme c'est le cas actuellement...

      Merci encore
      Cordialement
      0
  2. Contributeur
    Bonjour tout le monde,

    une proposition :
    Function nbMots4(phrase1 As String, phrase2 As String) As Long
        Dim phr1, phr2, i As Long, j As Long
        phr1 = Split(phrase1, " ")
        phr2 = Split(phrase2, " ")
        For i = 0 To UBound(phr1)
            If Len(phr1(i)) < 4 Then phr1(i) = ""
            If Right(phr1(i), 1) = "s" Then phr1(i) = Left(phr1(i), Len(phr1(i)) - 1)
        Next i
        For i = 0 To UBound(phr2)
            If Len(phr2(i)) < 4 Then phr2(i) = ""
            If Right(phr2(i), 1) = "s" Then phr2(i) = Left(phr2(i), Len(phr2(i)) - 1)
        Next i
        For i = 0 To UBound(phr1)
            For j = 0 To UBound(phr2)
                If phr1(i) <> "" And phr1(i) = phr2(j) Then nbMots4 = nbMots4 + 1
            Next j
        Next i
    End Function

    https://www.cjoint.com/?BFwtpLMDQxa

    eric
    0
    1. Modérateur
      Alors, je te conseille de partir de la formule personnalisée que t'a donné michel_m ICI.
      Je reviendrai en début de semaine voir les avancées de ce sujet.
      0
      1. Modérateur
        Bonjour,

        En fait, tu as créées 3 sujets, je pense que des trois la finalité c'est celui-ci. Non?

        Si non, dis nous tout de suite et exactement ou tu veux en venir, ça sera plus simple...

        Si oui, saches qu'il faudra absolument passer par du VBA. Tu maîtrises?
        0
        1. Oui effectivement c'est la finalité du problème.
          Désolé mais je suis un peu nouveau dans les forums et je ne pensait pas qu'il y avait autant de personnes qui soit prêtes à se pencher sur mon problème précis alors j'ai voulu pour ne pas être bloqué dans un premier abord décortiquer mon problème en plusieurs....

          Mais effectivement tout est résumé dans ce post.
          Sinon pour vba je maitrise pas mais je vais me faire un petit tuto sur le net si il faut....
          A+
          0