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
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
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
Tu peux essayer un truc du genre :
Dans le 1er UserForm :
Private Sub CommandButton1_Click()
UserForm2.TxtCtrl = "TextBox1"
UserForm2.Show
End Sub
Private Sub CommandButton2_Click()
UserForm2.TxtCtrl = "TextBox2"
UserForm2.Show
End Sub
etc ...
Dans le 2eme UserForm :
Private txtName As String
Public Property Let TxtCtrl(newName As String)
txtName = newName
End Property
Public Property Get TxtCtrl() As String
TxtCtrl = txtName
End Property
Private Sub Calendar1_DblClick()
UserForm1.Controls(TxtCtrl) = Format(Calendar1.Value, "d mmm yy")
Unload Me
End SubBonjour à 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
Tu peux essayer un truc du genre :
Dans le 1er UserForm :
Private Sub CommandButton1_Click()
UserForm2.TxtCtrl = "TextBox1"
UserForm2.Show
End Sub
Private Sub CommandButton2_Click()
UserForm2.TxtCtrl = "TextBox2"
UserForm2.Show
End Sub
etc ...
Dans le 2eme UserForm :
Private txtName As String
Public Property Let TxtCtrl(newName As String)
txtName = newName
End Property
Public Property Get TxtCtrl() As String
TxtCtrl = txtName
End Property
Private Sub Calendar1_DblClick()
UserForm1.Controls(TxtCtrl) = Format(Calendar1.Value, "d mmm yy")
Unload Me
End Sub
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
Tu peux essayer un truc du genre :
Dans le 1er UserForm :
Private Sub CommandButton1_Click()
UserForm2.TxtCtrl = "TextBox1"
UserForm2.Show
End Sub
Private Sub CommandButton2_Click()
UserForm2.TxtCtrl = "TextBox2"
UserForm2.Show
End Sub
etc ...
Dans le 2eme UserForm :
Private txtName As String
Public Property Let TxtCtrl(newName As String)
txtName = newName
End Property
Public Property Get TxtCtrl() As String
TxtCtrl = txtName
End Property
Private Sub Calendar1_DblClick()
UserForm1.Controls(TxtCtrl) = Format(Calendar1.Value, "d mmm yy")
Unload Me
End SubBonjour à 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
Bonjour Jacques93,
donc après la mise en application ... ca marche super bien ... mais je
n'y comprends rien :-(
toujours plus curieux, si une bonne âme pouvait me dire quelque mot sur
le truc j'eu été trés comtent :-)
mille merci à tous pour la science que vous partager ici
@+lolo
Bonjour Jacques93,
donc après la mise en application ... ca marche super bien ... mais je
n'y comprends rien :-(
toujours plus curieux, si une bonne âme pouvait me dire quelque mot sur
le truc j'eu été trés comtent :-)
mille merci à tous pour la science que vous partager ici
@+lolo
Bonjour Jacques93,
donc après la mise en application ... ca marche super bien ... mais je
n'y comprends rien :-(
toujours plus curieux, si une bonne âme pouvait me dire quelque mot sur
le truc j'eu été trés comtent :-)
mille merci à tous pour la science que vous partager ici
@+lolo
Dans ta question, tu indiques avoir essayé de nommer une variable
publique contenant le nom du textbox à renseigner. Une fois connu ce
nom, il faut utiliser la collection 'controls' du UserForm pour y
accéder :
UserForm1.Controls("NomDuControle") = ...
Cela pourrait fonctionner simplement comme ça, mais pour éviter
d'utiliser une variable publique, j'ai utilisé :
Public Property Get NomDePropriété : renvoie la valeur de la
propriété
et
Public Property Let NomDeProPriété : affecte la valeur de la
propriété
ce qui revient a ajouter une propriété à l'objet UserForm. Dans
l'exemple, TxtCtrl devient une propriété du UserForm au même titre que
BackColor, ForeColor, Caption, etc... et qui contient le nom du
contrôle à renseigner lors du double-click.
Cette syntaxe est principalement utilisée dans le développement de
contrôles ActiveX (en VB6) où elle est indispensable pour définir les
propriétés du contrôle. Mais elle peut l'être également avec les
UserForm ou les modules de classe.
Dans ta question, tu indiques avoir essayé de nommer une variable
publique contenant le nom du textbox à renseigner. Une fois connu ce
nom, il faut utiliser la collection 'controls' du UserForm pour y
accéder :
UserForm1.Controls("NomDuControle") = ...
Cela pourrait fonctionner simplement comme ça, mais pour éviter
d'utiliser une variable publique, j'ai utilisé :
Public Property Get NomDePropriété : renvoie la valeur de la
propriété
et
Public Property Let NomDeProPriété : affecte la valeur de la
propriété
ce qui revient a ajouter une propriété à l'objet UserForm. Dans
l'exemple, TxtCtrl devient une propriété du UserForm au même titre que
BackColor, ForeColor, Caption, etc... et qui contient le nom du
contrôle à renseigner lors du double-click.
Cette syntaxe est principalement utilisée dans le développement de
contrôles ActiveX (en VB6) où elle est indispensable pour définir les
propriétés du contrôle. Mais elle peut l'être également avec les
UserForm ou les modules de classe.
Dans ta question, tu indiques avoir essayé de nommer une variable
publique contenant le nom du textbox à renseigner. Une fois connu ce
nom, il faut utiliser la collection 'controls' du UserForm pour y
accéder :
UserForm1.Controls("NomDuControle") = ...
Cela pourrait fonctionner simplement comme ça, mais pour éviter
d'utiliser une variable publique, j'ai utilisé :
Public Property Get NomDePropriété : renvoie la valeur de la
propriété
et
Public Property Let NomDeProPriété : affecte la valeur de la
propriété
ce qui revient a ajouter une propriété à l'objet UserForm. Dans
l'exemple, TxtCtrl devient une propriété du UserForm au même titre que
BackColor, ForeColor, Caption, etc... et qui contient le nom du
contrôle à renseigner lors du double-click.
Cette syntaxe est principalement utilisée dans le développement de
contrôles ActiveX (en VB6) où elle est indispensable pour définir les
propriétés du contrôle. Mais elle peut l'être également avec les
UserForm ou les modules de classe.
Bonjour Jacques93,Dans ta question, tu indiques avoir essayé de nommer une variable
publique contenant le nom du textbox à renseigner. Une fois connu ce
nom, il faut utiliser la collection 'controls' du UserForm pour y
accéder :
UserForm1.Controls("NomDuControle") = ...
Cela pourrait fonctionner simplement comme ça, mais pour éviter
d'utiliser une variable publique, j'ai utilisé :
arf comme quoi parfois on passe pas loin mais trop quand même ...
petite précision : pourquoi s'économiser un variable public ?
Sécurité ? occupation mémoire ? philosophie ?Public Property Get NomDePropriété : renvoie la valeur de la
propriété
et
Public Property Let NomDeProPriété : affecte la valeur de la
propriété
ce qui revient a ajouter une propriété à l'objet UserForm. Dans
l'exemple, TxtCtrl devient une propriété du UserForm au même titre que
BackColor, ForeColor, Caption, etc... et qui contient le nom du
contrôle à renseigner lors du double-click.
Cette syntaxe est principalement utilisée dans le développement de
contrôles ActiveX (en VB6) où elle est indispensable pour définir les
propriétés du contrôle. Mais elle peut l'être également avec les
UserForm ou les modules de classe.
super ... très beau en fait :-)
je t'offre un plein seau de mercis
@+lolo
Bonjour Jacques93,
Dans ta question, tu indiques avoir essayé de nommer une variable
publique contenant le nom du textbox à renseigner. Une fois connu ce
nom, il faut utiliser la collection 'controls' du UserForm pour y
accéder :
UserForm1.Controls("NomDuControle") = ...
Cela pourrait fonctionner simplement comme ça, mais pour éviter
d'utiliser une variable publique, j'ai utilisé :
arf comme quoi parfois on passe pas loin mais trop quand même ...
petite précision : pourquoi s'économiser un variable public ?
Sécurité ? occupation mémoire ? philosophie ?
Public Property Get NomDePropriété : renvoie la valeur de la
propriété
et
Public Property Let NomDeProPriété : affecte la valeur de la
propriété
ce qui revient a ajouter une propriété à l'objet UserForm. Dans
l'exemple, TxtCtrl devient une propriété du UserForm au même titre que
BackColor, ForeColor, Caption, etc... et qui contient le nom du
contrôle à renseigner lors du double-click.
Cette syntaxe est principalement utilisée dans le développement de
contrôles ActiveX (en VB6) où elle est indispensable pour définir les
propriétés du contrôle. Mais elle peut l'être également avec les
UserForm ou les modules de classe.
super ... très beau en fait :-)
je t'offre un plein seau de mercis
@+lolo
Bonjour Jacques93,Dans ta question, tu indiques avoir essayé de nommer une variable
publique contenant le nom du textbox à renseigner. Une fois connu ce
nom, il faut utiliser la collection 'controls' du UserForm pour y
accéder :
UserForm1.Controls("NomDuControle") = ...
Cela pourrait fonctionner simplement comme ça, mais pour éviter
d'utiliser une variable publique, j'ai utilisé :
arf comme quoi parfois on passe pas loin mais trop quand même ...
petite précision : pourquoi s'économiser un variable public ?
Sécurité ? occupation mémoire ? philosophie ?Public Property Get NomDePropriété : renvoie la valeur de la
propriété
et
Public Property Let NomDeProPriété : affecte la valeur de la
propriété
ce qui revient a ajouter une propriété à l'objet UserForm. Dans
l'exemple, TxtCtrl devient une propriété du UserForm au même titre que
BackColor, ForeColor, Caption, etc... et qui contient le nom du
contrôle à renseigner lors du double-click.
Cette syntaxe est principalement utilisée dans le développement de
contrôles ActiveX (en VB6) où elle est indispensable pour définir les
propriétés du contrôle. Mais elle peut l'être également avec les
UserForm ou les modules de classe.
super ... très beau en fait :-)
je t'offre un plein seau de mercis
@+lolo
Bonjour Jacques93,
Inspiré de ta réponse d'hier à -=lolol=- je souhaite passer également le
nom du UserForm en "variable".
1°) Dans le UserForm de saisie (d'origine) :
a) dans l'évènement "Initialize" du UserForm :
usfaCalendrier.UsfUsed = "usfIns"
b) évènement "Enter" de chaque TextBox concernée :
usfaCalendrier.TxtCtrl = "txtDateNais" 'le nom de chaque TextBox
usfaCalendrier.Show
2°) Dans le UserForm "calendrier" (usfaCalendrier)
Private txtName As String
Private usfName As String
Public Property Let TxtCtrl(newName As String)
txtName = newName
End Property
Public Property Get TxtCtrl() As String
TxtCtrl = txtName
End Property
Public Property Let UsfUsed(newUsf As String)
usfName = newUsf
End Property
Public Property Get UsfUsed() As String
UsfUsed = usfName
End Property
Private Sub Annuler_Click()
Unload Me
End Sub
Private Sub Calendar1_DblClick()
UserForms(UsfUsed).Controls(TxtCtrl) = Format(Calendar1.Value,
"dd/mm/yyyy")
Unload Me
End Sub
Alors que les "variables" UsfUsed et TxtCtrl prennent bien le nom des
contrôles d'origine, un bogue, pour incompatibilité de type, se produit sur
la ligne :
UserForms(UsfUsed).Controls(TxtCtrl) = Format(Calendar1.Value, "dd/mm/yyyy")
Cela provient certainement de la déclaration de ma UserForm mais je ne
trouve pas la façon d'y remédier.
Peux-tu me remettre sur la voie ?
Merci d'avance de ton aide.
Michel
Bonjour Jacques93,
Inspiré de ta réponse d'hier à -=lolol=- je souhaite passer également le
nom du UserForm en "variable".
1°) Dans le UserForm de saisie (d'origine) :
a) dans l'évènement "Initialize" du UserForm :
usfaCalendrier.UsfUsed = "usfIns"
b) évènement "Enter" de chaque TextBox concernée :
usfaCalendrier.TxtCtrl = "txtDateNais" 'le nom de chaque TextBox
usfaCalendrier.Show
2°) Dans le UserForm "calendrier" (usfaCalendrier)
Private txtName As String
Private usfName As String
Public Property Let TxtCtrl(newName As String)
txtName = newName
End Property
Public Property Get TxtCtrl() As String
TxtCtrl = txtName
End Property
Public Property Let UsfUsed(newUsf As String)
usfName = newUsf
End Property
Public Property Get UsfUsed() As String
UsfUsed = usfName
End Property
Private Sub Annuler_Click()
Unload Me
End Sub
Private Sub Calendar1_DblClick()
UserForms(UsfUsed).Controls(TxtCtrl) = Format(Calendar1.Value,
"dd/mm/yyyy")
Unload Me
End Sub
Alors que les "variables" UsfUsed et TxtCtrl prennent bien le nom des
contrôles d'origine, un bogue, pour incompatibilité de type, se produit sur
la ligne :
UserForms(UsfUsed).Controls(TxtCtrl) = Format(Calendar1.Value, "dd/mm/yyyy")
Cela provient certainement de la déclaration de ma UserForm mais je ne
trouve pas la façon d'y remédier.
Peux-tu me remettre sur la voie ?
Merci d'avance de ton aide.
Michel
Bonjour Jacques93,
Inspiré de ta réponse d'hier à -=lolol=- je souhaite passer également le
nom du UserForm en "variable".
1°) Dans le UserForm de saisie (d'origine) :
a) dans l'évènement "Initialize" du UserForm :
usfaCalendrier.UsfUsed = "usfIns"
b) évènement "Enter" de chaque TextBox concernée :
usfaCalendrier.TxtCtrl = "txtDateNais" 'le nom de chaque TextBox
usfaCalendrier.Show
2°) Dans le UserForm "calendrier" (usfaCalendrier)
Private txtName As String
Private usfName As String
Public Property Let TxtCtrl(newName As String)
txtName = newName
End Property
Public Property Get TxtCtrl() As String
TxtCtrl = txtName
End Property
Public Property Let UsfUsed(newUsf As String)
usfName = newUsf
End Property
Public Property Get UsfUsed() As String
UsfUsed = usfName
End Property
Private Sub Annuler_Click()
Unload Me
End Sub
Private Sub Calendar1_DblClick()
UserForms(UsfUsed).Controls(TxtCtrl) = Format(Calendar1.Value,
"dd/mm/yyyy")
Unload Me
End Sub
Alors que les "variables" UsfUsed et TxtCtrl prennent bien le nom des
contrôles d'origine, un bogue, pour incompatibilité de type, se produit sur
la ligne :
UserForms(UsfUsed).Controls(TxtCtrl) = Format(Calendar1.Value, "dd/mm/yyyy")
Cela provient certainement de la déclaration de ma UserForm mais je ne
trouve pas la façon d'y remédier.
Peux-tu me remettre sur la voie ?
Merci d'avance de ton aide.
Michel
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 SubBonjour Jacques93,
Inspiré de ta réponse d'hier à -=lolol=- je souhaite passer également le
nom du UserForm en "variable".
1°) Dans le UserForm de saisie (d'origine) :
a) dans l'évènement "Initialize" du UserForm :
usfaCalendrier.UsfUsed = "usfIns"
b) évènement "Enter" de chaque TextBox concernée :
usfaCalendrier.TxtCtrl = "txtDateNais" 'le nom de chaque TextBox
usfaCalendrier.Show
2°) Dans le UserForm "calendrier" (usfaCalendrier)
Private txtName As String
Private usfName As String
Public Property Let TxtCtrl(newName As String)
txtName = newName
End Property
Public Property Get TxtCtrl() As String
TxtCtrl = txtName
End Property
Public Property Let UsfUsed(newUsf As String)
usfName = newUsf
End Property
Public Property Get UsfUsed() As String
UsfUsed = usfName
End Property
Private Sub Annuler_Click()
Unload Me
End Sub
Private Sub Calendar1_DblClick()
UserForms(UsfUsed).Controls(TxtCtrl) = Format(Calendar1.Value,
"dd/mm/yyyy")
Unload Me
End Sub
Alors que les "variables" UsfUsed et TxtCtrl prennent bien le nom des
contrôles d'origine, un bogue, pour incompatibilité de type, se produit
sur la ligne :
UserForms(UsfUsed).Controls(TxtCtrl) = Format(Calendar1.Value,
"dd/mm/yyyy")
Cela provient certainement de la déclaration de ma UserForm mais je ne
trouve pas la façon d'y remédier.
Peux-tu me remettre sur la voie ?
Merci d'avance de ton aide.
Michel
--
Cordialement,
Jacques.
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
Bonjour Jacques93,
Inspiré de ta réponse d'hier à -=lolol=- je souhaite passer également le
nom du UserForm en "variable".
1°) Dans le UserForm de saisie (d'origine) :
a) dans l'évènement "Initialize" du UserForm :
usfaCalendrier.UsfUsed = "usfIns"
b) évènement "Enter" de chaque TextBox concernée :
usfaCalendrier.TxtCtrl = "txtDateNais" 'le nom de chaque TextBox
usfaCalendrier.Show
2°) Dans le UserForm "calendrier" (usfaCalendrier)
Private txtName As String
Private usfName As String
Public Property Let TxtCtrl(newName As String)
txtName = newName
End Property
Public Property Get TxtCtrl() As String
TxtCtrl = txtName
End Property
Public Property Let UsfUsed(newUsf As String)
usfName = newUsf
End Property
Public Property Get UsfUsed() As String
UsfUsed = usfName
End Property
Private Sub Annuler_Click()
Unload Me
End Sub
Private Sub Calendar1_DblClick()
UserForms(UsfUsed).Controls(TxtCtrl) = Format(Calendar1.Value,
"dd/mm/yyyy")
Unload Me
End Sub
Alors que les "variables" UsfUsed et TxtCtrl prennent bien le nom des
contrôles d'origine, un bogue, pour incompatibilité de type, se produit
sur la ligne :
UserForms(UsfUsed).Controls(TxtCtrl) = Format(Calendar1.Value,
"dd/mm/yyyy")
Cela provient certainement de la déclaration de ma UserForm mais je ne
trouve pas la façon d'y remédier.
Peux-tu me remettre sur la voie ?
Merci d'avance de ton aide.
Michel
--
Cordialement,
Jacques.
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 SubBonjour Jacques93,
Inspiré de ta réponse d'hier à -=lolol=- je souhaite passer également le
nom du UserForm en "variable".
1°) Dans le UserForm de saisie (d'origine) :
a) dans l'évènement "Initialize" du UserForm :
usfaCalendrier.UsfUsed = "usfIns"
b) évènement "Enter" de chaque TextBox concernée :
usfaCalendrier.TxtCtrl = "txtDateNais" 'le nom de chaque TextBox
usfaCalendrier.Show
2°) Dans le UserForm "calendrier" (usfaCalendrier)
Private txtName As String
Private usfName As String
Public Property Let TxtCtrl(newName As String)
txtName = newName
End Property
Public Property Get TxtCtrl() As String
TxtCtrl = txtName
End Property
Public Property Let UsfUsed(newUsf As String)
usfName = newUsf
End Property
Public Property Get UsfUsed() As String
UsfUsed = usfName
End Property
Private Sub Annuler_Click()
Unload Me
End Sub
Private Sub Calendar1_DblClick()
UserForms(UsfUsed).Controls(TxtCtrl) = Format(Calendar1.Value,
"dd/mm/yyyy")
Unload Me
End Sub
Alors que les "variables" UsfUsed et TxtCtrl prennent bien le nom des
contrôles d'origine, un bogue, pour incompatibilité de type, se produit
sur la ligne :
UserForms(UsfUsed).Controls(TxtCtrl) = Format(Calendar1.Value,
"dd/mm/yyyy")
Cela provient certainement de la déclaration de ma UserForm mais je ne
trouve pas la façon d'y remédier.
Peux-tu me remettre sur la voie ?
Merci d'avance de ton aide.
Michel
--
Cordialement,
Jacques.
Sécurité, et méthode ;-)
Sécurité, et méthode ;-)
Sécurité, et méthode ;-)