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

Bonjour bobitch

Salut Pierrot

VB:
Function Majuscule(texte)
For n = 1 To Len(texte)
If Asc(Mid(texte, n, 1)) > 64 And Asc(Mid(texte, n, 1)) < 91 Then
Majuscule = True
Exit Function
End If
Next
Majuscule = False
End Function
 
 
Sub OnlyUpper()
Dim cell As Range
For Each cell In Selection
If Majuscule(cell) Then
With cell
.Font.ColorIndex = 4 'make font color = green
.Offset(0, 1).Value = 1
End With
End If
Next
End Sub
 

Bobitch

XLDnaute Nouveau
Re : Cellules contenant un mot en majuscules

Merci Pierre-Jean,

j'ai oublié de préciser que seules les cellules contenant des chaînes de 2 caractères minimum devaient être formattées. J'ai en effet beaucoup de cellules avec une seule majuscule (début de mot par ex.) mais celles-ci ne doivent pas être formatées. Quelle modification pourrait-on apporter à ton code pour ne prendre en compte que ces cellules ?

Merci d'avance,
Mathieu.
 

Bobitch

XLDnaute Nouveau
Re : Cellules contenant un mot en majuscules

Merci Hippolite,

le problème est que l'expression doit être vraie si :

. il n'y a que des majuscules
. il y a un mot en majuscules et d'autres mots en minuscules

L'expression doit donc être fausse lorsqu'il n'y a que des minuscules.

Par exemple :
. une cellule contenant uniquement "AF" est VRAI
. une cellule contenant "alarme HAT" est VRAI
. une cellule contenant "alarme" est FAUX

Est-ce possible juste avec la fonction EXACT ?

Merci,
Mathieu.
 

Bobitch

XLDnaute Nouveau
Re : Cellules contenant un mot en majuscules

Re, bonjour PierreJean:)

il faut le positionner sur la première ligne du module et non à l'intérieure d'une procédure...
Code:
Option Compare Text
Sub OnlyUpper()

bon après midi
@+

Oui, c'est ce que j'ai fait :

Option Compare Text

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

Je te mets un exemple en pièce jointe,
Mathieu
 

Pièces jointes

  • Upper.xls
    21 KB · Affichages: 75

Pierrot93

XLDnaute Barbatruc
Re : Cellules contenant un mot en majuscules

Re,

A 1ere vue le Option Compare text donne l'effet inverse de celui espéré

Aarf, comprends pas trop, il faut bien évidement enlever les fonctions lcase et ucase... Teste peut être ceci, avec et sans l'option...
Code:
Option Explicit
Option Compare Text
Sub test()
Dim s1 As String, s2 As String
s1 = "l"
s2 = "L"
MsgBox s1 = s2
End Sub

bon après midi
@+
 

Bobitch

XLDnaute Nouveau
Re : Cellules contenant un mot en majuscules

Exact Hippolite, ça marche.

Merci,
Mathieu.

Errr, j'ai parlé un peu vite...

J'ai en fait le même problème qu'avec la première solution de Pierre-Jean, c'est à dire que dès que j'ai une seule majuscule, l'expression me renvoie "VRAI", alors qu'il me faut 2 majuscules consécutives au minimm, pour éviter de retenir les cellules dont le premier mot commence par une majuscule.
 

Discussions similaires

Réponses
7
Affichages
534

Statistiques des forums

Discussions
312 231
Messages
2 086 448
Membres
103 213
dernier inscrit
Poupoule