Analyser une colonne de série

0

Bonjour,

J'ai une colonne contenant des séries de lettres séparées par des virgules comme ceci :

w,x,c,b,n
s,d,f,c,g,h,j
e,r,t,y,u
r,t,y,v,b,h,j,k
e,i,u
q,s,d,f,v,g,h,j,k
e,y,o,a,u
f,g,x,c,j,k,i

Je cherche en vain une formule a mettre dans la colonne suivant qui me dise "voyelle" si la série ne contiens que des voyelles, "consonne" si la série ne contiens que des consonnes et "mix" si la série contiens des consonnes et des voyelles.

Pouvez vous m'aider la-dessus? Merci d'avance !

Posté le 9 juillet 2015, 12:22
par jackal
Répondre
0

Tu peux utiliser la fonction MATCH : MATCH(A1,{"A";"E";"I";"O";"U"},0)) ou alors écrire une macro utilisant un test de ce style : voyelle = InStr(1, "aeiou", Lettre, vbTextCompare) > 0. Malheureusement il n'y a pas de support des expressions régulières en VBA, sinon ça aurait été très simple.

Vince Posté le 9 juillet 2015, 23:45
par Vince
0

Salut le Forum

Une fonction VBA utilisant les expressions régulières

Function ConVoy(Valeur As String)
Dim regEx As Object, C As Object, V As Object
Set regEx = CreateObject("VBScript.RegExp")
With regEx
    .IgnoreCase = False
    .Global = True
    .Pattern = ","
    Valeur = .Replace(Valeur, "")
    .Pattern = "[0-9]"
    Valeur = .Replace(Valeur, "")
    .Pattern = "[^aeiou]"
    Valeur = .Replace(Valeur, "C")
    .Pattern = "[aeiou]"
    Valeur = .Replace(Valeur, "V")
    .Pattern = "C"
    Set C = regEx.Execute(Valeur)
    .Pattern = "V"
    Set V = regEx.Execute(Valeur)
End With
If C.Count > 0 And V.Count = 0 Then ConVoy = "Consonne"
If C.Count = 0 And V.Count > 0 Then ConVoy = "Voyelle"
If C.Count > 0 And V.Count > 0 Then ConVoy = "Mix"
Set V = Nothing
Set C = Nothing
Set regEx = Nothing
End Function
Myta



Mytå Posté le 12 juillet 2015, 02:47
par Mytå
0

Re le Forum

Version légèrement simplifié

Function ConVoy(Valeur As String)
Dim regEx As Object, C As Object, V As Object
Set regEx = CreateObject("VBScript.RegExp")
With regEx
    .IgnoreCase = False
    .Global = True
    .Pattern = ","
    Valeur = .Replace(Valeur, "")
    .Pattern = "[0-9]"
    Valeur = .Replace(Valeur, "")
    .Pattern = "[^aeiou]"
    Set C = regEx.Execute(Valeur)
    .Pattern = "[aeiou]"
    Set V = regEx.Execute(Valeur)
End With
If C.Count > 0 And V.Count = 0 Then ConVoy = "Consonne"
If C.Count = 0 And V.Count > 0 Then ConVoy = "Voyelle"
If C.Count > 0 And V.Count > 0 Then ConVoy = "Mix"
Set V = Nothing
Set C = Nothing
Set regEx = Nothing
End Function
Mode d'utilisation : =ConVoy(A1) ou =ConVoy("r,t,y,v,b,h,j,k")

Mytå

Mytå Posté le 12 juillet 2015, 23:35
par Mytå
0

Bravo Mya, dommage que le demandeur ne t'ai pas remercié.

Posté le 15 juillet 2015, 01:04
0

Bonjour,

Probablement trop tard mais voici une autre solution SANS MACRO.

Elle nécessite toutefois l'usage d'une matrice à installer dans un coin de la feuille et que l'on peut masquer pour éviter les problèmes à l'impression.  Ici j'ai choisi de l'installer en AA1 et jusque AZ25.  Il es évident que l'on peut l'allonger sans problème au delà de 25.

http://www.cjoint.com/c/EHyjqtNcfPi

Merci de confirmer si cela a aider

A+

Posté le 24 août 2015, 11:21
par CHRIS

Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :