IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

formule dans excel NB.SI(plage;critère)


Sujet :

Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut formule dans excel NB.SI(plage;critère)
    Bonjour les crack du développement, j'ai une petite question pour vous.

    Je débute dans excel, et j'ai créé un tableau de service pour le travail, dans les cellules d'un volet de celui-ci, je comptabilise les jours de repos, congés et de crédits... .
    J'ai trouvé et j'utilise la formule suivante: NB.SI(plage;critère)
    Cela fonctionne très bien

    exemple:
    =NB.SI($O7:$AS7;"=JC")+(NB.SI($O7:$AS7;"=JC/2")/2)+(NB.SI($O7:$AS7;"=CN/2+JC/2")/2)

    dans mon exemple, je recherche les cellules entre O7 et AS7 ou se trouve les
    symboles JC , JC/2 et CN/2+JC/2
    Mais, ni a t'il pas possibilité d'écrire la formule de façon plus courte, plutôt que de re écrire chaque fois la formule en entier.

    Merci d'avance pour votre réponse.

    Philippe

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour Philhub,

    Pourquoi êtes-vous obligés de ré-écrire la formule ?

    -dans la même feuille sur les lignes suivantes ?
    dans ce cas il suffit de cliquer sur le petit carré en bas et à droite du rectangle qui entoure la cellule sélectionnée puis sans lâcher le bouton de glisser jusqu'à la dernière ligne.
    Vous pouvez faire aussi un copier/coller.

    -dans une autre feuille : vous faites un copier/coller et vous modifiez éventuellement les lignes et/ou les colonnes puis ensuite idem ci-dessous.

    si c'est pour un autre cas, il faut le préciser, car je ne vois pas.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour, je me suis mal fais comprendre.
    Je connais votre méthode de copier/coller et je l'ai utilisé dans mon tableau.
    Mais mon problème dans les formules est le suivant, chaque colonne reprend un type de jour bien définit, ci-dessous je reprend la cellule qui comptabilise les jours de credit; JC - JC/2 et CN/2+JC/2
    Au début dans cette cellule, j'avais comme formule:
    =NB.SI($O7:$AS7;"=JC") pour comptabilisé un jour de crédit complet (JC)
    quelque jour plutard, un agent est venu demander pour avoir un demi jour de crédit donc j'ai modifié (toujours dans la même cellule de la colonne) ma première formule en =NB.SI($O7:$AS7;"=JC")+(NB.SI($O7:$AS7;"=JC/2")/2) pour pouvoir comptabilisé un 1/2 jour de credit (JC/2)
    uelque semaine après, un autre agent ma demander pour avoir un demi jour de congé CN/2 avec un demi jour de crédit JC/2 afin de pouvoir obtenir un jour complet chez lui, donc j'ai modifié ma formule (tjrs dans la même cellule de la colonne) comme ceci et cela donne:
    =NB.SI($O7:$AS7;"=JC")+(NB.SI($O7:$AS7;"=JC/2")/2)+(NB.SI($O7:$AS7;"=CN/2+JC/2")/2)
    Cette formile fonctionne très bien ainsi mais je trouve qu'elle est longue.

    Donc ma demande est:
    Pour avoir plus facile, ni a t'il pas moyen d'écrire cette formule finale de façon plus courte du genre :=NB.SI($O7:$AS7;"=JC""=jc/2""=cn/2+jc/2") que je ne connais pas.

    Mille merçi

    Philippe

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 5
    Points : 4
    Points
    4
    Par défaut formule dans execl NB.SI(plage;critèrre)
    Bonjour, je me suis mal fais comprendre.
    Je connais votre méthode de copier/coller et je l'ai utilisé dans mon tableau.
    Mais mon problème dans les formules est le suivant, chaque colonne reprend un type de jour bien définit, ci-dessous je reprend la cellule qui comptabilise les jours de credit; JC - JC/2 et CN/2+JC/2
    Au début dans cette cellule, j'avais comme formule:
    =NB.SI($O7:$AS7;"=JC") pour comptabilisé un jour de crédit complet (JC)
    quelque jour plutard, un agent est venu demander pour avoir un demi jour de crédit donc j'ai modifié (toujours dans la même cellule de la colonne) ma première formule en =NB.SI($O7:$AS7;"=JC")+(NB.SI($O7:$AS7;"=JC/2")/2) pour pouvoir comptabilisé un 1/2 jour de credit (JC/2)
    uelque semaine après, un autre agent ma demander pour avoir un demi jour de congé CN/2 avec un demi jour de crédit JC/2 afin de pouvoir obtenir un jour complet chez lui, donc j'ai modifié ma formule (tjrs dans la même cellule de la colonne) comme ceci et cela donne:
    =NB.SI($O7:$AS7;"=JC")+(NB.SI($O7:$AS7;"=JC/2")/2)+(NB.SI($O7:$AS7;"=CN/2+JC/2")/2)
    Cette formile fonctionne très bien ainsi mais je trouve qu'elle est longue.

    Donc ma demande est:
    Pour avoir plus facile, ni a t'il pas moyen d'écrire cette formule finale de façon plus courte du genre :=NB.SI($O7:$AS7;"=JC""=jc/2""=cn/2+jc/2") que je ne connais pas.

    Mille merçi

    Philippe

  5. #5
    Membre averti Avatar de Tdeny
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 287
    Points : 311
    Points
    311
    Par défaut
    Bonjour,

    Pour ne pas tout réécrire, tu peux entrer tes critères dans des cellules.
    NB.SI($O7:$AS7;$A$1) par exemple. Même dans une autre feuille.
    Il suffit de cliquer sur la cellule pour la mettre dans critères.
    Vendez votre habileté et achetez l’ahurissement.
    L’habileté est seulement l’opinion, l’ahurissement l’intuition.
    Djalal–eddine Roumi

  6. #6
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    Bonjour à tous

    il y a bien sommeprod, mais pas sur que ce ne soit pas plus compliquer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI($O7:$AS7;"=JC")+(NB.SI($O7:$AS7;"=JC/2")/2)+(NB.SI($O7:$AS7;"=CN/2+JC/2")/2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =sommeprod(($O$7:$AS$7="JC")*$O$7:$AS$7)+(SOMMEPROD(($O$7:$AS$7=OU("CN/2";"JC/2";"CN/2+JC/2))*$O$7:$AS$7)/2)
    Franchement pas sur que cela soit plus simple lol, pas de Nb.si multicriteres à ma connassance

    Bonne soirée
    Wilfried

  7. #7
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Ou alors, tu peux faire ta propre formule NB.SI multi criteres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Public Function Nb_SI_MULTI(plage As Range, critere1 As String, critere2 As String, critere3 As String) As Long
    Dim i As Long
    i = 0
     
    For Each cell In plage.Cells
     
        Select Case cell.Value
            Case critere1, critere2, critere3
                i = i + 1
        End Select
     
     
    Next
     
    Nb_SI_MULTI = i
     
    End Function
    et dans la cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Nb_SI_MULTI(D1:D4;"tot";"ta";"te")
    Jérôme

  8. #8
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    pour sommer tes critéres
    tu entre la plage des critères nb.si(plage;plage_critere)
    valable que pour le comptage en unité

    Daranc

  9. #9
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    ca ne fonctionne pas chez moi.
    as tu un exemple qui fonctionne
    Jérôme

  10. #10
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    re:

    un peu dans le style de jfontaine mais avec un nombre indeterminé de valeurs
    Deux fonctions personalisées

    Une pour l'apha et une pour des entiers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function gw_nb_si_multi_alpha(plage As Range, critere As String) As Long
     
        Dim i As Integer
        Dim tablo
        tablo = Split(critere, ",")
        Dim gwcel As Range
        gw_nb_si_multi = 0
        For Each gwcel In plage
            For i = LBound(tablo) To UBound(tablo)
                If gwcel = tablo(i) Then gw_nb_si_multi_alpha = gw_nb_si_multi_alpha + 1
            Next i
        Next
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Function gw_nb_si_multi_entier(plage As Range, critere As String) As Long
     
        Dim i As Integer
        Dim tablo1, tablo() As Long
        tablo1 = Split(critere, ",")
        ReDim tablo(UBound(tablo1)) As Long
        For i = LBound(tablo1) To UBound(tablo1)
            tablo(i) = Val(tablo1(i))
        Next i
     
        Dim gwcel As Range
        gw_nb_si_multi = 0
        For Each gwcel In plage
            For i = LBound(tablo) To UBound(tablo)
                If gwcel = tablo(i) Then gw_nb_si_multi_entier = gw_nb_si_multi_entier + 1: Exit For
            Next i
        Next
    End Function
    syntaxe :

    =gw_nb_si_multi_alpha(A1:A10;"CA,CM,CT")

    =gw_nb_si_multi_entier(A1:A10;"1,5,3,6,9,7")
    Wilfried

  11. #11
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jfontaine Voir le message
    ca ne fonctionne pas chez moi.
    as tu un exemple qui fonctionne
    le classeur joint
    j'ai oublié de préciser qu'il faut CtrlShiftentreé(er) la formule
    touche f9 pour changer le tableau
    Daranc

  12. #12
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    re:

    tu triches, tu utilises le formules matricielles ---> il va falloir que je m'y interresse lol, je n'ai toujours pas compris leur fonctionnement
    Wilfried

  13. #13
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    Les formules matricielles
    un grand nom pour dire de travailler par tableau
    nb.si est une formule "matricielle" en quelle que sorte
    la fonction "prends" chaque valeur du tableau et la compare a un critère de référence.
    lorsque tu te mets en matricielle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ={somme(si(a1:a100>25;b1:b100;0))}
    pour chaque cellule de a1 a a100 lorsque fois que se vérifie la condition >25 la valeur correspondant en b1:b100 est additionnée la mise en matricielle fait juste travailler sur les tableaux
    la même chose que remplir la colonne D avec et en d101 ce qui explique que les fonctions matricielles soient gourmandes en ressources
    Daranc

  14. #14
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    re:

    Merci daranc pour cette explication, je commence à saisir le fonctionnement

    je vais continuer à les etudier

    Cordialement
    Wilfried
    Wilfried

Discussions similaires

  1. Masquer les formules dans Excel 2007
    Par ruru9 dans le forum Excel
    Réponses: 1
    Dernier message: 08/01/2008, 15h43
  2. Insertion de formule dans Excel
    Par PIALOU dans le forum VBScript
    Réponses: 4
    Dernier message: 09/10/2007, 23h59
  3. formule dans Excel
    Par magictom42 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/10/2006, 14h00
  4. PRoblème de formule dans Excel
    Par jbidou88 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 11/05/2006, 09h35
  5. EXCEL NB.SI(plage;critère)
    Par Devwil dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/12/2005, 21h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo