OVH Cloud OVH Cloud

Fonction NB.SI() discrimination des majuscules-minuscule

16 réponses
Avatar
Chauss
Bonjour à tous,

Apparemment la fonction NB.SI() ne permet pas de faire la distinction
entre un caractère majuscule et un caractère minuscule.

Je m'explique :
- soit une feuille de calcul contenant une plage de cellules nommée
"maPlage";
- soit une cellule de "maPlage" contenant un "A" et une cellule de
"maPlage" contenant un "a" ;
- la formule =NB.SI(maPlage;A) me renvoi la valeur 2.

J'ai bien essayé =NB.SI(maPlage;CAR(65)) mais le résultat reste le même.

Quelqu'un aurait-il une astuce pour compter des cellules contenant du
texte en différenciant les majuscules des minuscules

J'ai regardé dans les astuces d'Excel LABO
(http://www.excelabo.net/xl/denombrer.php#nbtexte)

Mais je n'ai pas trouvé mon bonheur.

En vous remerciant par avance.

Cordialement

6 réponses

1 2
Avatar
ChrisV
Re,

Dans ce cas, utilise:
pour "A,Ab" par ex (résultat 2 selon ton exemple)
(à saisir sans les { } et valider par Ctrl+Shift+Entrée)

{=SOMME(1*(NBCAR(Zn)-NBCAR(SUBSTITUE(Zn;"A";""))>0))}


ChrisV


"Chauss" a écrit dans le message de news:
OU%23X8$
ChrisV

Parmis tes propositions la formule qu'il est le plus proche de mes besoins
est celle ci:

contient au moins "lR" avec respect de la casse
(à saisir sans les { } et valider par Ctrl+Shift+Entrée)
{=NBCAR(Zn)-NBCAR(SUBSTITUE(Zn;lR;""))}


Cependant, elle ne fonctionne pas en l'état car je n'ai pas sufisament
expliqué mon problème.

Je précise :

Mon classeur contient les feuilles suivantes :

1- Feuille Planning

Dans laquelle il y a une plage Zn(C9:AL28). Dans les cellules de cette
plage, il a zéro, une ou plusieurs lettre qui matérialise l'occupation sur
la plage horaire. Exemple :

C9 : "A" (lettre majuscule= établissement secondaire)
C10 : "b" (lettre minuscule= établissement primaire)
C11 : "C" etc...

mais aussi :

C12 : "Ab" (car A et b utilisent la même installation sur ce crénau))


2- Feuille Bilan des attributions :

----------------------------------------------------
| Code | Nombre d'utilisation (=nombre de cases) |
----------------------------------------------------
| A | la forumule qui compte "*A*" (2 dans l'exp)|
----------------------------------------------------
| b | la forumule qui compte "*b*" (2 dans l'exp)|
----------------------------------------------------
| C | la forumule qui compte "*C*" (1 dans l'exp)|
----------------------------------------------------

Bonjour Chauss,

Avec la lettre recherchée nommé ici "lR", et la plage de données nommée
ici Zn

contient au moins "lR" sans respect de la casse
=NB.SI(Zn;"*"&lR&"*")

contient au moins "lR" avec respect de la casse
(à saisir sans les { } et valider par Ctrl+Shift+Entrée)
{=NBCAR(Zn)-NBCAR(SUBSTITUE(Zn;lR;""))}

contient "lR" et rien d'autre, sans respect de la casse
=NB.SI(Zn;lR)

contient "lR" et rien d'autre, avec respect de la casse
(à saisir sans les { } et valider par Ctrl+Shift+Entrée)
{=SOMME(SI(EXACT(Zn;lR);1))}


ChrisV









Avatar
Chauss
Re,

Cette fois on y est presque.... ou alors on n'y arrivera pas.

Ta formule fonctionne même si pour l'instant j'ai du mal à la comprendre
. Mais bon tu m'expliquera plus tard...

J'ai juste oublié un cas :

- dans une cellule je peux avoir "BB" et il faut que je compte 2 (2
classes d'un même établissement sur le même créneau horaire)

Et oui je sais, c'est compliqué et j'ai l'impression de m'embêter pour
rien.

Peut-être qu'en revoyant le système de codage le dénombrement serait
plus facile.

Au début,je pensais utiliser les lettres pour les établissements du
secondaire et les chiffres pour le primaire.

Je me suis vite rendu compte que les chiffres étaient à bannir (comment
faire la différence en 11 (une utilisation pour le n°11) et 11 (deux
utilisation pour le n°1).

J'ai alors pensé que l'emploi des MAJUSCULES - minuscule ferait l'affaire.

Les contraintes pour le codage et le dénombrement sont les suivantes :

- établissement secondaire (26 lettres MAJUSCULES = 26 utilisateurs
possibles)
- établissements primaires (26 lettres minuscules = 26 utilisateurs
possibles)

Le dénombrement de ces codes me permet de fabriquer une table que
j'exporte ensuite dans une base de données mySQL, et dont la structure
simplifiée est la suivante :

|Code-Etab|Code-Installation|Nombre d'utilisation|

- la lettre "x" réservée pour les indisponibilités
- la lettre "@x" réservée pour des affectations temporaires (exp : @1 :
pompiers - @2 : centre sociaux...)

Ces codes sont dénombrés à part et alimente une table caractérisant
l'installation elle-même.

Yves


Re,

Dans ce cas, utilise:
pour "A,Ab" par ex (résultat 2 selon ton exemple)
(à saisir sans les { } et valider par Ctrl+Shift+Entrée)

{=SOMME(1*(NBCAR(Zn)-NBCAR(SUBSTITUE(Zn;"A";""))>0))}


ChrisV


"Chauss" a écrit dans le message de news:
OU%23X8$

ChrisV

Parmis tes propositions la formule qu'il est le plus proche de mes besoins
est celle ci:


contient au moins "lR" avec respect de la casse
(à saisir sans les { } et valider par Ctrl+Shift+Entrée)
{=NBCAR(Zn)-NBCAR(SUBSTITUE(Zn;lR;""))}


Cependant, elle ne fonctionne pas en l'état car je n'ai pas sufisament
expliqué mon problème.

Je précise :

Mon classeur contient les feuilles suivantes :

1- Feuille Planning

Dans laquelle il y a une plage Zn(C9:AL28). Dans les cellules de cette
plage, il a zéro, une ou plusieurs lettre qui matérialise l'occupation sur
la plage horaire. Exemple :

C9 : "A" (lettre majuscule= établissement secondaire)
C10 : "b" (lettre minuscule= établissement primaire)
C11 : "C" etc...

mais aussi :

C12 : "Ab" (car A et b utilisent la même installation sur ce crénau))


2- Feuille Bilan des attributions :

----------------------------------------------------
| Code | Nombre d'utilisation (=nombre de cases) |
----------------------------------------------------
| A | la forumule qui compte "*A*" (2 dans l'exp)|
----------------------------------------------------
| b | la forumule qui compte "*b*" (2 dans l'exp)|
----------------------------------------------------
| C | la forumule qui compte "*C*" (1 dans l'exp)|
----------------------------------------------------






Avatar
ChrisV
Bonjour Chauss,

Peux-tu mettre un exemple, avec résultats souhaités sur:
http://cjoint.com/


ChrisV


"Chauss" a écrit dans le message de news:

Re,

Cette fois on y est presque.... ou alors on n'y arrivera pas.

Ta formule fonctionne même si pour l'instant j'ai du mal à la comprendre .
Mais bon tu m'expliquera plus tard...

J'ai juste oublié un cas :

- dans une cellule je peux avoir "BB" et il faut que je compte 2 (2
classes d'un même établissement sur le même créneau horaire)

Et oui je sais, c'est compliqué et j'ai l'impression de m'embêter pour
rien.

Peut-être qu'en revoyant le système de codage le dénombrement serait plus
facile.

Au début,je pensais utiliser les lettres pour les établissements du
secondaire et les chiffres pour le primaire.

Je me suis vite rendu compte que les chiffres étaient à bannir (comment
faire la différence en 11 (une utilisation pour le n°11) et 11 (deux
utilisation pour le n°1).

J'ai alors pensé que l'emploi des MAJUSCULES - minuscule ferait l'affaire.

Les contraintes pour le codage et le dénombrement sont les suivantes :

- établissement secondaire (26 lettres MAJUSCULES = 26 utilisateurs
possibles)
- établissements primaires (26 lettres minuscules = 26 utilisateurs
possibles)

Le dénombrement de ces codes me permet de fabriquer une table que
j'exporte ensuite dans une base de données mySQL, et dont la structure
simplifiée est la suivante :

|Code-Etab|Code-Installation|Nombre d'utilisation|

- la lettre "x" réservée pour les indisponibilités
- la lettre "@x" réservée pour des affectations temporaires (exp : @1 :
pompiers - @2 : centre sociaux...)

Ces codes sont dénombrés à part et alimente une table caractérisant
l'installation elle-même.

Yves


Re,

Dans ce cas, utilise:
pour "A,Ab" par ex (résultat 2 selon ton exemple)
(à saisir sans les { } et valider par Ctrl+Shift+Entrée)

{=SOMME(1*(NBCAR(Zn)-NBCAR(SUBSTITUE(Zn;"A";""))>0))}


ChrisV


"Chauss" a écrit dans le message de news:
OU%23X8$

ChrisV

Parmis tes propositions la formule qu'il est le plus proche de mes
besoins est celle ci:


contient au moins "lR" avec respect de la casse
(à saisir sans les { } et valider par Ctrl+Shift+Entrée)
{=NBCAR(Zn)-NBCAR(SUBSTITUE(Zn;lR;""))}


Cependant, elle ne fonctionne pas en l'état car je n'ai pas sufisament
expliqué mon problème.

Je précise :

Mon classeur contient les feuilles suivantes :

1- Feuille Planning

Dans laquelle il y a une plage Zn(C9:AL28). Dans les cellules de cette
plage, il a zéro, une ou plusieurs lettre qui matérialise l'occupation
sur la plage horaire. Exemple :

C9 : "A" (lettre majuscule= établissement secondaire)
C10 : "b" (lettre minuscule= établissement primaire)
C11 : "C" etc...

mais aussi :

C12 : "Ab" (car A et b utilisent la même installation sur ce crénau))


2- Feuille Bilan des attributions :

----------------------------------------------------
| Code | Nombre d'utilisation (=nombre de cases) |
----------------------------------------------------
| A | la forumule qui compte "*A*" (2 dans l'exp)|
----------------------------------------------------
| b | la forumule qui compte "*b*" (2 dans l'exp)|
----------------------------------------------------
| C | la forumule qui compte "*C*" (1 dans l'exp)|
----------------------------------------------------








Avatar
Chauss
Bonjour ChrisV,

Merci encore pour ton aide.

J'ai joint le fichier exemple à l'adresse indiquée.

http://cjoint.com/?mes6MM118S

Dans la feuille planning j'ai saisi :
A
a
BB
CD

Dans la feuille bilan des attributions, la formule :

{=SOMME(1*(NBCAR(ZnHu)-NBCAR(SUBSTITUE(ZnHu;A10;""))>0))}

me donne les résultats suivants :

A = 1
B = 1 (au lieu de 2)
C = 1
D = 1
a =1

Il faudrait que la formule puisse compter 2 quand il y a 2 fois la même
lettre dans une cellule (si ce n'est pas trop compliqué).

A+

Bonjour Chauss,

Peux-tu mettre un exemple, avec résultats souhaités sur:
http://cjoint.com/


ChrisV




Avatar
ChrisV
Bonjour Chauss,

En E10, à recopier vers E59
(à saisir sans les { } et valider par Ctrl+Shift+Entrée)

{=SOMME(NBCAR(ZnHu)-NBCAR(SUBSTITUE(ZnHu;A10;"")))}


ChrisV


"Chauss" a écrit dans le message de news:
uPbVgzP%
Bonjour ChrisV,

Merci encore pour ton aide.

J'ai joint le fichier exemple à l'adresse indiquée.

http://cjoint.com/?mes6MM118S

Dans la feuille planning j'ai saisi :
A
a
BB
CD

Dans la feuille bilan des attributions, la formule :

{=SOMME(1*(NBCAR(ZnHu)-NBCAR(SUBSTITUE(ZnHu;A10;""))>0))}

me donne les résultats suivants :

A = 1
B = 1 (au lieu de 2)
C = 1
D = 1
a =1

Il faudrait que la formule puisse compter 2 quand il y a 2 fois la même
lettre dans une cellule (si ce n'est pas trop compliqué).

A+

Bonjour Chauss,

Peux-tu mettre un exemple, avec résultats souhaités sur:
http://cjoint.com/


ChrisV





Avatar
Chauss
Salut ChrisV,

C'est magique.... et très logique ( j'ai enfin compris la formule) ...

Cette fois la formule est capable de compter tous les cas de figure.

Merci encore.

PS : Peux-tu me donner ton adresse postale en privé.

Bonjour Chauss,

En E10, à recopier vers E59
(à saisir sans les { } et valider par Ctrl+Shift+Entrée)

{=SOMME(NBCAR(ZnHu)-NBCAR(SUBSTITUE(ZnHu;A10;"")))}


ChrisV


"Chauss" a écrit dans le message de news:
uPbVgzP%



1 2