OVH Cloud OVH Cloud

controle calendrier

11 réponses
Avatar
-=lolol=-
Bonjour à tous,

Toujours dans mes histoires de planning, j'utilise le controle calendrier
pour désigner une date :

Dans 1er userform, j'ai un 1er bouton qui appel un 2nd userform contenant le
calendrier :
Private Sub Btn_Ens_DélaiVendu_Click()
Usf_Calendrier.Show
End Sub

ce userform calendrier apparait :
Private Sub UserForm_Initialize()
Calendar1.FirstDay = 2
Calendar1.Today
Calendar1.GridCellEffect = 1
Calendar1.Refresh
End Sub

puis lors d'un double clic se ferme en renvoyant la date choisie dans un
TextBox du 1er Userform
Private Sub Calendar1_DblClick()
Usf_Général.TextBox_Ens_DélaiVendu = Format(Calendar1.Value, "d mmm yy")
Unload Me
End Sub

jusque la tout va bien :-)
... mais, j'ai plusieurs bouton de choix de date renvoyant ces dates dans
différents TextBox et tel que c'est parti, je suis obligé d'avoir autant de
userform calendrier :-(

Pouvez vous m'aider ?

J'ai tenté plusieurs trucs sans succès :

- passer en argument le nom du textbox à remplir dans l'évènement clic du
bouton dédié au textbox : Private Sub Btn_Ens_DélaiVendu_Click(NomTextBox)

- nommer une variable public contenant le nom du textbox à remplir de façon
à ce que le double clic dans le calendrier remplisse le bon textbox en
lisant cette variable

mais non, rien n'y fait (au secours !!!)

Mille merci pour l'aide que vous m'apporterez
@+lolo

1 réponse

1 2
Avatar
Péhemme
Je suis revenu à mon approche initiale et j'ai, pour répondre à mon problème
et en utilisant ta méthode, 2 calendriers (un pour mon usf "Fiche
d'inscription", le second pour ma fiche "Visualisation/Modification".
Cependant, dans le cas de figure où la TextBox est dans une Frame avec
d'autres contrôles, elle-même dans une Frame, l'utilisation de cette
procédure devient erratique.
C'est en effet le premier contrôle activé qui prend l'évènement (un
OptionButton par exemple).
J'avais déjà ce même problème, bien que mon approche était différente, en
définissant la TextBox appelante as object, puis en utilisant
l'ActiveControl soit : .
Dim T As Object
Set T = usfIns.ActiveControl.ActiveControl.ActiveControl
Il semblerait que 2 Frames, l'une dans l'autre, fait perdre la tête à VBA.
Merci encore de ton aide
Bien amicalement
Michel



"Jacques93" a écrit dans le message de news:

Bonjour Péhemme,

Contrairement à la collection 'Controls', il ne semble pas qu'on puisse
référencer les éléments de la collection 'UserForms' par leur nom.
D'ailleurs l'objet 'UserForm' n'a pas de propriété 'Name', si quelqu'un en
connait la raison ???

Mais on peut contourner le problème en balayant la collection UserForms
de 0 UserForms.Count -1 et en testant le nom :

Private Sub Calendar1_DblClick()
Dim i As Integer

For i = 0 To UserForms.Count - 1
If UserForms(i).Name = UsfUsed Then
UserForms(i).Controls(TxtCtrl) = Format(Calendar1.Value,
"dd/mm/yyyy")
Exit For
End If
Next i
Unload Me
End Sub


1 2