Calculs durées Rupture de service

aquaboniste

XLDnaute Nouveau
Bonjour
Je joins un fichier dans lequel j'ai identifié 6 services (A,B,C,D,E,F) avec des horaires d'ouverture différents (tableau 1), Des heures de ruptures qui croisent plusieurs services (Tableau 2). Je voudrais calculer automatiquement les durées de l'impact par service comme je l'ai fait manuellement (Tableau 3). Les plages de services sont 7 jours sur 7 et sur 24h (JJ:HH:MM:SS). Donc les ruptures peuvent être exprimées en jours heures minutes secondes et peuvent s'étendre sur 2 jours. De même elles peuvent impacter plusieurs services en même temps ou séquentiellement en fonction de leur durée. Il ne peut pas y avoir plusieurs ruptures dans la journée.

Est-ce que quelqu'un pourrait m'aider à mettre en place ce calcul soit via Excel ou via VBA mais que je ne connais pas du tout.

J'avais fait un premier post mais pas assez explicite et n'avais pas reçu une réponse que je puisse réutiliser. Je reposte en étant plus précis j'espère pour avoir une réponse.

Merci par avance de votre aide,
 

Pièces jointes

  • Service A B C D E F corrigé.xlsx
    11.4 KB · Affichages: 46
  • Service A B C D E F corrigé.xlsx
    11.4 KB · Affichages: 46
  • Service A B C D E F corrigé.xlsx
    11.4 KB · Affichages: 48

Staple1600

XLDnaute Barbatruc
Re : Calculs durées Rupture de service

Bonsoir à tous_____________________EDITION: Bonjour mapomme


Un simple up dans le fil d'origine aurait été préférable ...
https://www.excel-downloads.com/thr...tir-dun-tableau-et-de-plages-horaires.216512/
Cela permet de suivre l'évolution du fil ( les propositions , les tests , les erreurs, les modifications)
Et surtout cela évite les fils doublons.

PS: Néanmoins, merci à toi d'avoir préciser que tu avais déjà créer un premier fil.
D'autres ici ne se seraient hélas pas donner cette peine :rolleyes:
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Calculs durées Rupture de service

Bonjour aquaboniste, Staple1600,

Pas certain d'avoir tout bien compris. Un essai avec une fonction VBA.

A vérifier car je ne trouve pas les mêmes résultats que vous. Notamment, sur les interruptions longues qui englobent plusieurs services ou portions de service.

deux petites remarques:
1) La première date de fin de rupture comporte des secondes.
2) La durée de la 3ième rupture est selon moi erronée.

La fonction VBA s'appelle par =Rupture(D1, D2, H1, H2)
  • D1 est la date et heure de début de la rupture de service.
  • D2 est la date et heure de fin de la rupture de service.
  • H1 est l'heure de début de service
  • H2 est l'heure de fin de service

La formule suivante est à mettre en A23 puis à tirer vers la droite et le bas:
Code:
=Rupture($H7;$I7;DECALER($B$6;COLONNES($A$23:A23)-1;0);DECALER($C$6;COLONNES($A$23:A23)-1;0))
  • $H7 début de rupture
  • $I7 fin de rupture
  • DECALER($B$6;COLONNES($A$23:A23)-1;0) : cellule $B$6 décalée vers le bas en fonction de la colonne où se trouve la formule
  • DECALER($C$6;COLONNES($A$23:A23)-1;0) : cellule $C$6 décalée vers le bas en fonction de la colonne où se trouve la formule


Le code de la fonction est dans le module "Module1":
VB:
Public Function Rupture(D1, D2, H1, H2)
Dim AmpliS, Deb, DebS, FinS, Tot, A1, A2

  AmpliS = H2 - H1
  If AmpliS < 0 Then AmpliS = AmpliS + 1
  DebS = Int(D1) - 1 + H1
  FinS = DebS + AmpliS
  Do 'Until DebS >= D2
    If DebS > D1 Then A1 = DebS Else A1 = D1
    If FinS < D2 Then A2 = FinS Else A2 = D2
    Tot = Tot + Max((A2 - A1), 0)
    DebS = DebS + 1: FinS = FinS + 1
    If DebS > D2 Then Exit Do
  Loop
  Rupture = Tot
End Function

Function Max(x, y)
  If x > y Then Max = x Else Max = y
End Function

Mais tout ça à quoi bon ! ;)
 

Pièces jointes

  • Service A B C D E F corrigé v1.xlsm
    21.1 KB · Affichages: 48
Dernière édition:

aquaboniste

XLDnaute Nouveau
Re : Calculs durées Rupture de service

bonjour
Merci pour votre retour rapide. Est ce que vous pouvez m'indiquer comment inserer/utiliser la macro vba je ne sais pas comment faire. Sinon effectivement il y a des secondes car cela peut aussi aller à cette précision mais si cela fonctionne avec des hh mm c 'est deja très bien.
Cordialement
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Calculs durées Rupture de service

Bonjour aquaboniste, Staple1600 :)

aquaboniste:
  1. la fonction donne t elle les résultats attendus ?
  2. as tu réussi à insérer le code de la fonction dans ton fichier ?
  3. pour compléter ce que Staple1600 t'a conseillé, un petit fichier illustré.
 

Pièces jointes

  • Demo VBA.zip
    478 KB · Affichages: 37

aquaboniste

XLDnaute Nouveau
Re : Calculs durées Rupture de service

Bonjour mapomme
C'est parfait merci beaucoup c'est juste ce qu'il me fallait, c'est incroyable!. Tu as raison il y avait bien des erreurs. Je ne n'ai pas encore essayé de mettre la macro dans un autre fichier je vais le faire aujourd'hui avec le fichier que tu m'as donné et le conseil de Staple1600 j'espère bien y arriver.
Merci encore :)
 

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG