Formule excel !

Funky -  
wilfried_42 Messages postés 912 Statut Contributeur -
Bonjour,

J'ai un tableau avec 6 colonnes et 5 lignes. Je souhaite savoir si les PM(1,2,3,...) sont utilisés au moins une fois. C'est à dire, j'aimerais regarder la ligne 1 et savoir si il y au moins une fois un "O", puis la ligne 2 et regarder si il y a au moins une fois un "O" puis les additionner. Donc en résumé pour le cas ici j'aurais le nombre 4 parce que:

PM1 N N N O O J'ai au moins 1 fois un "O" ---> compteur = 1
PM2 N O O O N J'ai au moins 1 fois un "O" ---> compteur = 2
PM3 N N N N O J'ai au moins 1 fois un "O" ---> compteur = 3
PM4 O O N N O J'ai au moins 1 fois un "O" ---> compteur = 4
PM5 N N N N N Je n'ai pas au moins 1 fois un "O" ---> compteur = 4

Donc résultat = 4

Merci d'avance pour votre aide.

Funky

7 réponses

wilfried_42 Messages postés 912 Statut Contributeur 245
 
bonjour

une petite formule
si ton tableau commence en ligne 1 : 2 formules
en G1 : =Si(nb.si(B1:F1;"O")>0;1;0)
en G2 : =Si(nb.si(B2:F2;"O")>0;1;0) + Somme($G$1:G1)
tirer la 2eme formule vers le bas

si ton tableau commence en ligne 2 (par exemple)
en G1 mettre 0
en G2 : =Si(nb.si(B2:F2;"O")>0;1;0) + Somme($G$1:G1)
tirer la formule vers le bas
0
Funky
 
Bounjour,

J'ai essayé votre formule et il me semble qu'il y a un souci !

DM1 N N N O O 1 OK la fonction me donne 1
DM2 N O O O N 2 OK la fonction donne 1 et la somme est de 2
DM3 N N N N O 4 OK la fonction donne 1 mais la somme devrait être de 3
DM4 O O N N O 8 ...
DM5 N N N N N 15 ...

La fonction est juste merci, mais c'est la somme qui pose problème !

Merci

Funky
0
wilfried_42 Messages postés 912 Statut Contributeur 245
 
re:

bizarre, meme si la formule n'est pas bonne, les resultats que tu donne ne correspondent pas à la formule
en G1 : mettre 0
en G2 : =SI(NB.SI(B2:F2;"O")>0;1;0) + G1
0
Funky
 
Re,

Effectivement en mettant + G1 et non somme cela fonctionne je croix, je vais faire quelques essai encore.

Merci pour la vitesse de tes réponses et d'avoir pris le temps.

Funky
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Bonjour à vous deux,
Si je peu me permettre un pti grain de sel..
En G2 mettre
=SI(NB.SI(B2:F2;"O")>0;1;0) +G1
et tirer vers le bas.
A+
EDIT:
Désolé Wilfried, je n'ai pas actualiser avant d'envoyer ma réponse.
0
Funky
 
Maintenant est-il possible de réduire cette formule sur une seule cellule?

Merci

Funky
0
wilfried_42 Messages postés 912 Statut Contributeur 245
 
re:

Oui, mais on va taper sur une Formule Matricielle, gourmande en ressource
Formule à valider avec Ctrl + Maj + Entree
=SOMME(SI(NB.SI(DECALER($B$2;LIGNE($G$2:G2)-2;0;1;5);"O")>0;1;0))

si la validation est correcte, des {} encadreront la formule automatiquement

j'y revient car je ne suis pas sur d'avoir répondu correctement

la Cellule B1 est vide
Formule matricielle à mettre en G2
=SOMME(SI(NB.SI(DECALER($B$2;LIGNE(INDIRECT("$G$2:G" & NBVAL(B:B)+1))-2;0;1;5);"O")>0;1;0))


la cellule B1 contient une info
Formule Matricielle à mettre en G2
=SOMME(SI(NB.SI(DECALER($B$2;LIGNE(INDIRECT("$G$2:G" & NBVAL(B:B)))-2;0;1;5);"O")>0;1;0))
0
Funky
 
OK merci,

Peux-tu m'expliquer comment fonctionne cette formule que je l'adapte à la mise en forme du tableau définitif.

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
wilfried_42 Messages postés 912 Statut Contributeur 245
 
re:

c'est assez compliquer, elle fonctionne comme (en VBA) une boucle FOR NEXT

=SOMME(SI(NB.SI(DECALER($B$2;LIGNE(INDIRECT("$G$2:G" & NBVAL(B:B)))-2;0;1;5);"O")>0;1;0))

INDIRECT("$G$2:G" & NBVAL(B:B)) : defini une plage selon le nombre de valeurs présentes dans la colonne B
si tu as 5 valeurs dans la colonne B
tu aras une plage definie : G2:G5 soit 4 lignes
LIGNE(INDIRECT("$G$2:G" & NBVAL(B:B))) : comme c'est une formule matricielle selon l'exemple ci-dessus, ligne prendra successivement les valeurs 2,3,4,5
(j'ajoute un -2 à ligne pour démarrer à la valeur 0 et dans l'ordre suivant les valeurs seront successivement 0,1,2,3)
DECALER($B$2;LIGNE(INDIRECT("$G$2:G" & NBVAL(B:B)))-2;0;1;5) decaler me permet de definir une 2 eme matrice (horizontale) qui se deplacera en fonction des valeurs 0,1,2,3
Decaler(cellule; ligne; colonne; Nbligne; Nbcolonne)
cellule : $B$2
ligne : les valeurs successives 0,1,2,3 (calculée avec ligne (......)-2)
colonne : 0 pas de decalage colonne
Nbligne : 1 ligne à prendre en compte
Nbcolonne : 5 Colonnes à prendre en compte

le reste ressemble à la premiere

je ne sais pas si je suis tres clair lol
0
Funky
 
Merci pour ces explications.

Je vais essayer de comprendre mais c'est pas facile du premier coup.

Maintenant, il est possible de mettre une ligne vide entre chaque (PM)?
0
wilfried_42 Messages postés 912 Statut Contributeur 245
 
re:

oui mais il faut modifier : & NBVAL(B:B))
par : & NBVAL(B:B)*2)
0
Funky
 
Ok c'est tout bon mais je ne comprend pas très bien à quoi sert le INDIRECT("$G$2:G" le $G$2:G correspond à quoi?

Merci
0
wilfried_42 Messages postés 912 Statut Contributeur 245
 
re:

INDIRECT transforme un adressage String en Adressage cellule
INDIRECT("G2:G" & nbval(G:G)) Donnera une plage G2Gxxx xxx étant le nombre de valeurs dans G

En creant une matrice evolutive, j'oblige la formule matricielle à boucler sur cette matrice avec ligne(..........) en fonction du nombre de lignes desiré

ce qui implique que je traite xxx fois la plage C2:F2 en evoluant à chaque fois d'une ligne donc
C2:F2 puis C3:F3 puis C4:F4......... jusqu'à xxx
0