Se connecter avec
S'enregistrer | Connectez-vous

Entrer des dates dans textboxs à l'aide d'un calendrier (Mcrsft monthview ctrl)

Dernière réponse : dans Programmation

Bonjour,

Mon problème ici intervient lorsque je veux entrer mes dates dans plusieurs textboxs à l'aide d'un userform contenant le calendrier.
Lorsque je sélectionne une date, elle se rentre automatiquement dans toutes mes textboxs, alors que j'aimerais pouvoir sélectionner des dates différentes pour chaques textboxs...
voici le code de mon usferform contenant les textboxs
  1. Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  2. Calendrier.Show
  3. End Sub
  4. Private Sub TextBox2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  5. Calendrier.Show
  6. End Sub


et le code du userform contenant le calendrier

  1. Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
  2. UserForm1.TextBox1.Value = DateClicked
  3. UserForm1.TextBox2.Value = DateClicked
  4. End Sub


voila,
Si quequ'un peut m'aider !

Merci,
PHILOU 250.
Philou250 a édité ce message
Lassé par la pub ? Créez un compte
Expert Programmation

Salut Philou,
(Avec lie site nouveau, on peut préciser le langage dans la balise code. Replace la balise [code] par [code=VB] pour faire joli)

Regarde mieux ton code de MonthView1_DateClick(). A chaque clic, tu remplis les deux Textbox !
Je te propose de créer une variable mon_textbox_a_remplir externe à tes fonctions. (Tu peux changer le nom de la variable ! :lol:  )
Dans tes .._MouseUp(), tu y mets le Textbox qui t'intéresse.
Et dans le .._DateClick, tu t'en sers.

Salut,

Je déclare donc une variable du type

  1. public mon_textbox_a_remplir as integer

ensuite
  1. Private Sub TextBox2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  2. mon_textbox_a_remplir = 2
  3. calendrier.show
  4. End sub

et enfin
  1. Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
  2. UserForm1.Controls("TextBox" & mon_textbox_a_remplir).Value = DateClicked
  3. End Sub


J'ai testé cette solution, mais de nombreux beug surgissent. Notament lorsque je remplis mes textboxs dans le désordre ...
Philou250 a édité ce message
Expert Programmation

Ohlala, mais non !!!!!

Un textbox_a_remplir, ce n'est pas un entier. C'est un objet TextBox (il fallait y penser :lol:  )

  1. Dim ton_textbox_a_remplir as Object
  2.  
  3. Sub TextBox2_MouseUp(...)
  4. Set ton_textbox_a_remplir = TextBox2
  5. calendrier.show
  6. End sub
  7.  
  8. Sub MonthView1_DateClick(...)
  9. ' // Petit contrôle, quand même !
  10. If IsObject(ton_textbox_a_remplir) Then ton_textbox_a_remplir.Value = DateClicked
  11. End Sub

Merci pur toutes ces réponses ZEB,
Mais ici le probleme bloque à ce niveau
  1. If IsObject(ton_textbox_a_remplir) Then ton_textbox_a_remplir.Value = DateClicked

if IsObject(ton_textbox_a_remplir) <-- le coede bloque a ce niveau...

Je sais que chaques chose en son temps, mais j'ai également un problème, car lorssque les dates sont inférieur au 13 elle se marque dans les textboxs de la manière suivantes "mm/jj/yyy" .
Peux tu m'aider ?
Philou250 a édité ce message
Expert Programmation

Comment ça, ça bloque ? N'Y-a-t-il pas un message d'erreur ?
Utilises-tu l'Option Explicit (/!\ Interdit de ne pas répondre "Oui" :heink:  )


-------------

DateClicked est une date.
Value est une chaîne de caractères.

Formate explicitement ta date en chaîne de caractères. Tu n'auras plus le problème.

Je suis désolé de t'embéter, mais je bloque vraiment.
voici le message d'erreur :
Object variable or with block variable not set.


L'option explicit se met bien dans un module ?

Sinon je ne sais pas comment Formater explicitement ma date en chaîne de caractères...
Philou250 a édité ce message
Expert Programmation

Ah, j'te cause plus tant qu'il n'y a pas l'option explicit dans tous tes modules et toutes tes pages de code !

:fou:  :fou:  :fou: 

---------------------

Je recommence : Formate explicitement ta date en chaîne de caractères. Tu n'auras plus le problème....

:D 
zeb a édité ce message

Merci pour tout zeb,

mon probleme pour remplir mes textboxs est résolu, cependant lorsque je sélectionne une date ou le jour est inférieur à 12, ces dates se apparaissent au format "mm/dd/yyyy".
j'ai enter le code suivant

  1. Private Sub TextBox_Change()
  2. TextBox.Value = Format(TextBox.Value, "dd-mm-yyyy")
  3. End Sub


j'ai également testé avec CDate, et la toutes les dates sélectionner dans le calendrier monthview apparaisse au format "mm/dd/yyyy"
  1. Private Sub TextBox_Change()
  2. TextBox.Value = CDate(TextBox.Value)
  3. End Sub


Je bloque ...
Expert Programmation

Philou250 =
\
[:zeb:3]

Mais bougre d'âne, laisse Textbox.Value tranquille !
Ce n'est pas le texte qui pose problème c'est toi, c'est la DATE DateClicked !

:heink: 


-------------------

Il m'aurait été plus facile de te donner directement la solution, 8 messages plus haut, ce qui m'aurait dispensé de te faire passer pour un âne.
Mais j'estime que te laisser chercher un peu et te faire trouver la solution par toi-même est un bon exercice. Remarque que pour la grosse astuce du contrôle, je ne t'ai pas fait trop mariner. Il doit y avoir un truc évident dans ton second problème qui me pousse à te le faire découvrir par toi-même.
zeb a édité ce message
Lassé par la pub ? Créez un compte
  • Contenus similaires :
Tags :