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
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
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" <jacques@NoSpam> a écrit dans le message de news:
uXhigMTtFHA.1848@TK2MSFTNGP10.phx.gbl...
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
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