aptech
Messages postés36Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention 5 juillet 2003
-
31 mai 2003 à 21:42
reasonheart
Messages postés1Date d'inscriptionlundi 27 avril 2009StatutMembreDernière intervention14 novembre 2009
-
14 nov. 2009 à 16:07
!!!!! Urgent !!!!!
En VB 6 avec l'objet MonthView, comment puis-je extraire la date sur laquel je clique pour l'utilise dans une autre fonction
flamcy
Messages postés58Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention14 avril 2009 5 juil. 2007 à 19:42
slt
je sais que ça date un peu mais ça correspond à ce que je cherche.
avec ta fonction Me.Caption = Dateclicked, comment on récupère la donnée de la date saisie et de quel type elle est?
en fait je récupérer dans une variable de type Integer la différence entre 2 dates saisies sur 2 controles Monthview.
on parle de timestamp, variables de type Date ou Calendar... je suis un peu pomé. voici mon code mais j'ai pas le résultat voulu:
*********module****
Dim nbjour As Variant
Dim datedebut As Date, datefin As Date
*****form****
Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
datedebut = MonthView1.Value
End Sub
Private Sub MonthView2_DateClick(ByVal DateClicked As Date)
datefin = MonthView2.Value
End Sub
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 5 juil. 2007 à 20:31
Salut,
avec ta fonction Me.Caption = Dateclicked, comment on récupère la donnée de la date saisie et de quel type elle est?
tu peux récupérer la valeur grâce au paramètre DateClicked :
Private Sub MonthView1_DateClick( ByVal DateClicked As Date )
Elle est de type date.
Pour ton nombre de jour, utilise la fonction DateDiff :
Function DateDiff(Interval As String, Date1, Date2, [FirstDayOfWeek As VbDayOfWeek = vbSunday], [FirstWeekOfYear As VbFirstWeekOfYear = vbFirstJan1])
Regarde dans ton aide en ligne pour savoir quel paramètre donner à Interval.
flamcy
Messages postés58Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention14 avril 2009 6 juil. 2007 à 07:09
OK, je te remercie.
j'y comprend pas tout mais je vais tester ça des que possible.
si j'ai à peu près compri, grace à ça je récupère le nb de jour dans la variable interval de type string, c'est bien ça?
si oui, il faut ensuite que je la transcri en entier je pense, non?
Vous n’avez pas trouvé la réponse que vous recherchez ?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 6 juil. 2007 à 09:45
Non, c'est pas Interval qui te donne cette valeur, mais la fonction DateDiff en elle-même.
Interval, c'est style "d", pour jour, mais t'en a d'autres...
flamcy
Messages postés58Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention14 avril 2009 6 juil. 2007 à 18:21
Un grand merci une fois encore à Mortalino
j'ai utilisé NbJour = DateDiff("d", DateDebut, DateFin)
et dans ma déclaration des variables (module)
Dim nbjour As Integer
Dim datedebut As Date, datefin As Date
il fallait mettre public à la place de "dim". je ne sais pas pourquoi mais comme ça, ça marche nikel. Il ne me reste plus qu'à rentrer toutes mes formules... lol
par contre j'ai pas compris la différence avec le code précédent Function Datediff....
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 6 juil. 2007 à 20:41
Public dans un module te met la portée de cette variable à tout ton projet.
Alors que Dim, offre une portée plus réduite (niveau procédure si déclarée dans procédure, ou objet style Form ou Classe si déclarée dans les déclarations)
Concernant ce que tu me disais :
...j'ai pas compris différence avec le code précédent Function Datediff C'est la fonction 'brute', c'est à dire que cela te montre les paramètres à indiquer ainsi que leur type. Entre Crochets [], ce sont des paramètres Optionnels, donc pas obligatoires.
Je ne l'invente pas, regarde dans l'Explorateur d'objets (F2). Ca aide énormément.
Autre exemple, simple que tu utilises certainement, c'est MsgBox. C'est une fonction :
MsgBox "Salut"
Call MsgBox("Salut")
Function MsgBox(Prompt, [Buttons As VbMsgBoxStyle = vbOKOnly], [Title], [HelpFile], [Context]) As VbMsgBoxResult
Et oui, si tu veux (en cas de boutons en plus que OK, genre Annuler, ou Oui / Non) tu peux récupérer la valeur de la fonction MsgBox (genre vbOK, ou vbCancel) mais là n'est pas la question, c'était juste à titre d'exemple, pour mieux comprendre
flamcy
Messages postés58Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention14 avril 2009 6 juil. 2007 à 20:57
ok, j'avais jms percuté que les [] étaient optionnels.
ma référence en cas de pb c'est MSDN ou une recherche par mot clé dans les forum ou tuto.
sinon bien vu pr les msgbox, je suis en train de me prendre la tete dessus car qd je clik sur ok (vbexclamation), je veux que l'utilisateur retourne à la feuille qu'il vient d'utiliser.
Dans mon cas, il passe qd meme à la feuille suivante.
ca doit etre bidon mais je me prend la tete dessus
mon code:
Private Sub Command1_Suivant_Click()
Dim reponse1 As Integer, reponse2 As Integer
If IsNumeric(releve1er) = False Then
reponse1 = MsgBox("Les relevés doivent être uniquement en chiffres", vbExclamation, "Recommencer la saisie des relevés")
If reponse1 = vbOK Then
Resume
End If
End If
nbjour = 0
nbjour = DateDiff("d", datedebut, datefin)
Resultat.Show
Resultat.Label12.Caption = nbjour
Relevé1.Hide
End Sub
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 6 juil. 2007 à 21:08
Tu vois que ça sert le F2
Regarde bien ce qu'est censé te retourner la fonction MsgBox :
Function MsgBox(Prompt, [Buttons As VbMsgBoxStyle = vbOKOnly], [Title], [HelpFile], [Context]) As VbMsgBoxResult
Donc il te renvoi un type vbMsgBoxResult, pas Integer. Donc :
Private Sub Command1_Suivant_Click()
<strike>Dim reponse1 As Integer, reponse2 As Integer</strike>' pas bon
Dim reponse1 As vbMsgBoxResult, reponse2 As
vbMsgBoxResult
If Not IsNumeric(releve1er) Then
reponse1 = MsgBox("Les relevés doivent être uniquement
en chiffres", vbExclamation, "Recommencer la saisie des relevés")
Select Case reponse1
Case vbOK
' ce que tu dois
faire si on appuie sur OK
Case vbCancel
' ce que tu dois
faire si on appuie sur Annuler
Case vbYes
' ce que tu dois faire si on appuie sur
Oui
Case vbNo
' ce que tu dois
faire si on appuie sur Non
End Select
End If
nbjour = 0 ' inutule, car tu récupéres la
valeur avec la fonction, juste après
nbjour = DateDiff("d", datedebut, datefin)
Resultat.Show
Resultat.Label12.Caption = nbjour
Relevé1.Hide
End Sub
~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 6 juil. 2007 à 21:11
Heu je suis en train de me dire que ton MsgBox, on s'en fiche de la valeur, il faut quitter la Sub :
Private Sub Command1_Suivant_Click()
If Not IsNumeric(releve1er) Then
MsgBox"Les relevés doivent être uniquement en chiffres", vbExclamation,"Recommencer la saisie des relevés"
Exit Sub ' quitte la procédure, évite de continuer le code
End If
nbjour = 0 ' inutule, car tu récupéres la valeur avec la fonction, juste après
nbjour = DateDiff("d", datedebut, datefin)
Resultat.Show
Resultat.Label12.Caption = nbjour
Relevé1.Hide
End Sub
flamcy
Messages postés58Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention14 avril 2009 6 juil. 2007 à 21:17
ah trop fort ton Exit sub, c'est ce qu'il me fallait.
pour le "integer", c'est car j'ai lu que la réponse retournée est un entier.
et le nbjour = 0 c'est pour initialiser ma valeur (c'est un réflexe que j'essai de prendre pour éviter certaines surprises que j'ai deja eu). lol
petit à petit, je vais peut-etre devenir un gd programmeur... mdr