XL 2019 Calcule du nombre d'heures par semaine

Jaana

XLDnaute Nouveau
Bonjour,

Pour le travail, j'effectue de grands déplacements en province. Chaque semaine de déplacements me donne droit à 3h de route à un taux honoraire fixe (attention je parle bien pour chaque semaine et non pour chaque jour, donc 1 semaine est égale à 3h de route).

J'ai créé un tableau avec mes heures de travail, une colonne qui correspond au numéro de semaine et une colonne "grand déplacement" qui me permet de spécifier que pour tel jour (cellule égale 1), je suis partie en déplacement.

Mon idée était de me servir de la colonne numéro de semaine pour comptabiliser le nombre d'heures de route pour chacune des semaines. Mais je ne sais pas quelle fonction pourrait m'aider à faire cela ?

Merci
 

Jaana

XLDnaute Nouveau
Bonsoir,
:/

Oui, je me doute bien que le nombre d'heures de route par semaine est de 3h. Mais, j'aimerais les calculer automatiquement dans mon tableur en sachant je ne suis pas toujours en grand déplacement et que chaque mois ne comporte pas le même nombre de semaine.

Pour plus de compréhension, je mets en pièce jointe le tableur en question :

Merci
 

Pièces jointes

  • mon_classeur.xlsx
    11.5 KB · Affichages: 16

job75

XLDnaute Barbatruc
Bonjour Jaana, JHA,

Voyez le fichier joint et cette formule en J2 s'il s'agit bien d'un forfait de 3 heures par semaine :
Code:
=SI((JOURSEM(C2)=6)+(LIGNE()=NB(C:C)+1);3*MAX(INDEX(H:H;EQUIV(99;A$1:A2)):H2);"")
Si les heures de route peuvent être inférieures à 3 heures par semaine utiliser :
Code:
=SI((JOURSEM(C2)=6)+(LIGNE()=NB(C:C)+1);MIN(3;SOMME(INDEX(H:H;EQUIV(99;A$1:A2)):H2));"")
A+
 

Pièces jointes

  • mon_classeur(1).xlsx
    12.3 KB · Affichages: 13

job75

XLDnaute Barbatruc
Une solution par fonction VBA dans le fichier joint :
VB:
Function HeuresRoute(R As Range, limite As Byte, forfait As Boolean)
Dim ncol%, nlig&, i&, s&
ncol = R.Columns.Count
nlig = R.Rows.Count
For i = 1 To nlig
    If IsDate(R(i, 1)) Then
        If Weekday(R(i, 1)) = 1 Or i = nlig Then
            If forfait Then s = limite * IIf(s > 0, 1, 0) Else If s > limite Then s = limite
            HeuresRoute = HeuresRoute + s
            s = 0
        End If
        s = s + Sgn(R(i, ncol))
    End If
Next
End Function
Le code doit être placé impérativement dans un module standard.

Elle est utilisée de 2 manières, en J2 et K2.

La 1ère colonne (SEM) est inutile, on peut la supprimer.

A+
 

Pièces jointes

  • HeuresRoute(1).xlsm
    18.3 KB · Affichages: 10

Discussions similaires

Réponses
14
Affichages
723

Statistiques des forums

Discussions
312 194
Messages
2 086 071
Membres
103 110
dernier inscrit
Privé