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

Philou250

Habitué
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
Code:
Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Calendrier.Show
End Sub
Private Sub TextBox2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Calendrier.Show
End Sub

et le code du userform contenant le calendrier

Code:
Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
UserForm1.TextBox1.Value = DateClicked
UserForm1.TextBox2.Value = DateClicked
End Sub

voila,
Si quequ'un peut m'aider !

Merci,
PHILOU 250.
 

zeb

Modérateur
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.
 

Philou250

Habitué
Salut,

Je déclare donc une variable du type

Code:
public mon_textbox_a_remplir as integer
ensuite
Code:
Private Sub TextBox2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
mon_textbox_a_remplir = 2
calendrier.show
End sub
et enfin
Code:
Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
UserForm1.Controls("TextBox" & mon_textbox_a_remplir).Value = DateClicked
End Sub

J'ai testé cette solution, mais de nombreux beug surgissent. Notament lorsque je remplis mes textboxs dans le désordre ...
 

zeb

Modérateur
Ohlala, mais non !!!!!

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

Code:
Dim ton_textbox_a_remplir as Object

Sub TextBox2_MouseUp(...)
    Set ton_textbox_a_remplir = TextBox2
    calendrier.show
End sub

Sub MonthView1_DateClick(...)
    ' // Petit contrôle, quand même !
    If IsObject(ton_textbox_a_remplir) Then ton_textbox_a_remplir.Value = DateClicked
End Sub
 

Philou250

Habitué
Merci pur toutes ces réponses ZEB,
Mais ici le probleme bloque à ce niveau
Code:
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 ?
 

zeb

Modérateur
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.
 

Philou250

Habitué
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...
 

zeb

Modérateur
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 : e explicitement ta date en chaîne de caractères. Tu n'auras plus le problème....

:D
 

Philou250

Habitué
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

Code:
Private Sub TextBox_Change()
TextBox.Value = Format(TextBox.Value, "dd-mm-yyyy")
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"
Code:
Private Sub TextBox_Change()
TextBox.Value = CDate(TextBox.Value)
End Sub

Je bloque ...
 

zeb

Modérateur
Philou250 =
Vous devez être connecté pour voir les images.

\
[:zeb:3]

Mais bougre d'âne, laisse Textbox.Value tranquille !
Ce n'est pas le texte qui pose problème [strike]c'est toi[/strike], 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.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 151
Messages
6 718 426
Membres
1 586 422
Dernier membre
IamGOODburger
Partager cette page
Haut