Comment définir une période d'heures ouvrées
#1
Aspirant XLPages

Inscription: 04/10/2009

Messages: 39

Système d'exploitation:
PC & Mac
Version Excel utilisée:
2007, 2010, 2011 MAC
Posté le : 04-10-2009 18h24
Bonjour à toutes et à tous!

Voilà ce qui m'amène: Dans un tableau excel, je dois mettre en valeur des "travaux" ayant dépassé 06 heures de travail après réception, en sachant que les horaires de travail vont de 08h à 20 heures en continu.

Je pense utiliser des mises en forme conditionnelles mais la mise en avant des valeurs ne doit pas inclure la tranche horaire allant de 20 heures à 08 heures du matin.

Comment puis-je faire??

Dans l'attente de vos conseils avisés,

Cordialement,

Titom
Hors Ligne
Rapport   Haut 

Re: Comment définir une période d'heures ouvrées
#2
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 04-10-2009 18h32
Bonjour Titom1978 et bienvenue sur XLpages.com

Un petit fichier exemple avec le résultat souhaité serait une bonne idée.

Cordialement,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Comment définir une période d'heures ouvrées
#3
Aspirant XLPages

Inscription: 04/10/2009

Messages: 39

Système d'exploitation:
PC & Mac
Version Excel utilisée:
2007, 2010, 2011 MAC
Posté le : 04-10-2009 18h45
Merci de ton accueil!

Comme demandé, voici le fichier support de ma demande!

Merci d'avance pour l'aide!
Pièce jointe:
xlsx Contrat_maintenance.xlsx   [ Taille: 10.15 Ko - Téléchargements: 835 ]
Hors Ligne
Rapport   Haut 

Re: Comment définir une période d'heures ouvrées
#4
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 04-10-2009 21h33
Re Titom1978,

Tout d'abord, si tu veux augmenter tes chances d'obtenir réponse à tes questions, je te conseille vivement d'enregistrer tes fichiers Excel dans un format compatible avec les versions Excel autres que 2007 (extension .xls). Ton sujet peut intéresser d'autres visiteurs ou intervenants qui ne possèdent malheureusement pas tous XL2007...

Cela dit, tu trouveras en pièce jointe une façon de faire.

Bien sûr, pour ma part, ce sera l'usage d'une Function personnalisée comme critère du format conditionnel :
Function HorsDelai(T1 As Date, T2 As Date, Optional DureeHMax As Date = "06:00:00", Optional HorTMin As Date = "08:00:00", Optional HorTMax As Date = "20:00:00") As Boolean
'  myDearFriend! - www.mdf-xlpages.com
Dim vT As Date, HeuresFermeture As Date, HeuresTravail As Date, CumulHeuresNT As Date
    HeuresTravail = HorTMax - HorTMin
    HeuresFermeture = CDate("23:59:59") - HeuresTravail
    vT = T1
    Do Until DateDiff("d", vT, T2) < 1
        vT = DateAdd("d", 1, vT)
        If Weekday(vT, vbMonday) > 5 Then
            CumulHeuresNT = CumulHeuresNT + HeuresTravail
        End If
        CumulHeuresNT = CumulHeuresNT + HeuresFermeture
    Loop
    HorsDelai = T2 - T1 - CumulHeuresNT > DureeHMax
End Function
Cette fonction personnalisée est donc appelée depuis le Format Conditionnel des cellules souhaitées et retourne VRAI ou FAUX selon les critères voulus. Elle tient compte des weed-end puisque tu parles de jours Ouvrés.

La syntaxe d'utilisation est la suivante :

=HorsDelai( Cellule1 ; Cellule2 ; [DureeHMax] ; [HorTMin] : [HorTMax] )

- Cellule1 : référence de la cellule contenant la valeur Date/Heure de début
- Cellule2 : référence de la cellule contenant la valeur Date/Heure de fin
- DureeHMax : (facultatif) valeur horaire au format "00:00:00" représentant le délai maximum autorisé ("06:00:00" par défaut)
- HorTMin : (facultatif) valeur horaire au format "00:00:00" représentant l'horaire d'ouverture de l'entreprise("08:00:00" par défaut)
- HorTMin : (facultatif) valeur horaire au format "00:00:00" représentant l'horaire de fermeture de l'entreprise ("20:00:00" par défaut)

Dans ton cas, tu peux donc saisir simplement :
=HorsDelai(A2:B2)
puisque les valeurs adoptées par défaut sont celles que tu as proposées.

Dans ton exemple, j'ai appliqué cette façon de faire dans le Format conditionnel des cellules en colonne B (peut-être fallait-il le faire pour la colonne C ?)

Cordialement,


Pièce jointe:
zip PourTitom1978.zip   [ Taille: 12.56 Ko - Téléchargements: 775 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Comment définir une période d'heures ouvrées
#5
Aspirant XLPages

Inscription: 04/10/2009

Messages: 39

Système d'exploitation:
PC & Mac
Version Excel utilisée:
2007, 2010, 2011 MAC
Posté le : 04-10-2009 23h00
Merci beaucoup pour ta réponse!!

Je me doutais bien qu'il fallait passer par un semblant de programmation... va falloir que je m'y mette sérieusement!!

A ce sujet, tu aurais des références de bouquins pour apprendre la programmation sous excel?

A bientôt,

Thomas
Hors Ligne
Rapport   Haut 

Re: Comment définir une période d'heures ouvrées
#6
Aspirant XLPages

Inscription: 04/10/2009

Messages: 39

Système d'exploitation:
PC & Mac
Version Excel utilisée:
2007, 2010, 2011 MAC
Posté le : 04-10-2009 23h07
Citation :
myDearFriend! a écrit : Re Titom1978,

Tout d'abord, si tu veux augmenter tes chances d'obtenir réponse à tes questions, je te conseille vivement d'enregistrer tes fichiers Excel dans un format compatible avec les versions Excel autres que 2007 (extension .xls). Ton sujet peut intéresser d'autres visiteurs ou intervenants qui ne possèdent malheureusement pas tous XL2007...

Cela dit, tu trouveras en pièce jointe une façon de faire.

Bien sûr, pour ma part, ce sera l'usage d'une Function personnalisée comme critère du format conditionnel :
Function HorsDelai(T1 As Date, T2 As Date, Optional DureeHMax As Date = "06:00:00", Optional HorTMin As Date = "08:00:00", Optional HorTMax As Date = "20:00:00") As Boolean
'  myDearFriend! - www.mdf-xlpages.com
Dim vT As Date, HeuresFermeture As Date, HeuresTravail As Date, CumulHeuresNT As Date
    HeuresTravail = HorTMax - HorTMin
    HeuresFermeture = CDate("23:59:59") - HeuresTravail
    vT = T1
    Do Until DateDiff("d", vT, T2) < 1
        vT = DateAdd("d", 1, vT)
        If Weekday(vT, vbMonday) > 5 Then
            CumulHeuresNT = CumulHeuresNT + HeuresTravail
        End If
        CumulHeuresNT = CumulHeuresNT + HeuresFermeture
    Loop
    HorsDelai = T2 - T1 - CumulHeuresNT > DureeHMax
End Function
Cette fonction personnalisée est donc appelée depuis le Format Conditionnel des cellules souhaitées et retourne VRAI ou FAUX selon les critères voulus. Elle tient compte des weed-end puisque tu parles de jours Ouvrés.

La syntaxe d'utilisation est la suivante :

=HorsDelai( Cellule1 ; Cellule2 ; [DureeHMax] ; [HorTMin] : [HorTMax] )

- Cellule1 : référence de la cellule contenant la valeur Date/Heure de début
- Cellule2 : référence de la cellule contenant la valeur Date/Heure de fin
- DureeHMax : (facultatif) valeur horaire au format "00:00:00" représentant le délai maximum autorisé ("06:00:00" par défaut)
- HorTMin : (facultatif) valeur horaire au format "00:00:00" représentant l'horaire d'ouverture de l'entreprise("08:00:00" par défaut)
- HorTMin : (facultatif) valeur horaire au format "00:00:00" représentant l'horaire de fermeture de l'entreprise ("20:00:00" par défaut)

Dans ton cas, tu peux donc saisir simplement :
=HorsDelai(A2:B2)
puisque les valeurs adoptées par défaut sont celles que tu as proposées.

Dans ton exemple, j'ai appliqué cette façon de faire dans le Format conditionnel des cellules en colonne B (peut-être fallait-il le faire pour la colonne C ?)

Cordialement,




J'ai pris bonne note pour mettre les fichiers au format .xls, je n'avais pas fait attention et je pris l'ensemble des forumeurs de m'en excuser!

Pour répondre à ta question, effectivement, la mise en forme conditionnelle de la colonne C est aussi recherchée, et je veux bien que tu m'expliques comment mettre les deux mises en forme conditionnelles en fonction par le biais de ta programmation!!

Dans l'attente de te lire!

Titom1978

Hors Ligne
Rapport   Haut 

Re: Comment définir une période d'heures ouvrées
#7
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 04-10-2009 23h42
Re Titiom1978,

Concernant le format de fichier en .xls, c'était juste un conseil pour te permettre de t'adresser au plus grand nombre. Aucune obligation cela dit.

Pour utiliser cette fonction personnalisée dans la colonne C, c'est très simple :
- tu sélectionnes la cellule C2.
- tu fais menu Format / Mise en forme conditionnelle...
- dans la liste déroulante "Condition 1", tu choisis "La formule est".
- dans la zone de saisie en face, tu indiques : =HorsDelai($A2;$B2)
- tu définis ensuite le format que tu veux voir appliquer et tu valides l'ensemble par OK.
- ensuite, à l'aide du Pinceau (le bouton avec cette icône), tu reproduis cette mise en forme sur les cellules du bas...

Concernant les livres traitant de l'apprentissage VBA, non, je ne suis pas très au fait de ce sujet. Je te conseille simplement de faire une recherche sur le net avant d'acheter un bouquin, juste histoire de voir ce qu'en pense les lecteurs précédents et pour savoir si l'auteur est connu dans le monde Excel ou non (il y a des valeurs sûres dans ce domaine, tels que : John Walkenbach par exemple, moi j'ai toujours été fan).

Cordialement,


Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Comment définir une période d'heures ouvrées
#8
Aspirant XLPages

Inscription: 04/10/2009

Messages: 39

Système d'exploitation:
PC & Mac
Version Excel utilisée:
2007, 2010, 2011 MAC
Posté le : 05-10-2009 00h04
Merci beaucoup pour les réponses!

@ très bientôt!

Titom1978
Hors Ligne
Rapport   Haut 

Re: Comment définir une période d'heures ouvrées
#9
Débutant XLPages

Inscription: 10/01/2014

Messages: 1

Système d'exploitation:
PC
Version Excel utilisée:
2013
Posté le : 10-01-2014 12h04

Bonjour,

 

Ce sujet est très intéressant.

Je suis dans le même cas mais je cherche à exclure la pause de midi (12:00 à 14:00).

De plus, il serait intéressant d'avoir le nombre d'heure écoulées entre la première date et la deuxième date (dans les plages travaillés)

 

Exemple :

Date 1 : 01/01/2014 à 19:45

Date 2 : 02/01/2014 à 10:00

 

==> 2H15 (sur base 8:00/20:00)

 

Je n'arrive pas à inclure ces aspects.

Merci pour votre aide

Hors Ligne
Rapport   Haut 

Re: Comment définir une période d'heures ouvrées
#10
Webmestre

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 11-01-2014 05h56

Bonjour alxalx, bienvenue sur XLpages.com smiley

 

Tu trouveras ci-joint, peut-être une réponse à ton problème.

 

J'ai utilisé le code suivant pour la fonction personnalisée :

Option Explicit

Function TotalDureeTrav(T1 As Date, T2 As Date, Optional HorTMin As Date = "08:00:00", Optional HorDebPause As Date = "12:00:00", Optional HorFinPause As Date = "14:00:00", Optional HorTMax As Date = "20:00:00") As Date
'  myDearFriend! - www.mdf-xlpages.com
Dim vT As Date, CumulHeures As Date
Dim maxHeuresJour As Date
    'Cohérence dates
    If T2 < T1 Then
        MsgBox "Dates inversées. Calcul impossible !"
        Exit Function
    End If
    'Heures maxi par jour
    maxHeuresJour = HorTMax - HorFinPause + HorDebPause - HorTMin
    'Calcul
    Select Case Int(T2)
    Case Int(T1)
        'Si Jour1 = Jour2
        CumulHeures = CalcHeuresJour(T1, True, HorTMin, HorDebPause, HorFinPause, HorTMax)
        CumulHeures = CumulHeures - CalcHeuresJour(T2, True, HorTMin, HorDebPause, HorFinPause, HorTMax)
    Case Else
        'Heures Jour1
        CumulHeures = CalcHeuresJour(T1, True, HorTMin, HorDebPause, HorFinPause, HorTMax)
        'Heures jours intermédiaires
        vT = T1
        Do Until DateDiff("d", vT, T2) < 2
            vT = DateAdd("d", 1, vT)
            CumulHeures = CumulHeures + maxHeuresJour
        Loop
        'Heures Jour2
        CumulHeures = CumulHeures + CalcHeuresJour(T2, False, HorTMin, HorDebPause, HorFinPause, HorTMax)
    End Select
    TotalDureeTrav = CumulHeures
End Function

Private Function CalcHeuresJour(vD As Date, Depart As Boolean, HorTMin As Date, HorDebPause As Date, HorFinPause As Date, HorTMax As Date) As Date
Dim H As Date, AMTrav As Date, PMTrav As Date, JourEntierTrav As Date
    H = CDbl(vD) - Int(CDbl(vD))
    AMTrav = HorDebPause - HorTMin
    PMTrav = HorTMax - HorFinPause
    JourEntierTrav = AMTrav + PMTrav
    Select Case H
    Case Is < HorTMin
        CalcHeuresJour = IIf(Depart, JourEntierTrav, 0)
    Case Is < HorDebPause
        CalcHeuresJour = IIf(Depart, HorDebPause - H + PMTrav, H - HorTMin)
    Case Is < HorFinPause
        CalcHeuresJour = IIf(Depart, PMTrav, AMTrav)
    Case Is < HorTMax
        CalcHeuresJour = IIf(Depart, HorTMax - H, H - HorFinPause + AMTrav)
    Case Else
        CalcHeuresJour = IIf(Depart, 0, JourEntierTrav)
    End Select
End Function

En espérant avoir répondu à ta question...

 

Cordialement,

Pièce jointe:
xls PourAlxalx.xls   [ Taille: 46.50 Ko - Téléchargements: 583 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes