Private Sub UserForm_Initialize()
[quote]Initialisation des durées
Heures[/quote]
UserForm1.CboHeureDeb.RowSource = 'Feuil3!A2:A' & Sheets('Feuil3') _
.Cells(2, 1).End(xlDown).Row
CboHeureDeb.ListIndex = -1
UserForm1.CboHeureFin.RowSource = 'Feuil3!A2:A' & Sheets('Feuil3') _
.Cells(2, 1).End(xlDown).Row
CboHeureFin.ListIndex = -1
[quote]Minutes[/quote]
UserForm1.CboMinDeb.RowSource = 'Feuil3!B2:B' & Sheets('Feuil3') _
.Cells(2, 2).End(xlDown).Row
CboMinDeb.ListIndex = -1
UserForm1.CboMinFin.RowSource = 'Feuil3!B2:B' & Sheets('Feuil3') _
.Cells(2, 2).End(xlDown).Row
CboMinFin.ListIndex = -1
[quote]Masque des résultats[/quote]
LblMsgRes1.Visible = False: LblMsgRes2.Visible = False: LblMsgRes3.Visible = False
LblMsgResDate.Visible = False: LblMsgRes1.Visible = False: LblMsgRes2.Visible = False
LblMsgRes3.Visible = False: LblResHeure.Visible = False: LblResMin.Visible = False
LblMsgRes4.Visible = False
End Sub
Private Sub CmdCalculer_Click()
Dim ResHeure, ResMinute As Integer [quote]NbHeure et NbMinutes écoulés
Contrôle des entrées [/quote]
Call Contrôle
[quote]Calcul de la durée, je fais une simple différence sans contrôle Cf. Sub Contrôle[/quote]
ResHeure = CboHeureFin - CboHeureDeb: ResMinute = CboMinFin - CboMinDeb
LblResHeure.Caption = ResHeure: LblResMin.Caption = ResMinute
LblMsgResDate.Caption = DTPicker1.Value
[quote]Affichage du résultat[/quote]
LblMsgRes1.Visible = True: LblMsgRes2.Visible = True: LblMsgRes3.Visible = True
LblMsgResDate.Visible = True: LblMsgRes1.Visible = True: LblMsgRes2.Visible = True
LblMsgRes3.Visible = True: LblResHeure.Visible = True: LblResMin.Visible = True
LblMsgRes4.Visible = True
End Sub
Sub Contrôle() [quote]Routine de contrôle des entrées
Vérifications des entrées, Chiffres ou autre ?
Tu dois vérifier ici que les 4 entrées sont des chiffres et non autre chose
Pour cela utilise ASCII, fonction, proprités
Exple:(Asc(CboHeureDeb.Value) 80))
'Code
'....
'Logique chronologique [/quote]
If (CboHeureDeb.Value > CboHeureFin) Or (CboMinDeb > CboMinFin) Then
MsgBox 'Erreur: Fin > Début La fin ne vient pas avant le début !!', _
vbCritical, 'Saisie de données'
End If
[quote]'Je te laisse le soin de convertir les minutes en heure lorsque leur différence zst <0
'Exple: Heure Déb:10h45 ; Heure Fin:20h15
'Code
'....[/quote]
End Sub