XL 2013 Planning temps de production

jeremy6812

XLDnaute Nouveau
Bonjour à tous :)

Voila mon probleme je réalise un planning de production , aucun probleme si ce n'ai sur la gestion du temps de production

Dans mon fichier joint le calcul ce fait en fonction de nos horaire de travail et des jours ferié et weekend , parfait me diriez vous , mais non :)

Alors voila j'ai besoin que dans mon fichier je puisse paramétrer les horaires de nos équipes si celle ci change ( heure sup etc..)

J'airais besoin de mettre dans des cellules les heure de travail du lundi a savoir 8h - 12h 13h15 - 17h , idem jusqu'au vendredi , et que mes horaires de début et de fin de production ce paramètre en fonction de ses cellules d'horaire que je peux modifier.

Par exemple: heure supp. le lundi il comment a 7h00 au lieu de 8, le vendredi il travail plus tard , ou arette plus tot les machine pour entretien ...

Pouvez vous m'aider? :)
 

Pièces jointes

  • planning a tester.xls
    52.5 KB · Affichages: 116

job75

XLDnaute Barbatruc
Re : Planning temps de production

Bonsoir à tous,

Jeremy6812 m'ayant interrogé par MP voici la réponse que je lui ai donnée :

Bonsoir jeremy6812,

J'ai été voir le fil que vous avez ouvert ce matin.

Je comprends que vous voulez modifier les horaires de travail quand c'est nécessaire.

Alors bien sûr la fonction DateFin de votre fichier ne convient pas.

Il vous faut créer dans une feuille de calcul un tableau de toutes les dates (de 2010 à 2015 et au delà) accompagnées des horaires de travail (modifiables) pour chacune des dates.

La fonction DateFin devra utiliser ce tableau, c'est compliqué, je n'ai pas l'intention de m'y mettre, désolé.

Cordialement,

job75

Bonne nuit.
 

turlututu

XLDnaute Nouveau
Re : Planning temps de production

Bonjour,
j'adorerais pouvoir additionner un temps de départ, plus une durée de travail en heures pour avoir la date de fin dans la vraie vie, utilises-tu la fonction camp de travail? :)
sinon, j'ai un fichier un peu comme toi.
pour ce faire, j'ai fait des plages annexes avec toutes les dates des jours févriers, les heures normales, les heures sup.
date finale = date départ + temps travail avec des boucles si(index(equiv( les plages annexes) en plus dedans
attention au format horaire des cases, 25h peut donner 1h avec l'heure francaise ou belge, enfin je ne sais plus, a tester.

bat,

turlututu

turlututu
 

job75

XLDnaute Barbatruc
Re : Planning temps de production

Bonjour Jeremy6812, turlututu (chapeau pointu),

Finalement j'ai décidé de m'y mettre, voyez le fichier joint.

Dans la feuille "Horaires" j'ai créé toutes les dates du 01/01/2010 au 31/12/2020, avec leurs horaires.

Comme je l'ai dit au post #1 les horaires sont modifiables manuellement.

Voyez dans le code de cette feuille les macros CreerHoraire et RechercherDate.

La nouvelle fonction DateFin utilise bien sûr cette feuille :

Code:
Function DateFin(deb As Date, duree As Date) As Variant
Dim i As Variant, t1, t2, t3, t4, h, dur
With Sheets("Horaires")
  i = Application.Match(Int(CDec(deb)), .[A:A], 0)
  If IsError(i) Then DateFin = "": Exit Function
  '---premier jour---
  t1 = .Cells(i, 2): t2 = .Cells(i, 3)
  t3 = .Cells(i, 4): t4 = .Cells(i, 5)
  h = TimeValue(deb) 'deb - Int(CDec(deb))
  If h < t1 Then
    dur = t2 - t1 + t4 - t3
  ElseIf h < t2 Then
    dur = t2 - h + t4 - t3
  ElseIf h < t3 Then
    dur = t4 - t3
  ElseIf h < t4 Then
    dur = t4 - h
  End If
  '---boucle sur les jours---
  While .Cells(i, 1) <> "" And dur + "1E-6" < duree
    i = i + 1
    dur = dur + .Cells(i, 6)
  Wend
  If .Cells(i, 1) = "" Then DateFin = "": Exit Function
  '---dernier jour---
  t1 = .Cells(i, 2): t2 = .Cells(i, 3): t3 = .Cells(i, 4)
  h = .Cells(i, 6) - dur + duree
  If h < t2 - t1 + "1E-6" Then
    DateFin = .Cells(i, 1) + t1 + h
  Else
    DateFin = .Cells(i, 1) + t3 + h - t2 + t1
  End If
End With
End Function
Vous pouvez vérifiez les résultats obtenus en Feuil1.

Edit : j'ai ajouté des "1E-6" dans les tests de comparaison d'heures.

Cela pour une bonne utilisation des bornes des intervalles.

A+
 

Pièces jointes

  • planning a tester(1).xls
    538 KB · Affichages: 102
Dernière édition:

Yard

XLDnaute Nouveau
Re : Planning temps de production

Bonjour,

Impressionné encore une fois par la réactivité sur ce forum. Merci.

Quand j'ouvre planning a tester(1).xls, j'obtiens immédaitement "Erreur de compilation: Sub ou fonction non définie.
Le Module 1 est ouvert, le mot-clé CDec de la première ligne du With Sheets("Horaires") est surligné.
Et... je n'arrive pas à fermer Excel, le débogueur relance apparemment à chaque fois quelque chose.
Je me rappelle du coup que je travaille désormais sur... un Mac. Aïe, pas taper... Est-ce grave ?
 

job75

XLDnaute Barbatruc
Re : Planning temps de production

Bonjour Yard,

Oui il y a souvent des problèmes avec VBA sur MAC.

Dans la macro du post #4 j'ai remplacé deb - Int(CDec(deb)) par TimeValue(deb) voyez si ça passe.

Mais vous avez peut-être une référence manquante.

Dans VBA => menu Outils => Références et décochez MANQUANT.

A+
 

job75

XLDnaute Barbatruc
Re : Planning temps de production

Re Yard,

Bon il y avait aussi CDec dans i = Application.Match(Int(CDec(deb)), .[A:A], 0)

Alors essayez le fichier joint avec cette macro :

Code:
Function DateFin(deb As Range, duree As Date) As Variant
Dim i As Variant, t1, t2, t3, t4, h, dur
With Sheets("Horaires")
  i = Application.Match(Int(deb.Value2), .[A:A], 0)
  If IsError(i) Then DateFin = "": Exit Function
  '---premier jour---
  t1 = .Cells(i, 2): t2 = .Cells(i, 3)
  t3 = .Cells(i, 4): t4 = .Cells(i, 5)
  h = TimeValue(deb) 'deb - Int(CDec(deb))
  If h < t1 Then
    dur = t2 - t1 + t4 - t3
  ElseIf h < t2 Then
    dur = t2 - h + t4 - t3
  ElseIf h < t3 Then
    dur = t4 - t3
  ElseIf h < t4 Then
    dur = t4 - h
  End If
  '---boucle sur les jours---
  While .Cells(i, 1) <> "" And dur + "1E-6" < duree
    i = i + 1
    dur = dur + .Cells(i, 6)
  Wend
  If .Cells(i, 1) = "" Then DateFin = "": Exit Function
  '---dernier jour---
  t1 = .Cells(i, 2): t2 = .Cells(i, 3): t3 = .Cells(i, 4)
  h = .Cells(i, 6) - dur + duree
  If h < t2 - t1 + "1E-6" Then
    DateFin = .Cells(i, 1) + t1 + h
  Else
    DateFin = .Cells(i, 1) + t3 + h - t2 + t1
  End If
End With
End Function
A+
 

Pièces jointes

  • planning a tester pour MAC(1).xls
    538.5 KB · Affichages: 105

Yard

XLDnaute Nouveau
Re : Planning temps de production

Argh, ça bloque encore dès l'ouverture du fichier :
Capture d’écran 2015-11-26 à 19.46.05.png
 

job75

XLDnaute Barbatruc
Re : Planning temps de production

Bonjour jeremy6812, Yard, le forum,

Avec un tableau VBA dans la macro CreerHoraire c'est beaucoup plus rapide :

Code:
Sub CreerHoraire()
'l'horaire n'est pas entré le vendredi après-midi
Dim PremCel As Range, deb, fin, t1, t2, t3, t4, tablo(), i&
Set PremCel = [A2] '1ère cellule, à adapter
deb = DateValue("1/1/2010") 'à adapter
fin = DateValue("31/12/2020") 'à adapter
t1 = TimeValue("8:0") 'à adapter
t2 = TimeValue("12:0") 'à adapter
t3 = TimeValue("13:15") 'à adapter
t4 = TimeValue("17:0") 'à adapter
If PremCel <> "" Then If MsgBox(PremCel.Address(0, 0) & " est déjà renseignée, voulez-vous continuer ?", 52) = 7 Then Exit Sub
ReDim tablo(1 To fin - deb + 1, 1 To 6)
tablo(1, 1) = deb
For i = 1 To UBound(tablo)
  If i > 1 Then tablo(i, 1) = tablo(i - 1, 1) + 1
  If Weekday(tablo(i, 1), 2) < 6 And Application.CountIf([Feries], tablo(i, 1)) = 0 Then
    tablo(i, 2) = t1: tablo(i, 3) = t2
    If Weekday(tablo(i, 1), 2) < 5 Then tablo(i, 4) = t3: tablo(i, 5) = t4
  End If
  tablo(i, 6) = "=RC[-3]-RC[-4]+RC[-1]-RC[-2]"
Next
PremCel.Resize(UBound(tablo), 6) = tablo
End Sub
Fichiers (2).

Edit : Yard si la macro RechercherDate ne fonctionne pas chez vous utilisez le fichier (2 bis) avec :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$H$1" Or Not IsDate([H1]) Then Exit Sub
Dim i As Variant
i = Application.Match([H1].Value2, [A:A], 0)
If Not IsNumeric(i) Then MsgBox "Date non trouvée...": Exit Sub
Application.Goto Cells(i, 1), True 'cadrage
End Sub
Bonne journée.
 

Pièces jointes

  • planning a tester(2).xls
    528 KB · Affichages: 112
  • planning a tester pour MAC(2).xls
    530 KB · Affichages: 59
  • planning a tester pour MAC(2 bis).xls
    604.5 KB · Affichages: 63
Dernière édition:

job75

XLDnaute Barbatruc
Re : Planning temps de production

Re Yard,

S'il n'y a que CDec qui ne fonctionne pas sur MAC mais que les autres fonctions de conversion fonctionnent essayez donc le 1er fichier du post #10 en remplaçant CDec par CDbl :

Code:
i = Application.Match(Int(CDbl(deb)), .[A:A], 0)
Pour notre gouverne, merci de nous dire ce qu'il en est.

A+
 

jeremy6812

XLDnaute Nouveau
Bonjour job :)

Tous d'abord je tien a m'excuser car je n'avais pas vue votre super travail , en effet je pensai que vous aviez laisser tombé et m'etais donc débrouiller seul , vraiment je m excuse et merci mille fois pour votre travail , je suis arriver a un résultat mais pas aussi bien que le votre que je teste en ce moment et vraiment c'est impeccable

Encore désoler de ne pas avoir vue avant mais merci milles fois a vous :) super boulot :)
 

xls_62

XLDnaute Junior
Re : Planning temps de production

Re Yard,

S'il n'y a que CDec qui ne fonctionne pas sur MAC mais que les autres fonctions de conversion fonctionnent essayez donc le 1er fichier du post #10 en remplaçant CDec par CDbl :

Code:
i = Application.Match(Int(CDbl(deb)), .[A:A], 0)
Pour notre gouverne, merci de nous dire ce qu'il en est.

A+
Bonjour Job75,

Je travaille sur un projet d'ordo qui est presque identique à la problématique que vous avez pu résoudre..
Je voulais savoir si le code réalisé pourrait s'adapter à plusieurs horaires selon la feuille de calcul ?
Merci de votre retour.
Cdt,
 

Discussions similaires

Réponses
3
Affichages
1 K
Réponses
6
Affichages
3 K

Statistiques des forums

Discussions
312 361
Messages
2 087 626
Membres
103 611
dernier inscrit
sebboes