Nb.si et critere avec formule

Bonjour a tous,

j ai un gros tableau pour lequel je souhaite faire la somme ligne par ligne du nombre de cellule dont la difference entre le nombre situé apres le tiret et le nombre situé avant le tiret est egale a 8.

J etais partie sur nb.si avec cette idée :

=NB.SI(B3:L3;DROITE(B3:L3;NBCAR(B3:L3)-TROUVE("-";B3:L3))-GAUCHE(B3:L3;TROUVE("-";B3:L3)-1)=8)

je vois bien que ca marche pas a cause du critere...j ai essayé en matricielle, avec somme.prod, ... mais j y arrive pas, si quelqu un pouvait me mettre sur une piste.

Merci a tous !

flore

4matricielle.xlsx (10.42 Ko)

Bonjour,

Ci-joint ton fichier avec une proposition...

En espèrant que cela t'aide ...

8matricielle.xlsx (10.14 Ko)

super merci beaucoup, je m etais emmelée les crayons....

Bonne journée !

super merci beaucoup, je m etais emmelée les crayons....

Bonne journée !

De rien ...

Content que cela puisse t'aider ...

bonjour

Après test

=SOMME(SIERREUR(SI(STXT(B3:L3;CHERCHE("-";B3:L3)+1;3)-STXT(B3:L3;1;CHERCHE("-";B3:L3)-1)*1=8;1;"");0))

matricielle aux trois touches

cordialement

...je bloque encore sur une variante de ma demande initiale...

j ai integré une fonction getcolor qui determine la couleur de fond d une cellule. Et maintenant je veux que sur la plage, "justif" compte pour 8 + si sur la plage il y a des cellules avec le meme fond que A1 alors je veux trouver la difference 8-(deuxieme partie apres le "-" - premiere partie avec le tiret)

je comprend pas pourquoi ma formule ne marche pas .

Aussi, je n arrive pas a faire en sorte que le calcul de la fonction personnalisée getcolor se mette a jour tout seul, j ai vu qui fallait utilier application.volatile, mais je sais pas trop ou le mettre....

Function getColor(laRange As Range) As Double
Application.Volatile
getColor = laRange.Interior.Color
End Function
1matricielle.xlsm (16.14 Ko)

Re,

La fonction personnalisée que tu as construire pour obtenir une couleur ne fonctionne qu'avec une cellule et n'accepte pas une plage de cellules ...

Je ne sais pas exactement où tu veux en venir ...

Mais dans la mesure où tu maitrises les fonctions personnalisées ... pourquoi ne vas-tu pas au bout de ta logique pour construire d'un seul bloc celle don tu as besoin ... ???

en fait j ai trouvé cette fonction personnalisée un peu par hasard sur un forum...je suis capable de comprendre un code VBA simple mais pas de le faire seule (pas encore!, j y compte bien un jour )

je comprends pas quand tu dis que la fonction ne s applique pas a une plage ?! Meme si la formule dans laquelle est imbriquée cette focntion personnaliée est matricielle je ne peux pas l appliquer a une plage ? c est ca ?

Qu est ce qui fait que ca s applique qu a une cellule et pas une plage alors ?

j ai deja regardé sur internet, j ai pas trouvé ce que je voulais.

Ou alors y a t il une autre merhode ?

merci pour ton aide en tout cas

Bonjour,

Ci-joint ton fichier test ..

En espèrant que cela t'aide

1test-floreli.xlsm (16.85 Ko)

bon alors plus je construis ce fichier, plus je m enfonce.............

Merci vraiment pour ton aide James007, mais apres 3H d essai je viens de comprendre pourquoi ca ne marche pas et c est de ma faute, j avais oublié de preciser que la couleur en fond vient d une mise en forme conditionnelle et apparement il n est pas possible de trouver la couleur d une MFC, il faut un code qui reprend les condisitons de la MFC.....donc comme je ne maitrise pas bien VBA....j ai repris mon idee de depart , apres plusieurs essais j ai ca en matricielle

=SOMME(SIERREUR(SI(ET(TROUVE("-";A3:Q3)>=1;(DROITE(A3:Q3;NBCAR(A3:Q3)-TROUVE("-";A3:Q3))-GAUCHE(A3:Q3;TROUVE("-";A3:Q3)-1))*1<>8);8-(DROITE(A3:Q3;NBCAR(A3:Q3)-TROUVE("-";A3:Q3))-GAUCHE(A3:Q3;TROUVE("-";A3:Q3)-1));0);""))

mais qui ne marche pas

mon idee :

si egale "justif" alors = 8 sinon si la difference entre la partie a droite du "-" et la partie a gauche du "-" est differente de 8 alors alors je veux 8-(partie de droite - partie de gauche) pour obtenir le nombre d heures d absence qui sont justifées.

si quelqu un a une idee...

PS: merci aussi a tulipe pour sa formule, elle marche aussi tres bien ! je m en suis d ailleurs inspirée pour autre chose !!!

3test-floreli.xlsm (16.85 Ko)

Re,

j avais oublié de préciser que la couleur en fond vient d'une mise en forme conditionnelle et apparement il n est pas possible de trouver la couleur d une MFC, il faut un code qui reprend les conditions de la MFC.

Excellent Résumé ... !!!

Mais je ne comprends pas pourquoi ... tu es incapable de poursuivre ton raisonnement ...

Quelles sont donc ces mystérieures conditions de la MFC ...

1 . que tu as pris grand soin de ne pas expliciter

et

2. de ne pas joindre à ton fichier test ...

Re,

En relisant ton dernier message, je suis encore plus perdu qu'au début ...

Petit détail qui a une vraie importance ...( pour éviter de faire efforts inutiles ...comme rédiger une matricielle, puis une UDF... pour pas grand chose ...)

Sous quelle forme cherches-tu LA solution à ton problème :

1. Matricielle

2, Fonction Personnalisée

3. Macro standard

Et si ce n'est pas trop te demander ... un petit fichier test serait le bienvenu ...

Cela nous aurait éviter de bosser inutilement puisqu'il s'agit d'une MFC ...

Bonsoir James,

effectivement, j ai renvoyé le meme fichier joint, alors que j avais tout preparé,pas envoyé le bon .....bref entre temps j ai trouvé une solution a mon probleme, en matricielle.

Si un jour ca interesse quelqu un :

=SOMME(SIERREUR(SI(DROITE(A3:Q3;NBCAR(A3:Q3)-TROUVE("-";A3:Q3))-GAUCHE(A3:Q3;TROUVE("-";A3:Q3)-1)<>8;(8-(DROITE(A3:Q3;NBCAR(A3:Q3)-TROUVE("-";A3:Q3))-GAUCHE(A3:Q3;TROUVE("-";A3:Q3)-1)));"");0))+NB.SI(A3:Q3;"justif")*8

Merci un tout cas, ca m a permis d y voir un peu plus clair dans les formules matricielles !

Désolé pour les explications pas toujours claires, je fais de mon mieux pourtant ... , vraiment !

Merci

PS : c est quoi UDF ?

Content que tu aies pu résoudre ton problème ...

Rechercher des sujets similaires à "critere formule"