Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème d'heure sous VBA

2 réponses
Avatar
Philou36
Bonjour,

J'ai encore 2 problèmes avec les heures sous VBA.

1°) Je dois savoir l'heure saisie est inféreure à 17h30. Pour cela en début
de procédure j'ai saisie : "Public Const DixSeptHeuresTrente =
0.729166666666667"
et si je saisie 17:30, mon test :
If HeureDébut < DixSeptHeuresTrente And HeureDébut > SeptHeures And
JourSemaine <> 1 Then
HeureDeb = Format(HeureDébut, "hh:mm")
HeureFi = Format(HeureFin, "hh:mm")
Phrase = Phrase & Cells(Ligne, 1) & " de " & HeureDeb & " à " & HeureFi
& " : Heure de Début antérieure à 17h30 " & Chr(13)
End If
eh bien si l'heure de début est égale à 17h30 j'ai le message :
17/04/2010 de 17:30 à 23:00 : Heure de Début antérieure à 17h30

comprenez vous quelque chose ? HeureDébut est égale à DixSeptHeureTrante
donc il doit pas passer dans le test !!

2°) Je voudrais qu'il m'affiche un nombre d'heures supérieur à 25 heures.
Pour cela j'ai mis HeureFi = Format(HeureFin, "[h]:mm") mais ca ne marche
pas non plus.

Un grand merci pour votre aide.

Bonnes fêtes de Pâques

Philippe

2 réponses

Avatar
michdenis
Bonjour,

Un petit exemple :

Ces variables peuvent aussi être défini avec le type "Date
Dim HeureDébut As Double
Dim DixSeptHeures As Double
Dim DixSeptHeuresTrente As Double

Lorsqu'elles sont définies "As Double" si tu passes le curseur
au-dessus des variables, c'est un nombre décimal qui est
généré, si tu définis les variables "As Date", les variables
auront un format du type "17:30:00" le même format court
qui se trouve dans le panneau de configuration de Windows.

Tu choisis le type selon tes préférences.

Public Const DixSeptHeuresTrente = 0.729166666666667
'-------------------------------------------
Sub test()
Dim JourSemaine As Integer
Dim HeureDébut As Double
Dim DixSeptHeures As Double
Dim DixSeptHeuresTrente As Double

DixSeptHeuresTrente = TimeValue("17:30")
HeureDébut = TimeValue("17:40")
DixSeptHeures = TimeValue("19:00")
JourSemaine = 2

If HeureDébut > DixSeptHeuresTrente And _
HeureDébut < DixSeptHeures And _
JourSemaine <> 1 Then
Range("A1").NumberFormat = "H:MM"
Range("A1").Value = HeureDébut
Range("A2").NumberFormat = "H:M"
Range("A2").Value = DixSeptHeuresTrente
End If

End Sub
'-------------------------------------------




"Philou36" a écrit dans le message de groupe de discussion :
Of#
Bonjour,

J'ai encore 2 problèmes avec les heures sous VBA.

1°) Je dois savoir l'heure saisie est inféreure à 17h30. Pour cela en début
de procédure j'ai saisie : "Public Const DixSeptHeuresTrente 0.729166666666667"
et si je saisie 17:30, mon test :
If HeureDébut < DixSeptHeuresTrente And HeureDébut > SeptHeures And
JourSemaine <> 1 Then
HeureDeb = Format(HeureDébut, "hh:mm")
HeureFi = Format(HeureFin, "hh:mm")
Phrase = Phrase & Cells(Ligne, 1) & " de " & HeureDeb & " à " & HeureFi
& " : Heure de Début antérieure à 17h30 " & Chr(13)
End If
eh bien si l'heure de début est égale à 17h30 j'ai le message :
17/04/2010 de 17:30 à 23:00 : Heure de Début antérieure à 17h30

comprenez vous quelque chose ? HeureDébut est égale à DixSeptHeureTrante
donc il doit pas passer dans le test !!

2°) Je voudrais qu'il m'affiche un nombre d'heures supérieur à 25 heures.
Pour cela j'ai mis HeureFi = Format(HeureFin, "[h]:mm") mais ca ne marche
pas non plus.

Un grand merci pour votre aide.

Bonnes fêtes de Pâques

Philippe
Avatar
Philou36
Bonjour

Un grand merci pour toutes ces précisions.
J'etudie tout cela
Mille mercis
Philippe
"michdenis" a écrit dans le message de news:

Bonjour,

Un petit exemple :

Ces variables peuvent aussi être défini avec le type "Date
Dim HeureDébut As Double
Dim DixSeptHeures As Double
Dim DixSeptHeuresTrente As Double

Lorsqu'elles sont définies "As Double" si tu passes le curseur
au-dessus des variables, c'est un nombre décimal qui est
généré, si tu définis les variables "As Date", les variables
auront un format du type "17:30:00" le même format court
qui se trouve dans le panneau de configuration de Windows.

Tu choisis le type selon tes préférences.

Public Const DixSeptHeuresTrente = 0.729166666666667
'-------------------------------------------
Sub test()
Dim JourSemaine As Integer
Dim HeureDébut As Double
Dim DixSeptHeures As Double
Dim DixSeptHeuresTrente As Double

DixSeptHeuresTrente = TimeValue("17:30")
HeureDébut = TimeValue("17:40")
DixSeptHeures = TimeValue("19:00")
JourSemaine = 2

If HeureDébut > DixSeptHeuresTrente And _
HeureDébut < DixSeptHeures And _
JourSemaine <> 1 Then
Range("A1").NumberFormat = "H:MM"
Range("A1").Value = HeureDébut
Range("A2").NumberFormat = "H:M"
Range("A2").Value = DixSeptHeuresTrente
End If

End Sub
'-------------------------------------------




"Philou36" a écrit dans le message de groupe de discussion :
Of#
Bonjour,

J'ai encore 2 problèmes avec les heures sous VBA.

1°) Je dois savoir l'heure saisie est inféreure à 17h30. Pour cela en
début
de procédure j'ai saisie : "Public Const DixSeptHeuresTrente > 0.729166666666667"
et si je saisie 17:30, mon test :
If HeureDébut < DixSeptHeuresTrente And HeureDébut > SeptHeures And
JourSemaine <> 1 Then
HeureDeb = Format(HeureDébut, "hh:mm")
HeureFi = Format(HeureFin, "hh:mm")
Phrase = Phrase & Cells(Ligne, 1) & " de " & HeureDeb & " à " & HeureFi
& " : Heure de Début antérieure à 17h30 " & Chr(13)
End If
eh bien si l'heure de début est égale à 17h30 j'ai le message :
17/04/2010 de 17:30 à 23:00 : Heure de Début antérieure à 17h30

comprenez vous quelque chose ? HeureDébut est égale à DixSeptHeureTrante
donc il doit pas passer dans le test !!

2°) Je voudrais qu'il m'affiche un nombre d'heures supérieur à 25 heures.
Pour cela j'ai mis HeureFi = Format(HeureFin, "[h]:mm") mais ca ne marche
pas non plus.

Un grand merci pour votre aide.

Bonnes fêtes de Pâques

Philippe