Operation sur date

Manau81 Messages postés 23 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 17 janvier 2010 - 22 août 2009 à 15:49
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 - 23 août 2009 à 08:01
j'aimerai savoire se qui cloche dans ce bou de code
l'erreur est " type incompatible "

Private Sub Form_Load()
MsgBox Calcule(DateTime.Date, DateTime.Time, Text2.Text, Text3.Text)
end sub

Public Sub Calcule(D As Data, T As Date, W As Integer, P As String)
W = Format(D, "ww", vbMonday, vbFirstFourDays)
If T > "05:30:00" And "14:00:00" > T Then P = "Poste Matin"
If T > "14:00:00" And "22:15:00" > T Then P = "Poste Aprs Midi"
If T > "22:15:00" And "05:30:00" > T Then P = "Poste Nuit"
End Sub

5 réponses

Utilisateur anonyme
22 août 2009 à 15:56
Salut,

Calcule est un Sub et ne retourne rien. Retire le MsgBox.

_____________
Kenji
0
Manau81 Messages postés 23 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 17 janvier 2010
22 août 2009 à 16:05
désolé il falai metre call au lieu de msg box, je m'excuse.
par contre le probléme perciste.
type incompatible sur la ligne call calcule(DateTime.Date, DateTime.Time, Text2.Text, Text3.Text)
0
Utilisateur anonyme
22 août 2009 à 16:24
Oui,
pour le 3eme parametre, ta fonction demmande un integer et tu lui passe un string.
Utilie Val pour convertir ton Text : Val(Text2.Text)
Cependant, tu utilise ces deux dernier paramères pour récupéré les valeurs, il faut donc faire ainsi

Dim W As Integer
Call Calcule(DateTime.Date, DateTime.Time, W, Text3.Text)
Text2.Text = CStr(W)



_____________
Kenji
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
23 août 2009 à 00:37
Bonsoir,

devrait ressemble à ceci :

Private Sub Form_Activate()
  calcule Now, Text2, Text3
End Sub

Public Sub calcule(D As Date, ByRef W As Control, ByRef P As Control)
  Dim quoi As Date
  W = Format(D, "ww", vbMonday, vbFirstFourDays)
  quoi = TimeSerial(Hour(D), Minute(D), Second(D))
  P = "matin"
  If quoi > #2:00:00 PM# And quoi <#10:15:00 PM# Then P "après-midi": Exit Sub
  If quoi > #10:15:00 PM# Or quoi < #5:30:00 AM# Then P = "nuit"
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
23 août 2009 à 08:01
Ce qui peut (et je préfère) s'exprimer également ainsi
Option Explicit

Private Sub Form_Activate()
  calcule Now, Text2, Text3
End Sub

Public Sub calcule(D As Date, ByRef W As Control, ByRef P As Control)
  W = Format(D, "ww", vbMonday, vbFirstFourDays)
  Select Case TimeSerial(Hour(D), Minute(D), Second(D))
     Case #5:30:01 AM# To #2:00:00 PM#
       P = "matin"
     Case #2:00:01 PM# To #10:15:00 PM#
       P = "après-midi"
     Case Else
       P = "nuit"
  End Select
End Sub


En faisant très attention aux 01, hein ...
0
Rejoignez-nous