Extraire des mots d'une liste

janloup -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je cherche a extraire tous les mots ayant une alternance consonne voyelle dans une liste excel

ou éliminer les mots ne remplissant pas cette condition

j'ai farfouillé un peu partout avec google sans résultat

ex de liste:

ABACA
ABACAS
ABACOST
ABACOSTS
ABACULE
ABACULES
ABAJOUE
ABAJOUES
ABALONE
ABALONES
ABANDON

merci pour votre aide
A voir également:

5 réponses

Raymond PENTIER Messages postés 71864 Date d'inscription   Statut Contributeur Dernière intervention   17 397
 
Excel ne comportant aucune fonction permettant de distinguer les consonnes des voyelles, il n'y a pas de solution simple à ta question.
Il te faudrait établir deux listes, consonnes et voyelles, puis inventer une formule calculant toutes les combinaisons possibles entre les éléments de ces deux listes, et les comparer chaque fois à toutes les couples de caractères de chaque mot de ton énumération ...
Autant faire ton pointage toi-même avec une feuille de papier et un crayon !
0
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour,

Comme le dit Raymond, c'est l'usine à gaz...

Cette fonction te renvoie VRAI si le mot comporte au moins une consonne suivie d'une voyelle (et donc FAUX si aucun cas)

Function conson_voyel(mot) As Boolean
mot = UCase(mot.Value)
longueur = Len(mot)
voyelle = Array("A", "E", "I", "O", "U", "Y")
For cptr = 1 To longueur
    test = Application.Match(Mid(mot, cptr, 1), voyelle, 0)
    If IsError(test) Then
        test = Application.Match(Mid(mot, cptr + 1, 1), voyelle, 0)
        If Not IsError(test) Then
            conson_voyel = True
            Exit For
        End If
    End If
Next
End Function
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonjour,

Comme dit raymond que je salue au passage : pas de solution simple à ta question

Alors une solution compliquée :
- tes mots en A2 et en dessous
- en F1 les voyelles: AEIOUY
- en B2: =NBCAR(A2)
- en C2: =MAX(ABS(SI(ESTERREUR(CHERCHE(STXT(A2;LIGNE(DECALER($A$1;0;0;B2;1));1);$F$1));-1;1)+SI(ESTERREUR(CHERCHE(STXT(A2;LIGNE(DECALER($A$1;1;0;B2;1));1);$F$1));-1;1)*(LIGNE(DECALER($A$1;1;0;B2;1))<=B2)))
formule matricielle à valider avec Shift+Ctrl+Entrée. Si bien validée elle doit être entourée de { }
Formules à recopier vers le bas.

En colonne C si tu obtiens 1 => ok, si tu obtiens 2 => non ok
exemple.xls

ou sinon ça sera une fonction personnalisée en vba

eric
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonjour michel,

Pas sûr que ton code corresponde à la demande, je me suis permis de le modifier un peu en fonction de ce que j'ai compris :
Function conson_voyel(mot) As Boolean
    mot = UCase(mot.Value)
    longueur = Len(mot)
    voyelle = Array("A", "E", "I", "O", "U", "Y")
    ok = True
    For cptr = 1 To longueur - 1
        test = IsError(Application.Match(Mid(mot, cptr, 1), voyelle, 0))
        test2 = IsError(Application.Match(Mid(mot, cptr + 1, 1), voyelle, 0))
        ok = (test Xor test2) And ok
        If Not ok Then
            Exit For
        End If
    Next
    conson_voyel = ok
End Function


eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour,

Tu as eu raison; c'est mieux comme cà
0