Urgnet!! - MonthView

aptech Messages postés 36 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 5 juillet 2003 - 31 mai 2003 à 21:42
reasonheart Messages postés 1 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 14 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

>:) APTech >:)

13 réponses

cs_sjon Messages postés 861 Date d'inscription mardi 26 mars 2002 Statut Membre Dernière intervention 29 novembre 2006 1
1 juin 2003 à 01:20
Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
Me.Caption = DateClicked
End Sub
0
flamcy Messages postés 58 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 14 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

****

merci d'avance
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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.

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
flamcy Messages postés 58 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 14 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?
0

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

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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...

NbJour = DateDiff("d", DateDebut, DateFin)

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
flamcy Messages postés 58 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 14 avril 2009
6 juil. 2007 à 17:21
ahah...
merci, je vais tester de suite en esayant de tout bien remettre comme il faut...
0
flamcy Messages postés 58 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 14 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....


à bientot
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
flamcy Messages postés 58 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 14 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
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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>

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
flamcy Messages postés 58 Date d'inscription lundi 9 octobre 2006 Statut Membre Dernière intervention 14 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


j'ai du chemin

MERCI
0
reasonheart Messages postés 1 Date d'inscription lundi 27 avril 2009 Statut Membre Dernière intervention 14 novembre 2009
14 nov. 2009 à 16:07
tu fais:

Private Sub Calendar1_Click()

text1.Text = Calendar1.Day
text2.Text=Calendar1.month
text3.Text=Calendar1.Year

End Sub

ainsi avec ces trois textbox reunis tu as la date
0
Rejoignez-nous