Petit probleme vba excel
Résolu
Thordek
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'amerais, non je veux, supprimer dans une case tous les caractéres majuscules si il y en a plus de 2 à la suite : exemple
Bonjour à TOUS -> je veux supprimer "TOUS"
merci de votre aide.
Thordek
J'amerais, non je veux, supprimer dans une case tous les caractéres majuscules si il y en a plus de 2 à la suite : exemple
Bonjour à TOUS -> je veux supprimer "TOUS"
merci de votre aide.
Thordek
1 réponse
-
Bonjour
un essai : supprime le mot si au moins 2 majuscules en début de mot
texte testé:
BOnjour à Tata, TONTOn, Mamy
Function supprim_Si_2maj(texto As String) separe = Split(texto) For cptr = 0 To UBound(separe) Set reg = CreateObject("vbscript.regexp") reg.Global = False reg.Pattern = "(\b[A-Z]{2,})" Set extraction = reg.Execute(separe(cptr)) For Each maj In extraction verif = maj.Value Next maj If verif <> 0 Then separe(cptr) = "" verif = 0 Next supprim_Si_2maj = Join(separe) End Function-
Bonjour michel,
Super top les expressions rationnelles. Tu avais raison, c'est difficilement accessible mais le principe et surtout les résultats sont épatants.
Pour parfaire ta fonction, je me suis permis de modifier légèrement la dernière ligne, juste pour un souci esthétique, j'espère que tu ne m'en tiendras pas rigueur...
J'ai testé et aperçu des espaces indésirables... Rien de bien dramatique en soi ;-). Alors, juste la dernière ligne :supprim_Si_2maj = Application.WorksheetFunction.Trim(Join(separe))
-
-
Non le global à true ne règle pas le problème. C'est la position qu'il faut changer. Donc simplement virer le /b du Pattern.
Function supprim_Si_2maj(texto As String) separe = Split(texto) For cptr = 0 To UBound(separe) Set reg = CreateObject("vbscript.regexp") reg.Global = False reg.Pattern = "([A-Z]{2,})" Set extraction = reg.Execute(separe(cptr)) For Each maj In extraction verif = maj.Value Next maj If verif <> 0 Then separe(cptr) = "" verif = 0 Next supprim_Si_2maj = Application.WorksheetFunction.Trim(Join(separe)) End Function -
-
-