nb.si(....) avec un nombre de réponse

ninanani

XLDnaute Occasionnel
Bonjour,

Ci joint un fichier où je n'arrive pas à appliquer correctement ma formule, ou alors je n'utilise peut etre pas la bonne formule :/

Je souhaiterais qu'excel me donne le nombre de ligne ou appairait à la fois "2012" ET "demande de devis", soit pour l'exemple, le chiffre 3.

J'espère que vous pourrez m'aider à trouver mon erreur et me donner une formule plus adaptée.

Merci par avance
 

Pièces jointes

  • Classeur1.xls
    13.5 KB · Affichages: 33
  • Classeur1.xls
    13.5 KB · Affichages: 38
  • Classeur1.xls
    13.5 KB · Affichages: 44

ninanani

XLDnaute Occasionnel
Re : nb.si(....) avec un nombre de réponse

Merci pour ra réponse rapide :)

Une autre petite question:
J'aimerais ne pas définir de plage au niveau de la colonne mais de mettre toute la colonne A
=SOMMEPROD((A:A=H5)*(C:C=G5))

Excel m'affiche alors #nombre
 

ninanani

XLDnaute Occasionnel
Re : nb.si(....) avec un nombre de réponse

Est ce que ce serait parce que dans mes colonnes A et C, au bout d'un moment, il y a rien dans les cellules?

Le problème c'est que c'est une base de donnée qui s'agrandis de jour en jour, je suis donc obligée d'inclure toute les colonnes A et C
 

Habitude

XLDnaute Accro
Re : nb.si(....) avec un nombre de réponse

Bonjour

Pour les plages dynamique

SommeProd avec Indirect

Code:
=SOMMEPROD((INDIRECT("A1:A"&NBVAL($A:$A))=H4)*(INDIRECT("C1:C"&NBVAL($A:$A))=G4))

OU

Matricielle avec Somme(si

Code:
=SOMME(SI((A:A=H4)*(C:C=G4);1;0))

Valider avec ctrl-Maj-Entrée {}
 

Misange

XLDnaute Barbatruc
Re : nb.si(....) avec un nombre de réponse

Bonjour

mais non tu n'es pas obligée de le faire sur toute la colonne. Il est même fortement recommandé de ne pas le faire, les fonctions sommeprod étant assez gourmandes en ressources.
définis tes plages de façon dynamique avec la fonction decaler

va dans insertion/nom/définir
j'ai défini deux noms : type et année en utilisant cette fonction
ta formule devient alors
=SOMMEPROD((type=H5)*(année=G5))
attention : il faut que le nombre de données dans tes deux colonnes soit identique pour que sommeprod fonctionne et il faut aussi qu'il n'y ait rien d'autre que les données dans ces deux colonnes, et pas de "trous"

plus d'infos sur decaler et son usage dynamique :
Ce lien n'existe plus

avec ça quand tu ajoutes des données dans tes deux colonnes, le calcul se fait tout seul automatiquement
 

Pièces jointes

  • Copie de Classeur1(1).xls
    25 KB · Affichages: 36
  • Copie de Classeur1(1).xls
    25 KB · Affichages: 30
  • Copie de Classeur1(1).xls
    25 KB · Affichages: 37

ninanani

XLDnaute Occasionnel
Re : nb.si(....) avec un nombre de réponse

Re,

Habitude, merci pour tes réponses.
Je ne saisi pas tout à fait la formule suivante: =SOMMEPROD((INDIRECT("A1:A"&NBVAL($A:$A))=H4)*(INDIRECT("C1:C"&NBVAL($A:$A))=G4))

En rouge ce que je ne comprend pas. Ma selection se fait sur une autre feuille, dois-je remettre 'CAV_base'!et ma plage?

A Misange. Merci également
Ta solution me semble la plus appropriée, surtout que je vais devoir avoir un grand nombre de formule somme prod dans mon classeur. Le problème est que dans ma base de donnée, j'ai quelque fois des cellules vides. Cela va donc poser pb?
 

R@chid

XLDnaute Barbatruc
Re : nb.si(....) avec un nombre de réponse

Bonjour,
Avec Plages Dynamiques,
voir PJ
Amicalement

Edit : Pardon ma chère Misange, j'ai pas vu ta réponse :cool::p
 

Pièces jointes

  • PlagesDynamiques.xls
    23.5 KB · Affichages: 28
Dernière édition:

hbenalia

XLDnaute Occasionnel
Re : nb.si(....) avec un nombre de réponse

Bonjour à tous,

La formule
Code:
=SOMMEPROD((A:A=H5)*(C:C=G5))
n'est valable que dans la version d'Excel 2010. Pour les autres versions, la hauteur des colonnes doit être limitée et de même taille. Dans ces versions, on pourra utiliser les plages dynamiques par Nom ou directement dans les formules, avec utilisation de la fonction INDIRECT ou la fonction DECALER ou autres...

Cordialement
 

Misange

XLDnaute Barbatruc
Re : nb.si(....) avec un nombre de réponse

Re,

Habitude, merci pour tes réponses.
Je ne saisi pas tout à fait la formule suivante: =SOMMEPROD((INDIRECT("A1:A"&NBVAL($A:$A))=H4)*(INDIRECT("C1:C"&NBVAL($A:$A))=G4))

En rouge ce que je ne comprend pas. Ma selection se fait sur une autre feuille, dois-je remettre 'CAV_base'!et ma plage?

A Misange. Merci également
Ta solution me semble la plus appropriée, surtout que je vais devoir avoir un grand nombre de formule somme prod dans mon classeur. Le problème est que dans ma base de donnée, j'ai quelque fois des cellules vides. Cela va donc poser pb?

Oui cela va poser un problème les cellules vides si tu utilises la fonction decaler pour définir les plages. Cette formule définit la plage en partant de la première cellule de la colonne et compte le nombre de cellules que cette colonne contient (=nbval($A:$A)
Si une cellule est vide, elle n'est pas comptée et donc la plage sera trop courte, les dernières valeurs ne seront pas prises en compte.
C'est le même problème avec la solution proposée par Habitude.

coucou Rachid
 
G

Guest

Guest
Re : nb.si(....) avec un nombre de réponse

Re bonjour,
Bonjour à tous.

Peut-être avec:
Code:
=SOMMEPROD((INDIRECT("A1:A" & EQUIV("ùùùùù";A:A;1))="Demande de devis")*(INDIRECT("C1:C" & EQUIV("ùùùùù";A:A;1))=2012))

Où 'ùùùùùù' est une valeur improbable à chercher dans la colonne A.

A+
 

david84

XLDnaute Barbatruc
Re : nb.si(....) avec un nombre de réponse

Bonjour,
Oui cela va poser un problème les cellules vides si tu utilises la fonction decaler pour définir les plages. Cette formule définit la plage en partant de la première cellule de la colonne et compte le nombre de cellules que cette colonne contient (=nbval($A:$A)
Si une cellule est vide, elle n'est pas comptée et donc la plage sera trop courte, les dernières valeurs ne seront pas prises en compte.
C'est le même problème avec la solution proposée par Habitude.
S'il y a des lignes vides, définir les plages comme ceci :
type :
Code:
=DECALER(Feuil1!$A$1;1;;MAX(SI(Feuil1!$A$1:$A$1000<>"";LIGNE(Feuil1!$A$1:$A$1000)))-1)
année :
Code:
=DECALER(Feuil1!$B$1;1;;MAX(SI(Feuil1!$B$1:$B$1000<>"";LIGNE(Feuil1!$B$1:$B$1000)))-1)
A+
 

Discussions similaires

Réponses
3
Affichages
228
  • Résolu(e)
Microsoft 365 Formule SI
Réponses
8
Affichages
184

Statistiques des forums

Discussions
312 229
Messages
2 086 424
Membres
103 206
dernier inscrit
diambote