Si vous utilisez Excel pour analyser un groupe de cellules contenant du texte, vous souhaiterez peut-être déterminer le nombre de cellules contenant des majuscules, le nombre contenant des minuscules et le nombre contenant des majuscules.

Vous pouvez aborder cette tâche de deux manières: en utilisant une formule de feuille de calcul standard ou en définissant votre propre fonction définie par l’utilisateur.

Si le texte que vous souhaitez évaluer se trouve dans la colonne A, à partir de la cellule A1, vous pouvez utiliser la formule suivante dans la cellule B1:

=IF(A1>"",IF(EXACT(UPPER(A1),A1),"Upper", IF(EXACT(LOWER(A1),A1),"Lower","Mixed")),"")

La formule vérifie s’il y a quelque chose dans A1. Si tel est le cas, il utilise la fonction EXACT pour comparer le contenu à diverses conversions du contenu de la cellule. La formule renvoie une chaîne vide si la cellule A1 est vide ou les mots Upper, Lower ou Mixed.

Copiez la formule dans la colonne B autant que vous le souhaitez, puis vous pouvez utiliser le type de formule suivant pour déterminer le nombre:

=COUNTIF(B:B,"Upper")

Pour trouver le nombre de cellules minuscules ou mixtes, remplacez «Upper» par «Lower» ou «Mixed».

De toute évidence, l’utilisation de formules de cette manière implique l’ajout d’une colonne à votre feuille de calcul. Il existe une autre approche de formule que vous pouvez utiliser qui n’implique pas l’utilisation d’une colonne intermédiaire de cette manière.

Considérez la formule suivante, qui renvoie le nombre de cellules dans la plage A1: A100 qui ne contiennent que des lettres majuscules:

=SUMPRODUCT(--(EXACT(A1:A100,UPPER(A1:A100))),--(A1:A100<>""))

Une variante de cette formule peut être utilisée pour renvoyer le nombre de cellules minuscules. La seule chose qui a changé dans ce qui suit est l’utilisation de la fonction LOWER au lieu de la fonction UPPER:

=SUMPRODUCT(--(EXACT(A1:A100,LOWER(A1:A100))),--(A1:A100<>""))

Pour déterminer les cellules contenant une casse mixte, vous devez créer un mélange des deux formules basées sur SUMPRODUCT:

=SUMPRODUCT(--(NOT(EXACT(A1:A100,UPPER(A1:A100)))),-- (NOT(EXACT(A1:A100,LOWER(A1:A100)))),--(A1:A100<>""))

Il y a quelques inconvénients à ces formules, des inconvénients qui ne sont pas évidents dans les formules précédentes. Premièrement, si une cellule contient une valeur numérique, ces formules comptent la cellule en majuscules. Deuxièmement, si une cellule contient une valeur d’erreur, la formule renvoie une erreur.

Si vous avez besoin de compter les cas assez souvent, vous seriez probablement mieux servi en créant une fonction définie par l’utilisateur qui fait le comptage pour vous. Une telle fonction peut être écrite de plusieurs manières, mais les lignes directrices générales sont les suivantes:

Parcourir chaque cellule d’une plage Déterminer si la cellule est supérieure, inférieure ou mixte Incrémenter un compteur Renvoyer une valeur

La macro suivante est un exemple de la façon dont ce qui précède peut être mis en œuvre:

Function CountCase(rng As Range, sCase As String) As Long     Dim vValue     Dim lUpper As Long     Dim lMixed As Long     Dim lLower As Long     Dim rCell As Range     lUpper = 0     lLower = 0     lMixed = 0

For Each rCell In rng         If Not IsError(rCell.Value) Then             vValue = rCell.Value             If VarType(vValue) = vbString _                 And Trim(vValue) <> "" Then                 If vValue = UCase(vValue) Then                     lUpper = lUpper + 1                 ElseIf vValue = LCase(vValue) Then                     lLower = lLower + 1                 Else                     lMixed = lMixed + 1                 End If             End If         End If     Next     Select Case UCase(sCase)

Case "U"

CountCase = lUpper         Case "L"

CountCase = lLower         Case "M"

CountCase = lMixed         Case Else             CountCase = CVErr(xlErrValue)

End Select End Function

Déterminer si une cellule est supérieure, inférieure ou mixte est évidemment le nœud d’une macro comme celle-ci. Une telle détermination utilise le même processus que celui effectué dans les formules de la feuille de calcul: comparez le contenu de la cellule à la conversion en majuscules ou en minuscules de ces contenus. Dans cette macro, la valeur de la cellule (vValue) est comparée à la vValue transformée avec la fonction UCase ou LCase.

La fonction ignore également les cellules qu’il n’est pas logique d’évaluer.

Il ignore les cellules contenant des valeurs numériques, des valeurs booléennes, des valeurs d’erreur, des cellules vides et des cellules contenant uniquement des espaces. Si une valeur numérique est mise en forme sous forme de texte, la fonction compte cette cellule en majuscules. Pour utiliser cette fonction définie par l’utilisateur, utilisez une formule telle que la suivante dans votre feuille de calcul:

=COUNTCASE(A1:A100, "L")

Pour le premier argument, vous utilisez la plage que vous souhaitez évaluer. Le deuxième argument est un seul caractère (L, M ou U) indiquant le nombre que vous souhaitez renvoyer. Si vous utilisez une autre valeur pour le deuxième argument, la fonction renvoie une erreur.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (3212) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

lien: / excelribbon-Counting_Cells_According_to_Case [Compter les cellules selon le cas].