XL 2019 Sommer colonne critère texte.

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 !

aurelie74

XLDnaute Nouveau
Bonjour,
Difficile d'expliciter clairement le sujet de discussion.... veuillez m'en excuser...
Ci-joint un planning mensuel plutôt banal avec par salarié, par jour, un type d'évènement.
Le type d'évènement sélectionné déclenche un nombre d'heure théorique (paramétré dans un autre onglet).
Le nombre d'heure réel sera renseigné ultérieurement.
Chaque évènement est également référencé (paramétré dans un autre onglet) comme appartenant à une tournée du matin ou du soir.
En fin de tableau, un recap souhaité du nombre d'heure totale théorique affecté par tournée ; soit par matin et par soir.

Je bloque sur la formule qui me permettrai de sommer les heures correspondantes à l'évènement 'matin' et 'soir'.
Surement des imbrications de somme prod, index, equiv, decaler...
Mais je tourne en rond...
merci pour votre aide précieuse.

=> résultat souhaité dans l'onglet matrice en lignes 61
 

Pièces jointes

Solution
Re,
Ca me semble trop complexe en formules, alors une PJ avec deux fonctions perso :
VB:
Function HeuresMatin(Plage As Range)
    Dim Evenement, cell, Temps
    Set Evenement = Sheets("PARAMETRES").[G2:J22]
    For Each cell In Plage
        If cell <> "" And Not IsNumeric(cell) Then
            On Error Resume Next
            Temps = 0
            Select Case Application.VLookup(cell, Evenement, 4, 0)
                Case "M":   Temps = Application.VLookup(cell, Evenement, 2, 0)
                Case "M+S": Temps = Application.VLookup(cell, Evenement, 2, 0) / 2
            End Select
            HeuresMatin = HeuresMatin + Temps
        End If
    Next cell
End Function
VB:
Function HeuresSoir(Plage As Range)
    Dim Evenement, cell...
Re,
Sans réponse, on peut au moins traiter le Total Journée avec une fonction perso :
VB:
Function TotalHeure(Plage As Range)
    Dim Evenement, cell
    Set Evenement = Sheets("PARAMETRES").[G2:H22]
    For Each cell In Plage
        If cell <> "" And Not IsNumeric(cell) Then
            On Error Resume Next
            TotalHeure = TotalHeure + Application.VLookup(cell, Evenement, 2, 0)
        End If
    Next cell
End Function
Mais encore une question :
On comptabilise par rapport aux heures dans Matrice, ou dans Paramètres ?
La macro compte à partir de Paramètres.
 

Pièces jointes

Bonjour,
Il serait bien de nous dire quels événements appartiennent à Matin ou Soir
Cordialement
Bonjour, effectivement je n'ai pas été suffisamment précise. La catégorie des événements se trouve dans l'onglet paramètres puisque c'est voué à être une donnée paramétrable selon l'entité
Bonjour,
Et précisez si M+S doit être comptabilisé comme Matin ou Soir.
Dans l'idéal, M+S doit pour moitié d'affecter pour moitié au matin et pour moitié au soir !
 
Re,
Sans réponse, on peut au moins traiter le Total Journée avec une fonction perso :
VB:
Function TotalHeure(Plage As Range)
    Dim Evenement, cell
    Set Evenement = Sheets("PARAMETRES").[G2:H22]
    For Each cell In Plage
        If cell <> "" And Not IsNumeric(cell) Then
            On Error Resume Next
            TotalHeure = TotalHeure + Application.VLookup(cell, Evenement, 2, 0)
        End If
    Next cell
End Function
Mais encore une question :
On comptabilise par rapport aux heures dans Matrice, ou dans Paramètres ?
La macro compte à partir de Paramètres.
Bonjour et merci pour votre aide.
Normalement, la ligne des heures théoriques de l'onglet 'matrice' reprend les heures indiquées dans 'paramètres' donc les 2 conviennent
 
Re,
Ca me semble trop complexe en formules, alors une PJ avec deux fonctions perso :
VB:
Function HeuresMatin(Plage As Range)
    Dim Evenement, cell, Temps
    Set Evenement = Sheets("PARAMETRES").[G2:J22]
    For Each cell In Plage
        If cell <> "" And Not IsNumeric(cell) Then
            On Error Resume Next
            Temps = 0
            Select Case Application.VLookup(cell, Evenement, 4, 0)
                Case "M":   Temps = Application.VLookup(cell, Evenement, 2, 0)
                Case "M+S": Temps = Application.VLookup(cell, Evenement, 2, 0) / 2
            End Select
            HeuresMatin = HeuresMatin + Temps
        End If
    Next cell
End Function
VB:
Function HeuresSoir(Plage As Range)
    Dim Evenement, cell, Temps
    Set Evenement = Sheets("PARAMETRES").[G2:J22]
    For Each cell In Plage
        If cell <> "" And Not IsNumeric(cell) Then
            On Error Resume Next
            Temps = 0
            Select Case Application.VLookup(cell, Evenement, 4, 0)
                Case "S":   Temps = Application.VLookup(cell, Evenement, 2, 0)
                Case "M+S": Temps = Application.VLookup(cell, Evenement, 2, 0) / 2
            End Select
            HeuresSoir = HeuresSoir + Temps
        End If
    Next cell
End Function
( Toutes les catégories où il n'y a rien ne sont pas prises en compte )
 

Pièces jointes

Re,
Ca me semble trop complexe en formules, alors une PJ avec deux fonctions perso :
VB:
Function HeuresMatin(Plage As Range)
    Dim Evenement, cell, Temps
    Set Evenement = Sheets("PARAMETRES").[G2:J22]
    For Each cell In Plage
        If cell <> "" And Not IsNumeric(cell) Then
            On Error Resume Next
            Temps = 0
            Select Case Application.VLookup(cell, Evenement, 4, 0)
                Case "M":   Temps = Application.VLookup(cell, Evenement, 2, 0)
                Case "M+S": Temps = Application.VLookup(cell, Evenement, 2, 0) / 2
            End Select
            HeuresMatin = HeuresMatin + Temps
        End If
    Next cell
End Function
VB:
Function HeuresSoir(Plage As Range)
    Dim Evenement, cell, Temps
    Set Evenement = Sheets("PARAMETRES").[G2:J22]
    For Each cell In Plage
        If cell <> "" And Not IsNumeric(cell) Then
            On Error Resume Next
            Temps = 0
            Select Case Application.VLookup(cell, Evenement, 4, 0)
                Case "S":   Temps = Application.VLookup(cell, Evenement, 2, 0)
                Case "M+S": Temps = Application.VLookup(cell, Evenement, 2, 0) / 2
            End Select
            HeuresSoir = HeuresSoir + Temps
        End If
    Next cell
End Function
( Toutes les catégories où il n'y a rien ne sont pas prises en compte )
Ouha super ! merci beaucoup pour votre réactivité et pour votre aide précieuse qui fonctionne !
Je ne suis pas suffisamment à l'aise avec les macros et pensais plutôt à une formule mais c'est exactement ce qu'il me fallait. merci
 
Bonjour à tous,
Hello Sylvanu,
Une tentative en formules en créant les listes de catégories dans l'onglet Paramètres
VB:
matin en J61
=SOMMEPROD(SOMME.SI.ENS(J$14:J$59;J$12:J$57;L_M))+SOMMEPROD(SOMME.SI.ENS(J$14:J$59;J$12:J$57;L_MS))/2
soir en J62
=SOMMEPROD(SOMME.SI.ENS(J$14:J$59;J$12:J$57;L_S))+SOMMEPROD(SOMME.SI.ENS(J$14:J$59;J$12:J$57;L_MS))/2
Cordialement
 

Pièces jointes

Bonjour à tous,
Hello Sylvanu,
Une tentative en formules en créant les listes de catégories dans l'onglet Paramètres
VB:
matin en J61
=SOMMEPROD(SOMME.SI.ENS(J$14:J$59;J$12:J$57;L_M))+SOMMEPROD(SOMME.SI.ENS(J$14:J$59;J$12:J$57;L_MS))/2
soir en J62
=SOMMEPROD(SOMME.SI.ENS(J$14:J$59;J$12:J$57;L_S))+SOMMEPROD(SOMME.SI.ENS(J$14:J$59;J$12:J$57;L_MS))/2
Cordialement
Merci pour cette proposition de formule qui me parle davantage que la macro !
Avec toutefois une petite modification si je peux me permettre : =SOMMEPROD(SOMME.SI.ENS(DECALER(J$12:J$59;1;0);J$12:J$59;L_M))+SOMMEPROD((SOMME.SI.ENS(DECALER(J$12:J$59;1;0);J$12:J$59;L_MS))/2)
Mais c'est super !
 
Merci pour cette proposition de formule qui me parle davantage que la macro !
Avec toutefois une petite modification si je peux me permettre : =SOMMEPROD(SOMME.SI.ENS(DECALER(J$12:J$59;1;0);J$12:J$59;L_M))+SOMMEPROD((SOMME.SI.ENS(DECALER(J$12:J$59;1;0);J$12:J$59;L_MS))/2)
Mais c'est super !
Re,
La formule que je t'ai proposée compte les heures réelles, et la tienne compte les heures théoriques, mais peut-être n'avais-je pas compris !
Cordialement
 
- 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

Retour