XL 2010 compter uniquement les cellules avec le format 00:00:00

  • Initiateur de la discussion Initiateur de la discussion chac10
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

chac10

XLDnaute Junior
Bonjour,

Je rencontre un problème insoluble 🙂 en tous cas pour le moment !!
En effet, je souhaiterais compter le nombre de cellule avec le format heure et surtout avec la valeur 00:00:00
sur une plage de donnée.
Aujourd'hui , excel confonds le format heure et le format nombre 0
Donc lorsque je fais la formule qui suit nb.si(plage de donnée; "00:00:00"), il me donne le même résultat que si je faisais nb.si(plage de donnée; 0)
Je vous remercie pour votre aide.

Cordialement,
Chac10
 

Pièces jointes

Bonjour Chac,
Je ne connais aucune fonction XL qui différencie les formats. Mais peut être existe t-elle. 🙂
Solution : passer par une fonction perso :
VB:
Function CompterHeureNulle(Plage)
    Dim c, N%: N = 0
    For Each c In Plage
        If c = 0 And c.NumberFormat = "h:mm:ss" Then N = N + 1
    Next c
    CompterHeureNulle = N
End Function
Syntaxe : =CompterHeureNulle(D10:H10)
voir PJ.
 

Pièces jointes

Bonjour Chac,
Je ne connais aucune fonction XL qui différencie les formats. Mais peut être existe t-elle. 🙂
Solution : passer par une fonction perso :
VB:
Function CompterHeureNulle(Plage)
    Dim c, N%: N = 0
    For Each c In Plage
        If c = 0 And c.NumberFormat = "h:mm:ss" Then N = N + 1
    Next c
    CompterHeureNulle = N
End Function
Syntaxe : =CompterHeureNulle(D10:H10)
voir PJ.
Bonjour Sylvanu,

idem au top, c'est vrai que j'ai cherché un petit moment.
J'ai même tenté une approche par la couleur de la mise en forme conditionnelle.
Mais cela ne fonctionnait pas, il faudrait ajouter une colonne supplémentaire, chose que je ne peux pas faire.
Merci beaucoup encore , vous m'avez facilité la tâche car vos fonctions sont efficaces !!

Chac10
 
Sylvanu, Job 75,

j'ai un problème lorsque je fais la moyenne d'une série d'heure.
En effet, je souhaiterai ne pas tenir compte des heures qui sont à zéro, car les personnes sont tous simplement absente. C'est un indicateur pour moi, car il me permet d'avoir une idée du temps passée sur une tâche.
Le fait qu'une personne soit la ou non à une implication sur mon analyse.
un temps de zéro n' a pas de sens en soi, or dans la moyenne classique , ce temps nul est pris en compte ce qui par logique réduit le temps moyen. car le nombre de personne ne change pas.

Est ce qu'il existe une fonction permettant de faire cette moyenne sans prendre en compte les valeurs à zero (format heure) . D'où d'ailleurs ma demande ci dessus, je préférais faire une formule unique plutôt que d'imbriquer que celle que vous m'avez transmise avec brio d'ailleurs 🙂

en vous remerciant,

Chac10
 

Pièces jointes

Ou encore mieux avec une fonction perso qui tient compte du format :
VB:
Function MoyenneSiNonNulle(Plage)
    Dim c, N%, S: N = 0: S = 0
    For Each c In Plage
        If c <> 0 And c.NumberFormat = "h:mm:ss" Then
            N = N + 1
            S = S + c
        End If
    Next c
    If N > 0 Then
        MoyenneSiNonNulle = S / N
    Else
        MoyenneSiNonNulle = ""
    End If
End Function
Syntaxe : =MoyenneSiNonNulle(D10:H10)
 

Pièces jointes

Ou encore mieux avec une fonction perso qui tient compte du format :
VB:
Function MoyenneSiNonNulle(Plage)
    Dim c, N%, S: N = 0: S = 0
    For Each c In Plage
        If c <> 0 And c.NumberFormat = "h:mm:ss" Then
            N = N + 1
            S = S + c
        End If
    Next c
    If N > 0 Then
        MoyenneSiNonNulle = S / N
    Else
        MoyenneSiNonNulle = ""
    End If
End Function
Syntaxe : =MoyenneSiNonNulle(D10:H10)
Pas mal du tout merci Sylvanu !!
J'ai une dernière requête , j'ai un fichier de suivi journalier construit jour par jour de manière horizontale
En fin de semaine, je fais une synthèse , c'est pourquoi j 'ai besoin de faire des moyennes de deux temps principaux. Avec la fonction moyenne si, je constate qu'elle fonctionne par plage ce qui pose problème car elle prends donc des éléments dont je ne veux pas.
Y aurait il un moyen de contourner le problème, pour avoir la moyenne de la semaine et qu'elle ne compte que les heures <> de zéro. ( avec le fichier joint tu comprendras mieux je pense 🙂

En utilisant ta formule , je parviens à obtenir un résultat.
Mais il y a peut- être un moyen plus simple dont je n'ai pas la connaissance?
Chac 10
 

Pièces jointes

Re,
J'ai l'impression que tout ce qu'on a fait ce matin n'a servi à rien.
Une nouvelle fonction :
VB:
Function MoyParSemaine(J1 As Range, J2 As Range, Optional J3 = 0, Optional J4 = 0, Optional J5 = 0, Optional J6 = 0, Optional J7 = 0)
    Dim c, N%, S: N = 0: S = 0
    On Error Resume Next
    If J1 <> 0 Then N = N + 1: S = S + J1
    If J2 <> 0 Then N = N + 1: S = S + J2
    If J3 <> 0 Then N = N + 1: S = S + J3
    If J4 <> 0 Then N = N + 1: S = S + J4
    If J5 <> 0 Then N = N + 1: S = S + J5
    If J6 <> 0 Then N = N + 1: S = S + J6
    If J7 <> 0 Then N = N + 1: S = S + J7
    If N > 0 Then
        MoyParSemaine = S / N
    Else
        MoyParSemaine = ""
    End If
End Function
Syntaxe : =MoyParSemaine(J7;Y7;AL7) avec nombre de paramètres compris entre 2 et 7, pour faire une semaine.
 

Pièces jointes

Sylvanu ,
Tout ce que l'on a fait a servi !!!
La moyenne si est déjà en place pour exemple.
La première me sera utile peut être dès à présent ou un jour ou l'autre , elle est top et la je vais découvrir celle que tu as composé. Je choisirai entre les deux.

Et crois moi, ca m'instruit beaucoup !!!

Je te remercie énormément pour ton soutien.
Chac10
 
Re,
J'ai l'impression que tout ce qu'on a fait ce matin n'a servi à rien.
Une nouvelle fonction :
VB:
Function MoyParSemaine(J1 As Range, J2 As Range, Optional J3 = 0, Optional J4 = 0, Optional J5 = 0, Optional J6 = 0, Optional J7 = 0)
    Dim c, N%, S: N = 0: S = 0
    On Error Resume Next
    If J1 <> 0 Then N = N + 1: S = S + J1
    If J2 <> 0 Then N = N + 1: S = S + J2
    If J3 <> 0 Then N = N + 1: S = S + J3
    If J4 <> 0 Then N = N + 1: S = S + J4
    If J5 <> 0 Then N = N + 1: S = S + J5
    If J6 <> 0 Then N = N + 1: S = S + J6
    If J7 <> 0 Then N = N + 1: S = S + J7
    If N > 0 Then
        MoyParSemaine = S / N
    Else
        MoyParSemaine = ""
    End If
End Function
Syntaxe : =MoyParSemaine(J7;Y7;AL7) avec nombre de paramètres compris entre 2 et 7, pour faire une semaine.
Bravo, c'est magnifique, tu m'as simplifié la tâche grave.
Merci beaucoup, ta fonction marche parfaitement.
Il y a possibilité sur le site de parler en privé ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
503
Retour