imbriquer NBVAL et SI

RVL

XLDnaute Occasionnel
Bonjour à tous,

Comment réaliser le calcul suivant (imbriquer nbval et si ?)

faire un nbval sur un zone "si les cellules correspondantes à leurs droite sont vides" ?

Ex nbval(A1:A10) si (B2:B10) = "vide" (avec B1 vide pour A1; B2 vide pour A2 B3 vide pour A3 ............)
 

mth

XLDnaute Barbatruc
Re : imbriquer NBVAL et SI

Bonjour,

Un petit essai avec cette formule :
Code:
=SOMME(SI(A1:A10<>"";SI(B1:B10="";1)))

validée par CTRL SHIFT ENTER.

@ +

mth

Edit: :) Bonjour david :)
(euh ... je pense que je n'ai rien compris à la question moi ! .... :eek: )
@ +
 

hoerwind

XLDnaute Barbatruc
Re : imbriquer NBVAL et SI

Bonjour, salut david et mth,

Il manque une précision dans la question : la plage A1:A10 comporte-t-elle des cellules vides ?
Aussi une petite erreur de frappe (du moins je suppose) : nbval(A1:A10) si (B1:B10) = "vide"

Si non : NBVAL(B1:B10)
Si oui : =SOMMEPROD((A1:A10<>"")*(B1:B10<>""))
 

RVL

XLDnaute Occasionnel
Re : imbriquer NBVAL et SI

Re effectivement j'avais fais l'erreur dans ma question (nbval(A1:A10) si (B1:B10) = "vide").

je precise de même que la plage A1:A10 comporte ou non des cellules vides (déplacements fréquents en "glisser" sur cette plage de cellules)

La sol. de mth correspont a ce que je voulais faire !
 

mth

XLDnaute Barbatruc
Re : imbriquer NBVAL et SI

re :)

bien vu hoerwind :)

Pour RVL, ok, je te prépare quelques commentaires pour tout à l'heure

Sourire ... note bien que c'est le monde à l'envers, je suis nulle en formules matricielles, et David, maître ès matricielles est sur le fil! Du coup j'espère qu'il n'hésitera pas tout à l'heure à corriger et/ou compléter mes commentaires s'ils ne lui semblent pas corrects, tout comme hoerwind .

@ tout à l'heure :)

m
 

mth

XLDnaute Barbatruc
Re : imbriquer NBVAL et SI

re :)

Voici une tentative de commentaires sur la formule utilisée tout à l’heure :

Code:
{=SOMME(SI(A1:A10<>"";SI(B1:B10="";1)))}

Consistant à compter le nombre de cellules pour lesquelles les cellules de la colonne A contiennent des valeurs saisies, alors que les cellules de la colonne B sont vides.

Sur la base d’un super fichier comme celui-ci :



En décortiquant la formule,

Première condition testée: A1:A10<>"" renvoie la matrice {VRAI;VRAI;VRAI;FAUX;FAUX;FAUX;VRAI;VRAI;VRAI;FAUX}, VRAI correspondant aux cellules non vides, FAUX aux autres.

Deuxième condition testée : B1:B10="" renvoie la matrice {VRAI;VRAI;FAUX;VRAI;VRAI;FAUX;FAUX;VRAI;VRAI;VRAI}, VRAI correspondant aux cellules vides, FAUX aux autres
SI(B1:B10="";1) renvoie la matrice {1;1;FAUX;1;1;FAUX;FAUX;1;1;1}, avec 1 si la cellule est vide, FAUX dans le cas contraire.

En réunissant les deux :
SI(A1:A10<>"";SI(B1:B10="";1)) renvoie comme résultat : {1;1;FAUX;FAUX;FAUX;FAUX;FAUX;1;1;FAUX}
C'est-à-dire 1 quand les deux conditions sont réunies, et FAUX si une au moins des conditions n’est pas vérifiée, schématiquement ça peut donner ceci :



Enfin, la formule en entier : SOMME(SI(A1:A10<>"";SI(B1:B10="";1)))} revient à faire la somme de la matrice,
Somme({1;1;FAUX;FAUX;FAUX;FAUX;FAUX;1;1;FAUX}) = 4


En plus simple, il y a la formule SOMMEPROD(), elle aussi matricielle même si elle ne se valide pas avec les trois touches.

Première condition: (A1:A10<>"") renvoie comme résultat la matrice {VRAI;VRAI;VRAI;FAUX;FAUX;FAUX;VRAI;VRAI;VRAI;FAUX}, soit VRAI pour les cellules vides de la colonne A, FAUX pour les autres.

Même raisonnement pour la seconde condition (B1:B10="") qui renvoie la matrice {VRAI;VRAI;FAUX;VRAI;VRAI;FAUX;FAUX;VRAI;VRAI;VRAI}

La multiplication des deux soit ((A1:A10<>"")*(B1:B10="")) renvoie {1;1;0;0;0;0;0;1;1;0}
En effet, dans Excel VRAI multiplié par VRAI = 1, FAUX multiplié par VRAI ou FAUX donne 0 :
(tu peux faire le test :




Et pour conclure SOMMEPROD({1;1;0;0;0;0;0;1;1;0})=4

Voilà RVL, j’espère que ce petit blabla pourra t’aider, le mieux est de décortiquer de ton coté les formules pour les observer.
Une petite astuce : La touche F9, bien pratique pour éplucher les formules, comme expliqué ICI

Bien à toi,

mth
.

Edit: sourire.... merci Calvus pour ta gentillesse, et merci RVL pour ton retour
@ + :)
 
Dernière édition:

Calvus

XLDnaute Barbatruc
Re : imbriquer NBVAL et SI

Bonsoir Mth, bonsoir le forum,

Je n'ai pas vérifié en détail tes explications ( je n'en n'aurais pas la prétention ), mais je voulais saluer ton beau travail pédagogique.

Bravo et merci au nom de tous. :)
 

david84

XLDnaute Barbatruc
A

Re,
Bravo mth, c'est très clair;)
J'apporterais un petit complément à RVL sur ce que tu viens de dire (toi, tu le sais déjà) :
=SOMME(SI(A1:A10<>"";SI(B1:B10="";1)))
peut également s'écrire
=SOMME(SI((A1:A10<>"")*(B1:B10="");1))
,
c'est à dire que tu remplaces le 2ème "si" par le "*" qui veut dire "et" en matriciel (ce qui veut dire que les 2 conditions sont cumulées en une seule). Ceci peut être intéressant lorsque tu as plusieurs conditions car selon les versions d'Excel, le nombre de conditions possibles est plafonné).

Par exemple, si tu tentes de rentrer sur les versions antérieures à 2007 :
=SOMME(SI(A1:A10<>"";SI(ESTTEXTE(A1:A10);SI(NON(ESTNUM(A1:A10));SI(NON(ESTERREUR(A1:A10));SI(NON(ESTNA(A1:A10));SI(NON(ESTERR(A1:A10));SI(B1:B10="";1))))))))
, Excel te diras qu'il ne peux entrer cette formule car elle dépasse le niveau d'imbrication autorisé.
Si par contre, tu rentres :
=SOMME(SI((A1:A10<>"")*(ESTTEXTE(A1:A10)*(NON(ESTNUM(A1:A10))*(NON(ESTERREUR(A1:A10))*(NON(ESTNA(A1:A10))*(NON(ESTERR(A1:A10))*(B1:B10=""))))));1))
, la formule sera acceptée alors que le nombre de conditions cumulées est le même, mais que les "si" sont remplacés par les "*".

Cependant, du point de vue de la compréhension, c'est plus simple de l'aborder comme mth fait.

Merci également de rappeler le rôle joué en la matière par la touche F9 (je n'ai pas l'habitude de m'en servir de la sorte).
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 331
Messages
2 087 353
Membres
103 528
dernier inscrit
hplus