Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[RESOLU]Passage des heures après minuit

  • Initiateur de la discussion Initiateur de la discussion xhudi69
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

xhudi69

XLDnaute Accro
Bonsoir le Forum

Si un poste de travail commence à 19h00 et finit à 04h00 le lendemain, il faut bien comptabilisé:
05h00 pour le jour même et
04h00 pour le lendemain 😕

Sachant qu'il y a un problème avec le "24:00:00" j'ai utilisé une astuce pour la comptabilité des heures avant minuit, mais pour le reste, je coince.

Auriez-vous une idée pour que ces heures soit validées pour le jour suivant.

un grand merci à vous.

@+
 

Pièces jointes

Dernière édition:
Re : Il est minuit docteur schweitzer

Bonsoir R@chid, le Forum

merci pour ces formules qui me servirons pour un autre projet, mais le but est d'avoir le bon code VBA pour mon appli qui en est truffée, merci encore de m'avoir répondu.

Je joint le fichier corrigé d'une erreur dans le TextBox3 Change.

merci à vous.
 

Pièces jointes

Re : Il est minuit docteur schweitzer

Auriez-vous une idée pour que ces heures soit validées pour le jour suivant.
C'est curieux, parce que c'est le plus simple: c'est l'heure ! (DateHeure - Int(DateHeure))
C'est ce qui est comptabilisé pour le jour précédent qui me parait plus compliqué: c'est la différence entre les DateHeures et ce qui est comptabilisé pour le jour suivant. Moi je sais des truc en VBA, mais j'ai quand même pas compris les ou ça, quoi, comment, etc.
À +
 
Re : Il est minuit docteur schweitzer

Re:
Bonsoir Dranreb

je pense avoir trouvé, avec l'UserForm tu mets l'heure de début (ex: 19:00:00) puis l'heure de fin (ex: 04:00:00) donc le lendemain; puis tu saisie une date (ex: 01/08/2012) ensuite valider.

05:00:00 seront validées le 01/08/2012 et
04:00:00 seront validées le 02/08/2012.

Les macros sont rustiques mais efficaces, je fait constament du VBA avec des Dates et des Heures, mais là je me prenais le choux pour rien.
Enfin si cela peut servir à d'autres, j'en serais heureux.

Merci à vous tous de m'avoir éclairé.

@+
 

Pièces jointes

Re : Il est minuit docteur schweitzer

Bonsoir xhudi69,

Il me semble qu'il manque quelques précisions :

Supposons qu'on saisisse 18:00, 2:00 et 01/08/2012. Pour ce que j'en ai compris, il faudrait compter 6h00 pour le 01/08/2012 et 02h00 pour le 02/08/2012.

Si ensuite on saisit 18:00, 21:00 et 02/08/2012 -> que doit on indiquer pour le jour 02/08/2012 ? 3h00 ? 5h00 ?

De plus, rien n'empêche de saisir une 2eme fois la durée pour un même jour! Dans ce cas, il y a des risques soit d'écraser le report soit de cumuler les valeurs des deux saisies (suivant la programmation)
 
Re : Il est minuit docteur schweitzer

Bonsoir mapomme

J'ai modifié le fichier pour la saisie le même jour, je m'étais un peu emmélé les pinceaux.
La modification concerne la saisie le jour même.

Comme les postes sont en 3X8 on ne pourra pas écraser les données du matin d'autan plus que la personne ne travaillera pas le matin où elle a arrèté.

Evidement si l'on ressaisie pour le jour même on vat écraser les données et on ne pourra pas effacer celles qui auront été validées pour le jour suivant dans le cas d'un poste finissant le lendemain.
Dans mon cas cela n'est pas important car en amont j'ai une validation.

Voir le fichier en PJ

merci à toi.

@+
 

Pièces jointes

Dernière édition:
Re : Il est minuit docteur schweitzer

(re) Bonsoir,

J'avais commencé un code (en ne gardant que les 3 textbox)
VB:
Private Sub CommandButton1_Click()
Dim i As Long, j As Long, H1, H2, D1, D2
Dim DRL As Long

With Sheets("TEST")
DRL = .Range("A400").End(xlUp).Row
H1 = CDate(TextBox1): H2 = CDate(TextBox2)
D1 = CDate(TextBox3): D2 = D1 + 1
For i = 2 To DRL
  If .Cells(i, 1) = D1 Then
    If H1 <= H2 Then
      .Cells(i, 2) = H2 - H1
      Exit For
    Else
      .Cells(i, 2) = 1 - H1
      For j = 2 To DRL
        If .Cells(j, 1) = D2 Then
          .Cells(j, 2) = H2
          Exit For
        End If
      Next j
    End If
  End If
Next i
End With
End Sub
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

L
Réponses
21
Affichages
3 K
S
Réponses
14
Affichages
2 K
A
Réponses
0
Affichages
2 K
Anatonyme
A
C
Réponses
1
Affichages
1 K
Chris L
C
J
  • Question Question
Réponses
2
Affichages
1 K
S
Réponses
2
Affichages
1 K
Solis
S
L
Réponses
3
Affichages
4 K
loulou2011
L
C
Réponses
6
Affichages
3 K
charlebel
C
K
Réponses
0
Affichages
2 K
K
L
Réponses
13
Affichages
4 K
lyazid
L
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…