Userform pour calcul horaire

Bonjour le Forum,

Je continue dans ma série userform mais cette fois pour un calcul horaire.

J'ai essayé de modifier la formule que j'avais eu précédement mais sans résultat.

Pouvez-vous y jeter un oeil et me dire ce que je fait mal svp :

Pour info le userform se nomme "Heure" et j'ai 3 texbox qui se nomme "Min", "Heu" et "Jou" (je pense que c'est assez explicite... ) et je compte 1 jour = 8 heures

Private Sub MinHeuJou_AfterUpdate()
   If Min.Value = "" Or Heu.Value = "" Or Jou.Value = "" Then Exit Sub
   If Heu.Value = "" Or Jou.Value = "" Then
        Heu = CDec(Min) / CDec(60)
        Jou = CDec(Min) / CDec(480)

   If Min.Value = "" Or Jou.Value = "" Then
        Min = CDec(Heu) * CDec(60)
        Jou = CDec(Heu) / CDec(8)

   If Min.Value = "" Or Jeu.Value = "" Then
        Min = CDec(Jou) * CDec(480)
        Heu = CDec(Jou) * CDec(8)

End Sub

Private Sub Min_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   'TRANSFORMER LE POINT PAR UNE VIRGULE
   If KeyAscii = 46 Then KeyAscii = 44
   If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

Private Sub Heu_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   'TRANSFORMER LE POINT PAR UNE VIRGULE
   If KeyAscii = 46 Then KeyAscii = 44
   If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub Jou_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   'TRANSFORMER LE POINT PAR UNE VIRGULE
   If KeyAscii = 46 Then KeyAscii = 44
   If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

Private Sub MMinHeuJou_AfterUpdate()
TextBoxHeu = CDbl(TextBoxMin) / CDbl(60)
TextBoxJou = CDbl(TextBoxMin) / CDbl(480)

TextBoxMin = CDbl(TextBoxHeu) * CDbl(60)
TextBoxJou = CDbl(TextBoxHeu) / CDbl(8)

TextBoxMin = CDbl(TextBoxHeu) * CDbl(60)
TextBoxJou = CDbl(TextBoxHeu) / CDbl(8)
End Sub

Private Sub MMinHeuJou_Change()
   Min = Format(Min.Value, "# ##0.00")
   Heu = Format(Heu.Value, "# ##0.00")
   Jou = Format(Jou.Value, "# ##0.00")
End Sub

Le fichier en question...

19test2.xlsm (67.05 Ko)

bonjour,

je n'ai rien testé mais je vois un problème ici

 If Min.Value = "" Or Jeu.Value = "" Then

Jeu ne devrait-il pas être Jou ou Heu?

pour le reste il me semble que ton formulaire est incomplet.

Bonjour h2so4,

en effet, malheureusement cela ne foctionne toujours pas. Merci quand même.

Incomplet dans quel sens? que manque t'il d'après-toi?

bonjour,

je ne trouve pas de trace des objets : MinHeuJou,MMinHeuJou,TextBoxHeu,TextBoxJou,TextBoxMin

et comme je n'ai pas compris ce que tu veux faire avec ce formulaire, ...

Dans ce formulaire j'aimerais que si l'on introduis une valeur dans Min, Heu ou Jou elle se "traduise" dans une autre valeur, par exemple si on met 1 dans "Jou", il indique 8 dans "Heu" et 480 dans "Min" (480 minutes = 8 heures = 1 jour).

La même chose si on place une valeur dans "Heu" ou "Jou".

re-,

une proposition de correction

23test2-4.xlsm (67.05 Ko)

Merci h2so4 mais cela ne fonctionne toujours pas et je ne vois pas ce que tu as changé, ou je rate quelque chose...

Bonjour Heavy_B

Peut-être une solution avec _Change()

Private Sub MinHeuJou_AfterUpdate()
   If Min.Value = "" Then Exit Sub
   Heu.Value = CDec(Min.Value) / CDec(60)
   Jou.Value = CDec(Min.Value) / CDec(480)
End Sub

Private Sub Heu_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   'TRANSFORMER LE POINT PAR UNE VIRGULE
   If KeyAscii = 46 Then KeyAscii = 44
   If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

Private Sub Jou_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   'TRANSFORMER LE POINT PAR UNE VIRGULE
   If KeyAscii = 46 Then KeyAscii = 44
   If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

Private Sub Min_Change()
   If Min.Value = "" Then Exit Sub
   Heu.Value = CDec(Min.Value) / CDec(60)
   Jou.Value = CDec(Min.Value) / CDec(480)
End Sub

Private Sub Heu_Change()
   If Heu.Value = "" Then Exit Sub
   Min.Value = CDec(Heu.Value) * CDec(60)
   Jou.Value = CDec(Heu.Value) / CDec(8)
End Sub

Private Sub Jou_Change()
   If Jou.Value = "" Then Exit Sub
   Min.Value = CDec(Jou.Value) * CDec(480)
   Heu.Value = CDec(Jou.Value) * CDec(8)
End Sub

Bonjour et1000lio,

le code que tu me propose fonctionne parfaitement, merci beaucoup.

Apparemment je me compliquais la vie...

re,

Merci h2so4 mais cela ne fonctionne toujours pas et je ne vois pas ce que tu as changé, ou je rate quelque chose...

tu as dû rater quelque chose car voici le code qui se trouve dans le fichier que j'ai mis. j'ai également modifié le nom des textbox et le nom du userform afin d'éviter des conflits avec des instructions VBA/excel.

Private Sub minute_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    'TRANSFORMER LE POINT PAR UNE VIRGULE
    If KeyAscii = 46 Then KeyAscii = 44
    If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

Private Sub heure_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    'TRANSFORMER LE POINT PAR UNE VIRGULE
    If KeyAscii = 46 Then KeyAscii = 44
    If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Private Sub jour_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    'TRANSFORMER LE POINT PAR UNE VIRGULE
    If KeyAscii = 46 Then KeyAscii = 44
    If InStr("1234567890,-", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

Private Sub minute_AfterUpdate()
    Heure = CDbl(Minute) / CDbl(60)
    Jour = CDbl(Minute) / CDbl(480)
    formatjhm
End Sub
Private Sub heure_AfterUpdate()
    Minute = CDbl(Heure) * CDbl(60)
    Jour = CDbl(Heure) / CDbl(8)
    formatjhm
End Sub
Private Sub jour_AfterUpdate()
    Minute = CDbl(Jour) * CDbl(480)
    Heure = CDbl(Jour) * CDbl(8)
    formatjhm
End Sub

Private Sub formatjhm()
    Minute = Format(Minute.Value, "# ##0.00")
    Heure = Format(Heure.Value, "# ##0.00")
    Jour = Format(Jour.Value, "# ##0.00")
End Sub

Bonjour h2so4,

toutes mes excuses, en effet j'avais raté quelque chose...

Rechercher des sujets similaires à "userform calcul horaire"