Bonjour,
Je ne pensais pas qu'il y aurai autant de textbox et sans plus de précisions sur le besoin final et le contexte je ne pourrais aller plus loin, cependant pour calculer la différence pour les douches par exemple :
Private Sub Validation_Click()
Dim CTRL As Variant
For Each CTRL In Me.Controls 'Pour chaque CTRL
If TypeName(CTRL) = "TextBox" Then 'Si le CTRL est de type textbox
If CTRL.Tag = "DOUCHE" And CTRL > 59 Then MsgBox "DONNEE NON VALIDE": Exit Sub 'Si le tag de la textbox est DOUCHE et la durée supérieur à 59, alors on affiche un message d'erreur et sort de la macro
End If
Next CTRL
[D12] = Minute(TimeSerial(0, Me.sDouchem, Me.sDouches) - TimeSerial(0, Me.eDouchem, Me.eDouches))
[E12] = Second(TimeSerial(0, Me.sDouchem, Me.sDouches) - TimeSerial(0, Me.eDouchem, Me.eDouches))
'Unload Me 'A activer si souhaite décharger le USF
End Sub
Je vous laisse adapter pour les autres temps car je ne sais pas si les textboxs doivent tous être renseignés en même temps avant validation, quels calculs doivent être réalisés, si les durée peuvent excedées l'heure (donc ce cas comment sont elles notées, 75 minutes ?), etc ...
Le Tag DOUCHE se règle dans les propriétés des textboxs (même endroit que son nom, un peu plus bas) et me permet de les regrouper et m'évite de réaliser un test par nom de textbox (soit 1 ligne au lieu de 4). Cette méthode ne sera pas nécessaire si toutes les textboxs doivent être renseignées avant validation.
Si cet élément vous convient merci de passer le sujet en résolu.
Cdlt,
PS : J'ai réglé les TabIndex de chaque textbox du USF pour pouvoir naviguer correctement entres elles à l'aide de la touche TAB (donc ligne par ligne)