Problème pour formule NB.SI

Résolu
nyco12 Messages postés 33 Statut Membre -  
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

Je fais appel à vous, les experts d'Excel car je souhaiterais faire une formule NB.SI qui prendrait en compte les données inscrites sur plusieurs feuilles d'un même classeur.

Voici la formule NB.SI que j'ai faite sur la feuille dénommée "MARS 2017" =NB.SI(A1:L60;"LIBRE")
Celle-ci fonctionne parfaitement (en même temps rien de plus facile)

En revanche j'aimerais pouvoir, plutôt que de faire cette formule sur toute les feuilles du classeur et ensuite d'additionner le résultat, faire une formule NB.SI dans la feuille récap. qui irait rechercher sur la même plage (A1:L60) de toutes les feuilles du classeur, le même mot "LIBRE"

Le nom des feuilles sont par exemple : MARS 2017, AVRIL 2017, MAI 2017....

Pouvez vous m'aider sur ce point.

Merci d'avance pour toutes vos réponses.

Bien amicalement.
Nyco

5 réponses

Résumé de la discussion

Le besoin est de compter, sur l’ensemble des feuilles d’un classeur, les occurrences de la valeur « LIBRE » sans multiplier les NB.SI par chaque onglet, afin d’obtenir un total unique dans le récapitulatif. Des solutions proposées utilisent une liste des noms de feuilles et une fonction INDIRECT associée à NB.SI ou SOMMEPROD pour agréger les résultats sur toutes les feuilles. L’exemple courant consiste à placer les noms des feuilles dans une plage A1:A12 et à utiliser =SOMMEPROD(NB.SI(INDIRECT($A$1:$A$12&"!A1:L60"),"LIBRE")) pour un total global. D’autres approches évoquées traitent les cas où les cellules demeurent vides en les convertissant en zéro via SIERREUR et adaptent les plages lorsqu’il faut étendre la recherche à des colonnes supplémentaires.

Bobot (l'IA à votre service)
  1. PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   835
     
    Bonjour Nico12

    Une idée

    =NB.SI('mars 2017'!A1:L60;"libre")+NB.SI('avril 2017'!A1:L60;"libre")+NB.SI('mai 2017'!A1:L60;"libre")

    vous additionnez les douze feuilles
    0
    1. nyco12 Messages postés 33 Statut Membre
       
      Merci Philou,

      C'est une solution, pas moyen en revanche de mettre quelque chose comme :
      =NB.SI('mars 2017':'mai 2017'!A1:L60;"libre") ?

      Merci de votre aide !
      0
  2. nyco12 Messages postés 33 Statut Membre
     
    Bonjour à tous,

    1/J'ai cru voir sur certains forums que nous pouvions créer la formule NB.SI.3D ?
    Celle-ci me servirait à savoir combien de fois la valeur "LIBRE" est inscrite dans le classeur entier sur les onglets nommés de Janvier à Décembre.

    Cela m'éviterait de créer des tonnes de formules dans chacun des onglets et ensuite de les additionner. (J'ai excel 2013)

    2/ Sur chaque onglets, j'ai le numéro de la semaine avec un nombre d'heure.
    exemple, dans la cellule A15 "TOTAL SEMAINE 5" et en cellule G15, le nombre d'heure s'y référant.
    Je souhaiterais mettre dans le récap que si dans le classeur la cellule s'appelle "TOTAL SEMAINE 5" qu'il me copie les heures y figurant afin de faire un global sur l'année.

    Pouvez vous m'aider svp ?

    Merci à tous de votre aide.

    Nyco
    0
  3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonsoir Nico

    Avec la formule de Jacques Boisgontier (voir d'autres exemples sur son site):
    Dans la feuille RECAP mettre par exemple en A1:A12 les noms des 12 onglets, puis dnas une cellule la formule :
    =SOMMEPROD(NB.SI(INDIRECT($A$1:$A$12&"!A1:L60");"LIBRE"))

    Cdlmnt
    Via
    0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    tu peux aussi mettre ton nb.si() sur chaque feuille et faire une somme 3D.
    eric
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Jauster Messages postés 142 Statut Membre 42
     
    Bonsoir,

    En utilisant une Function à insérer dans un module :

    Function monNbSi(rng As Range, criteria) As Long
        Dim ws As Worksheet
    
        For Each ws In ThisWorkbook.Worksheets
            'If ws.name <> "Feuil1" And ws.name <> "Feuil2" Then 'si tu souhaites éviter certaines feuilles
                monNbSi = monNbSi + WorksheetFunction.CountIf(ws.Range(rng.Address), criteria)
            'End If
        Next ws
    End Function
    
    


    S'utilise ainsi : =monNbSi(plage;critère), donc =monNbSi(A1:L60;"LIBRE")
    0
    1. nyco12 Messages postés 33 Statut Membre
       
      Bonsoir Jauster,

      Merci déjà de ton aide.
      J'ai bien crée ma fonction mais lorsque je veux la mettre en application comme tu me l'as écrit.
      Il me met le message d'erreur suivant.

      "Attention votre classeur contient une ou plusieurs références circulaires qui risquent d'entraîner des erreurs de calcul dans vos formules."

      Pouvez vous de nouveau me venir en aide.
      Merci d'avance.

      Nyco.
      0
    2. Jauster Messages postés 142 Statut Membre 42 > nyco12 Messages postés 33 Statut Membre
       
      Salut, peux-tu joindre le fichier ici ? merci
      0
    3. nyco12 Messages postés 33 Statut Membre > Jauster Messages postés 142 Statut Membre
       
      Oui je peux bien sur mais (je n'ai pas ouvert mes yeux) je ne trouve pas comment joindre le fichier... :-/
      Peux tu m'aider ? Merci d'avance
      0
    4. Jauster Messages postés 142 Statut Membre 42
       
      https://wetransfer.com/
      Et il faut ensuite partager le lien ici
      0
    5. nyco12 Messages postés 33 Statut Membre
       
      Voici : https://we.tl/6j1sDXDJDh
      Merci de ton aide.
      0