Petit probleme vba excel

Résolu
Thordek -  
michel_m Messages postés 16602 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


A voir également:

1 réponse

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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))
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
bonjour,
Merci pour le trim

mais je voudrais éliminer un mot avec 2 majuscules non au debut comme cCM par ex

si tu as une idée, peut ^tre avec global à true...
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
0
Thordek
 
Merci,

Bon weekend
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Ok, Pijaku, Bien vu !!!
Un grand Merci
Bon WE
0