Cellules contenant un mot en majuscules

Bobitch

XLDnaute Nouveau
Bonjour à tous,

voici mon problème : je possède un glossaire terminologique à 4 colonnes :

EN | Acronyme EN | FR | Acronyme FR

EN : terme/expression anglaise (ex: Federal Bureau of Investigation)
Acronyme EN : acronyme anglais (ex: FBI)
FR : traduction française (ex: Bureau fédéral d'investigation)
Acronyme FR : traduction française de l'acronyme (ex: BFI, ou rien car pas d'équivalent en français)

J'aimerais appliquer à toutes les colonnes une formule matricielle (ou faire tourner une macro) me permettant de repérer les cellules contenant au moins un mot en majuscules.

Par exemple, si une des cellules contient le texte : "armoire MF", j'aimerais qu'elle ressorte clairement (texte ou cellule formatté d'une couleur particulière). Si la cellule ne contient qu'un mot en majuscules (ex: FBI), il faudrait qu'elle ressorte également.

J'ai trouvé ces macros, mais elles ne fonctionnent que lorsque la cellule NE CONTIENT QUE DES MAJUSCULES :

Sub OnlyUpper()
Dim cell As Range
For Each cell In Selection
If cell.Value = UCase(cell.Value) Then
With cell
.Font.ColorIndex = 4 'make font color = green
.Offset(0, 1).Value = 1
End With
End If
Next
End Sub

Sub OnlyUpper2()
Dim cell As Range
For Each cell In Selection
If cell.Value = UCase(cell.Value) Then
cell.Offset(, 1) = 1
cell.Font.ColorIndex = 3 'make font color = red
End If
Next
End Sub

Quelqu'un saurait-il la modifier pour qu'elle marche lorsque la cellule contient également des minuscules ?

Merci d'avance,

Mathieu.

P.S. : si vous savez également comment effacer dans le même temps toutes les lignes pour lesquelles aucune cellule n'a été mise en couleur, je suis preneur !
 

pierrejean

XLDnaute Barbatruc
Re : Cellules contenant un mot en majuscules

Re

Enfin ! un Pierrot avec une imperfection
Bienvenue chez les habitués du ZOP (qui n'en sont d'ailleurs pas toujours conscients)

Derniere mouture pour 2 Majuscules consecutives

VB:
Function Majuscule(texte)
For n = 1 To Len(texte) - 1
If Mid(texte, n, 2) = UCase(Mid(texte, n, 2)) Then
Majuscule = True
Exit Function
End If
Next
Majuscule = False
End Function
 
 
Sub OnlyUpper_pierrejean()
Dim cell As Range
For Each cell In Selection
If Majuscule(cell) Then
With cell
.Font.ColorIndex = 3 'make font color = green
.Offset(0, 1).Value = 1
End With
End If
Next
End Sub
 
Dernière édition:

Bobitch

XLDnaute Nouveau
Re : Cellules contenant un mot en majuscules

Merci Pierre-Jean,

le problème demeure : dès qu'il y a une majuscule, la cellule est formattée, alors qu'il faut que la cellule contienne un mot de 2 majuscules au minimum pour que le formattage s'effectue.

Par exemple :
. une cellule contenant uniquement "AF" est formattée
. une cellule contenant "alarme HAT" est formattée
. une cellule contenant "alarme" n'est PAS formattée
. une cellule contenant "Alerte" n'est PAS formattée

Comment régler ce problème ?

Merci d'avance !

Mathieu.
 

Bobitch

XLDnaute Nouveau
Re : Cellules contenant un mot en majuscules

Remerci Pedro Juan !

La macro fonctionne bien.
Elle semble cependant achopper sur les caractères spéciaux et sur le décompte des majuscules non consécutives...(pas un gros problème en soi mais bon...:) ).

Par exemple :

. "section or #"
. "(concept de la) géométrie sûre"
. "A: radio activité nulle"
. "Authorization* ( stop, start, etc. )"
. "self-repair"

pour les caractères spéciaux

et :
. "Vacuum Pump Rebuild Workshop"
. "Chemical Trap Workshop"

pour les majuscules.

Une idée d'où cela peut venir ?

Merci !
Mathieu.
 

Bobitch

XLDnaute Nouveau
Re : Cellules contenant un mot en majuscules

De l'interet d'avoir un jeu d'essai aussi compet que possible

Désolé je sais, mais dans le bunker dans lequel je travaille, chaque terme envoyé vers le monde extérieur doit faire l'objet d'un aval en bonne et due forme de mon "n + 1"...

Vois si cette version convient mieux

Carrément mieux :) :). Un grand merci à tous !!!

Mathieu.
 

Hippolite

XLDnaute Accro
Re : Cellules contenant un mot en majuscules

Re,

Et voilà comme promis en combinant avec NOMPROPRE :

=ET(NON(EXACT(NOMPROPRE(MINUSCULE(A1));A1));NON(EXACT(MINUSCULE(A1);A1)))

Tiens c'est curieux, il y a un espace qui s'introduit dans le deuxième EXACT et que je ne peux pas supprimer en éditant.
ATTENTION au copier coller, il faudra le supprimer !
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
534

Statistiques des forums

Discussions
312 231
Messages
2 086 443
Membres
103 211
dernier inscrit
pierrecharbs