XL 2016 MFC Planning de Gant

bibbip35

XLDnaute Occasionnel
Bonjour à Tous

Dans le cadre de mon travail , je souhaiterais créer un planning
Grace à la fonction de Job75, j'ai réussi à calculer la fin de tache ( J'en profite pour le remercier une nouvelle fois )

Je comptais utiliser des mise en forme conditionnelle , mais je n'y arrive pas ...:(
pour créer un planning type Gant

Mon objectif était :
Colorier en Gris si la tache était en cours
Colorier en Hachurer si c'était une période de fermeture ( We, Jour féries , ou période non travaillé - Vendredi à partir de 11h )
Puis dans un dernier pouvoir mettre un état d'avancement en fonction de la colonne K avec par exemple
une barre au dessus de la barre Grise en fonction de l'état de d'avancement...

Je sais Ca fait beaucoup de question , mais je n'y arrive vraiment pas ...

Merci à tous pour votre aide

Bibbip35
 

Pièces jointes

  • Planning Gant Bibbip.xls
    49.5 KB · Affichages: 55

job75

XLDnaute Barbatruc
Bonjour bibbip35, le forum,

Voyez le fichier joint et les MFC en M3 et M5.

Pour le calcul des pourcentages d'avancement cette fonction est utilisée :
Code:
Function Avancement(datecalcul As Range, deb As Date, fin As Date, horaire As Range, feries As Range) As Date
Dim t1 As Date, t2 As Date, t3 As Date, t4 As Date, jour1 As Date, jour2 As Date, dat&, t As Date
fin = IIf(datecalcul < fin, datecalcul, fin)
If fin < deb Then Exit Function
t1 = horaire(1): t2 = horaire(1, 2): jour1 = t2 - t1
t3 = horaire(2, 1): t4 = horaire(2, 2): jour2 = t4 - t3
If Int(deb) = Int(fin) Then
  If t1 < TimeValue(deb) Then t1 = TimeValue(deb)
  If t2 < t1 Then t2 = t1
  If t3 < TimeValue(deb) Then t3 = TimeValue(deb)
  If t4 < t3 Then t4 = t3
End If
For dat = Int(deb) To Int(fin)
  If Application.CountIf(feries, dat) = 0 And Weekday(dat, 2) < 6 Then
    If dat = Int(deb) And dat <> Int(fin) Then
      t = TimeValue(deb)
      If Weekday(dat, 2) < 5 Then
        If t <= t1 Then Avancement = Avancement + jour1
        If t > t1 And t < t2 Then Avancement = Avancement + t2 - t
      ElseIf Weekday(dat, 2) = 5 Then
        If t <= t3 Then Avancement = Avancement + jour2
        If t > t3 And t < t4 Then Avancement = Avancement + t4 - t
      End If
    ElseIf dat = Int(fin) Then
      t = TimeValue(fin)
      If Weekday(dat, 2) < 5 Then
        If t >= t2 Then Avancement = Avancement + t2 - t1
        If t > t1 And t < t2 Then Avancement = Avancement + t - t1
      ElseIf Weekday(dat, 2) = 5 Then
        If t >= t4 Then Avancement = Avancement + t4 - t3
        If t > t3 And t < t4 Then Avancement = Avancement + t - t3
      End If
    Else
      Avancement = Avancement + IIf(Weekday(dat, 2) < 5, jour1, jour2)
    End If
  End If
Next
End Function
Bien sûr il faut utiliser un fichier .xlsm pour pouvoir travailler sur beaucoup plus de jours/colonnes.

Bonne journée.
 

Pièces jointes

  • Planning Gant Bibbip(1).xls
    103 KB · Affichages: 56

bibbip35

XLDnaute Occasionnel
Bonjour à tous

je reprends un vieux fil de discussion que j'avais lancé et sur lequel vous m'aviez bien aidé !!!
Je souhaiterais modifié les schéma horaire

Aujourd'hui , dans le fichier les horaires sont :
Du lundi au jeudi 5h à 21 h
Vendredi de 5h à 11h

Dans le cadre d'une mise en place d'un nouveau planning je souhaiterais ajouté 2 nouveaux shéma horaire

Schéma 1
Lundi Mardi 8h à 16h50 ( Pause de 12h à 12h45)
Mercredi 8h à 12h110
Jeudi Vendredi 8h à 16h50 ( Pause de 12h à 12h45)

Schéma 2
Lundi Mardi mercredi jeudi 8h à 16h50 ( Pause de 12h à 12h45)
Vendredi 8h à 12h110

Est-ce que cela vous semble possible

Merci à tous

Bibbip35
 

job75

XLDnaute Barbatruc
Bonjour bibbip35,

Oui c'est possible à condition pour les 2 fonctions de passer de 4 variables t1 t2 t3 t4 à 6 variables t1... t6.

Ne comptez pas sur moi mais peut-être avez-vous fait des progrès en VBA et pourrez le faire.

A+
 

Statistiques des forums

Discussions
315 134
Messages
2 116 614
Membres
112 812
dernier inscrit
jocelyne86360