Comment obliger l'utilisateur à utiliser le Calendar dans un TextBox
En fait, j'aimerais que la seul solution pour entrer une date dans un
TextBox c'est l'ouverture du Calendar. Ceci évite une mauvaise entrée d'un
format de date.
J'utilise actuellement cette fonction mais j'arrive à modifier quand même la
valeur du TextBox.
Private Sub TxtDate_Enter()
Set MaForm = Me
Calendrier_Form.Show
End Sub
Comment obliger l'utilisateur à utiliser le Calendar dans un TextBox
En fait, j'aimerais que la seul solution pour entrer une date dans un TextBox c'est l'ouverture du Calendar. Ceci évite une mauvaise entrée d'un format de date.
J'utilise actuellement cette fonction mais j'arrive à modifier quand même la valeur du TextBox.
Private Sub TxtDate_Enter() Set MaForm = Me Calendrier_Form.Show End Sub
Merci de votre aide
Cordialement
David
bonjour David,
voici un exemple,
http://cjoint.com/?bqtsWg1ZPk
isabelle
Le 2010-01-16 12:40, DAVID a écrit :
Bonsoir
Comment obliger l'utilisateur à utiliser le Calendar dans un TextBox
En fait, j'aimerais que la seul solution pour entrer une date dans un
TextBox c'est l'ouverture du Calendar. Ceci évite une mauvaise entrée d'un
format de date.
J'utilise actuellement cette fonction mais j'arrive à modifier quand même la
valeur du TextBox.
Private Sub TxtDate_Enter()
Set MaForm = Me
Calendrier_Form.Show
End Sub
Comment obliger l'utilisateur à utiliser le Calendar dans un TextBox
En fait, j'aimerais que la seul solution pour entrer une date dans un TextBox c'est l'ouverture du Calendar. Ceci évite une mauvaise entrée d'un format de date.
J'utilise actuellement cette fonction mais j'arrive à modifier quand même la valeur du TextBox.
Private Sub TxtDate_Enter() Set MaForm = Me Calendrier_Form.Show End Sub
Merci de votre aide
Cordialement
David
michdenis
Bonjour Isabelle,
Est-ce que ton exemple démontre comment OBLIGER à saisir une date dans un textbox ? ;-)
"isabelle" a écrit dans le message de groupe de discussion :
Comment obliger l'utilisateur à utiliser le Calendar dans un TextBox
En fait, j'aimerais que la seul solution pour entrer une date dans un TextBox c'est l'ouverture du Calendar. Ceci évite une mauvaise entrée d'un format de date.
J'utilise actuellement cette fonction mais j'arrive à modifier quand même la valeur du TextBox.
Private Sub TxtDate_Enter() Set MaForm = Me Calendrier_Form.Show End Sub
Merci de votre aide
Cordialement
David
Bonjour Isabelle,
Est-ce que ton exemple démontre comment OBLIGER
à saisir une date dans un textbox ?
;-)
"isabelle" <i@v> a écrit dans le message de groupe de discussion :
eGRAjhtlKHA.5728@TK2MSFTNGP06.phx.gbl...
bonjour David,
voici un exemple,
http://cjoint.com/?bqtsWg1ZPk
isabelle
Le 2010-01-16 12:40, DAVID a écrit :
Bonsoir
Comment obliger l'utilisateur à utiliser le Calendar dans un TextBox
En fait, j'aimerais que la seul solution pour entrer une date dans un
TextBox c'est l'ouverture du Calendar. Ceci évite une mauvaise entrée d'un
format de date.
J'utilise actuellement cette fonction mais j'arrive à modifier quand même la
valeur du TextBox.
Private Sub TxtDate_Enter()
Set MaForm = Me
Calendrier_Form.Show
End Sub
Comment obliger l'utilisateur à utiliser le Calendar dans un TextBox
En fait, j'aimerais que la seul solution pour entrer une date dans un TextBox c'est l'ouverture du Calendar. Ceci évite une mauvaise entrée d'un format de date.
J'utilise actuellement cette fonction mais j'arrive à modifier quand même la valeur du TextBox.
Private Sub TxtDate_Enter() Set MaForm = Me Calendrier_Form.Show End Sub
Merci de votre aide
Cordialement
David
michdenis
Bonjour,
Lorsque l'événement "Textbox1_Enter" s'exécute, entre dans le code de l'événement un espace dans le textbox
Me.textbox1 = " " plus les autres lignes de code liées à cet événement Ceci est suffisant pour déclencher l'événement suivant si l'usager décide d'annuler la saisie d'une date et passe au textbox suivant ou essaie de sortir du textbox
L'événement à ajouter au textbox devant recevoir une date : '----------------------------------- Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) 'le chiffre 10 représente le nombre de caractères que 'devrait avoir la date incluant les symboles du format If Len(Me.TextBox1) <> 10 Then MsgBox "Vous devez saisir une date" Me.TextBox1.SetFocus Cancel = True UserForm1.Show Else 'Si la date est bonne, on passe au textbox suivant Me.Textbox1.setfocus End If End Sub '-----------------------------------
Bonjour,
Lorsque l'événement "Textbox1_Enter" s'exécute,
entre dans le code de l'événement un espace dans le textbox
Me.textbox1 = " " plus les autres lignes de code liées à cet événement
Ceci est suffisant pour déclencher l'événement suivant si l'usager décide
d'annuler la saisie d'une date et passe au textbox suivant ou essaie de
sortir du textbox
L'événement à ajouter au textbox devant recevoir une date :
'-----------------------------------
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
'le chiffre 10 représente le nombre de caractères que
'devrait avoir la date incluant les symboles du format
If Len(Me.TextBox1) <> 10 Then
MsgBox "Vous devez saisir une date"
Me.TextBox1.SetFocus
Cancel = True
UserForm1.Show
Else
'Si la date est bonne, on passe au textbox suivant
Me.Textbox1.setfocus
End If
End Sub
'-----------------------------------
Lorsque l'événement "Textbox1_Enter" s'exécute, entre dans le code de l'événement un espace dans le textbox
Me.textbox1 = " " plus les autres lignes de code liées à cet événement Ceci est suffisant pour déclencher l'événement suivant si l'usager décide d'annuler la saisie d'une date et passe au textbox suivant ou essaie de sortir du textbox
L'événement à ajouter au textbox devant recevoir une date : '----------------------------------- Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) 'le chiffre 10 représente le nombre de caractères que 'devrait avoir la date incluant les symboles du format If Len(Me.TextBox1) <> 10 Then MsgBox "Vous devez saisir une date" Me.TextBox1.SetFocus Cancel = True UserForm1.Show Else 'Si la date est bonne, on passe au textbox suivant Me.Textbox1.setfocus End If End Sub '-----------------------------------
DAVID
Bonsoir et merci Isabelle mais si je comprend bien cela ne fonctionne pas car après avoir valider une date dans le Calendar, le TextBox change donc problème car le Calendar est déjà ouvert
J'ai fais :
Private encours As String
Private Sub TxtDate_Change() Application.EnableEvents = False encours = ActiveControl.Name Calendrier_Form.Show Application.EnableEvents = True End Sub
Private Sub TxtDate_Enter() Set MaForm = Me 'nom du formulaire du calendrier Calendrier_Form.Show End Sub
Bonsoir et merci Isabelle mais si je comprend bien cela ne fonctionne pas
car après avoir valider une date dans le Calendar, le TextBox change donc
problème car le Calendar est déjà ouvert
J'ai fais :
Private encours As String
Private Sub TxtDate_Change()
Application.EnableEvents = False
encours = ActiveControl.Name
Calendrier_Form.Show
Application.EnableEvents = True
End Sub
Private Sub TxtDate_Enter()
Set MaForm = Me
'nom du formulaire du calendrier
Calendrier_Form.Show
End Sub
Bonsoir et merci Isabelle mais si je comprend bien cela ne fonctionne pas car après avoir valider une date dans le Calendar, le TextBox change donc problème car le Calendar est déjà ouvert
J'ai fais :
Private encours As String
Private Sub TxtDate_Change() Application.EnableEvents = False encours = ActiveControl.Name Calendrier_Form.Show Application.EnableEvents = True End Sub
Private Sub TxtDate_Enter() Set MaForm = Me 'nom du formulaire du calendrier Calendrier_Form.Show End Sub
isabelle
as tu réussi à entrer autre chose ? isabelle
Le 2010-01-16 13:27, michdenis a écrit :
Bonjour Isabelle,
Est-ce que ton exemple démontre comment OBLIGER à saisir une date dans un textbox ? ;-)
"isabelle" a écrit dans le message de groupe de discussion :
Comment obliger l'utilisateur à utiliser le Calendar dans un TextBox
En fait, j'aimerais que la seul solution pour entrer une date dans un TextBox c'est l'ouverture du Calendar. Ceci évite une mauvaise entrée d'un format de date.
J'utilise actuellement cette fonction mais j'arrive à modifier quand même la valeur du TextBox.
Private Sub TxtDate_Enter() Set MaForm = Me Calendrier_Form.Show End Sub
Merci de votre aide
Cordialement
David
as tu réussi à entrer autre chose ?
isabelle
Le 2010-01-16 13:27, michdenis a écrit :
Bonjour Isabelle,
Est-ce que ton exemple démontre comment OBLIGER
à saisir une date dans un textbox ?
;-)
"isabelle"<i@v> a écrit dans le message de groupe de discussion :
eGRAjhtlKHA.5728@TK2MSFTNGP06.phx.gbl...
bonjour David,
voici un exemple,
http://cjoint.com/?bqtsWg1ZPk
isabelle
Le 2010-01-16 12:40, DAVID a écrit :
Bonsoir
Comment obliger l'utilisateur à utiliser le Calendar dans un TextBox
En fait, j'aimerais que la seul solution pour entrer une date dans un
TextBox c'est l'ouverture du Calendar. Ceci évite une mauvaise entrée d'un
format de date.
J'utilise actuellement cette fonction mais j'arrive à modifier quand même la
valeur du TextBox.
Private Sub TxtDate_Enter()
Set MaForm = Me
Calendrier_Form.Show
End Sub
Comment obliger l'utilisateur à utiliser le Calendar dans un TextBox
En fait, j'aimerais que la seul solution pour entrer une date dans un TextBox c'est l'ouverture du Calendar. Ceci évite une mauvaise entrée d'un format de date.
J'utilise actuellement cette fonction mais j'arrive à modifier quand même la valeur du TextBox.
Private Sub TxtDate_Enter() Set MaForm = Me Calendrier_Form.Show End Sub
Merci de votre aide
Cordialement
David
michdenis
| as tu réussi à entrer autre chose ?
Ce que je n'aime pas, si l'usager décide de fermer le contrôle contenant les dates sans retenir une date particulière en cliquant sur le x dans le coin supérieur droite, tout se ferme.
Ça risque d'en surprendre quelques-uns ! ;-)
| as tu réussi à entrer autre chose ?
Ce que je n'aime pas, si l'usager décide de
fermer le contrôle contenant les dates sans
retenir une date particulière en cliquant sur le
x dans le coin supérieur droite, tout se ferme.
Ce que je n'aime pas, si l'usager décide de fermer le contrôle contenant les dates sans retenir une date particulière en cliquant sur le x dans le coin supérieur droite, tout se ferme.
Ça risque d'en surprendre quelques-uns ! ;-)
isabelle
oui, mais à prpos de cette croix de fermeture on sais tout les deux qu'il est possible de l'enlever sans oublier d'ajouter un bouton qui servira à la validation et à la fermeture. isabelle
Le 2010-01-16 15:21, michdenis a écrit :
| as tu réussi à entrer autre chose ?
Ce que je n'aime pas, si l'usager décide de fermer le contrôle contenant les dates sans retenir une date particulière en cliquant sur le x dans le coin supérieur droite, tout se ferme.
Ça risque d'en surprendre quelques-uns ! ;-)
oui, mais à prpos de cette croix de fermeture on sais tout les deux
qu'il est possible de l'enlever
sans oublier d'ajouter un bouton qui servira à la validation et à la
fermeture.
isabelle
Le 2010-01-16 15:21, michdenis a écrit :
| as tu réussi à entrer autre chose ?
Ce que je n'aime pas, si l'usager décide de
fermer le contrôle contenant les dates sans
retenir une date particulière en cliquant sur le
x dans le coin supérieur droite, tout se ferme.
oui, mais à prpos de cette croix de fermeture on sais tout les deux qu'il est possible de l'enlever sans oublier d'ajouter un bouton qui servira à la validation et à la fermeture. isabelle
Le 2010-01-16 15:21, michdenis a écrit :
| as tu réussi à entrer autre chose ?
Ce que je n'aime pas, si l'usager décide de fermer le contrôle contenant les dates sans retenir une date particulière en cliquant sur le x dans le coin supérieur droite, tout se ferme.
Ça risque d'en surprendre quelques-uns ! ;-)
michdenis
On peut toujours empêcher la fermeture par l'événement Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) if mode = 0 then cancel = true
Mais, if faudrait aussi penser à intercepter les touches "tab" et "enter" qui permet à l'usager de passer à un autre contrôle sans avoir saisi une date.
"isabelle" a écrit dans le message de groupe de discussion : uAuZ# oui, mais à prpos de cette croix de fermeture on sais tout les deux qu'il est possible de l'enlever sans oublier d'ajouter un bouton qui servira à la validation et à la fermeture. isabelle
Le 2010-01-16 15:21, michdenis a écrit :
| as tu réussi à entrer autre chose ?
Ce que je n'aime pas, si l'usager décide de fermer le contrôle contenant les dates sans retenir une date particulière en cliquant sur le x dans le coin supérieur droite, tout se ferme.
Ça risque d'en surprendre quelques-uns ! ;-)
On peut toujours empêcher la fermeture par l'événement
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
if mode = 0 then cancel = true
Mais,
if faudrait aussi penser à intercepter les touches "tab" et "enter"
qui permet à l'usager de passer à un autre contrôle sans avoir
saisi une date.
"isabelle" <i@v> a écrit dans le message de groupe de discussion :
uAuZ#qulKHA.3476@TK2MSFTNGP06.phx.gbl...
oui, mais à prpos de cette croix de fermeture on sais tout les deux
qu'il est possible de l'enlever
sans oublier d'ajouter un bouton qui servira à la validation et à la
fermeture.
isabelle
Le 2010-01-16 15:21, michdenis a écrit :
| as tu réussi à entrer autre chose ?
Ce que je n'aime pas, si l'usager décide de
fermer le contrôle contenant les dates sans
retenir une date particulière en cliquant sur le
x dans le coin supérieur droite, tout se ferme.
On peut toujours empêcher la fermeture par l'événement Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) if mode = 0 then cancel = true
Mais, if faudrait aussi penser à intercepter les touches "tab" et "enter" qui permet à l'usager de passer à un autre contrôle sans avoir saisi une date.
"isabelle" a écrit dans le message de groupe de discussion : uAuZ# oui, mais à prpos de cette croix de fermeture on sais tout les deux qu'il est possible de l'enlever sans oublier d'ajouter un bouton qui servira à la validation et à la fermeture. isabelle
Le 2010-01-16 15:21, michdenis a écrit :
| as tu réussi à entrer autre chose ?
Ce que je n'aime pas, si l'usager décide de fermer le contrôle contenant les dates sans retenir une date particulière en cliquant sur le x dans le coin supérieur droite, tout se ferme.
Ça risque d'en surprendre quelques-uns ! ;-)
isabelle
ou bien le masquer,
Private encours As String Private Const SC_CLOSE = &HF060& Private Const MF_BYCOMMAND = &H0& Private Declare Function GetSystemMenu Lib "user32" _ (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Declare Function RemoveMenu Lib "user32" _ (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long Private Declare Function FindWindowA Lib "user32" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub UserForm_Initialize() Dim hSysMenu As Long Dim MeHwnd As Long MeHwnd = FindWindowA(vbNullString, Me.Caption) If MeHwnd > 0 Then hSysMenu = GetSystemMenu(MeHwnd, False) RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND Else MsgBox "Handle de " & Me.Caption & " Introuvable", vbCritical End If MonthView1.Visible = False End Sub
Private Sub CommandButton1_Click() Dim a As Integer For Each ctrl In Me.Controls If Left(ctrl.Name, 7) = "TextBox" Then If ctrl = "" Then a = 1 End If Next If a = 0 Then Me.Hide Else MsgBox "Vous devez renseigner tous les cases avec une date" End If End Sub
isabelle
Le 2010-01-16 16:12, michdenis a écrit :
On peut toujours empêcher la fermeture par l'événement Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) if mode = 0 then cancel = true
Mais, if faudrait aussi penser à intercepter les touches "tab" et "enter" qui permet à l'usager de passer à un autre contrôle sans avoir saisi une date.
"isabelle" a écrit dans le message de groupe de discussion : uAuZ# oui, mais à prpos de cette croix de fermeture on sais tout les deux qu'il est possible de l'enlever sans oublier d'ajouter un bouton qui servira à la validation et à la fermeture. isabelle
Le 2010-01-16 15:21, michdenis a écrit :
| as tu réussi à entrer autre chose ?
Ce que je n'aime pas, si l'usager décide de fermer le contrôle contenant les dates sans retenir une date particulière en cliquant sur le x dans le coin supérieur droite, tout se ferme.
Ça risque d'en surprendre quelques-uns ! ;-)
ou bien le masquer,
Private encours As String
Private Const SC_CLOSE = &HF060&
Private Const MF_BYCOMMAND = &H0&
Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As
Long) As Long
Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub UserForm_Initialize()
Dim hSysMenu As Long
Dim MeHwnd As Long
MeHwnd = FindWindowA(vbNullString, Me.Caption)
If MeHwnd > 0 Then
hSysMenu = GetSystemMenu(MeHwnd, False)
RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND
Else
MsgBox "Handle de " & Me.Caption & " Introuvable", vbCritical
End If
MonthView1.Visible = False
End Sub
Private Sub CommandButton1_Click()
Dim a As Integer
For Each ctrl In Me.Controls
If Left(ctrl.Name, 7) = "TextBox" Then
If ctrl = "" Then a = 1
End If
Next
If a = 0 Then
Me.Hide
Else
MsgBox "Vous devez renseigner tous les cases avec une date"
End If
End Sub
isabelle
Le 2010-01-16 16:12, michdenis a écrit :
On peut toujours empêcher la fermeture par l'événement
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
if mode = 0 then cancel = true
Mais,
if faudrait aussi penser à intercepter les touches "tab" et "enter"
qui permet à l'usager de passer à un autre contrôle sans avoir
saisi une date.
"isabelle"<i@v> a écrit dans le message de groupe de discussion :
uAuZ#qulKHA.3476@TK2MSFTNGP06.phx.gbl...
oui, mais à prpos de cette croix de fermeture on sais tout les deux
qu'il est possible de l'enlever
sans oublier d'ajouter un bouton qui servira à la validation et à la
fermeture.
isabelle
Le 2010-01-16 15:21, michdenis a écrit :
| as tu réussi à entrer autre chose ?
Ce que je n'aime pas, si l'usager décide de
fermer le contrôle contenant les dates sans
retenir une date particulière en cliquant sur le
x dans le coin supérieur droite, tout se ferme.
Private encours As String Private Const SC_CLOSE = &HF060& Private Const MF_BYCOMMAND = &H0& Private Declare Function GetSystemMenu Lib "user32" _ (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Declare Function RemoveMenu Lib "user32" _ (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long Private Declare Function FindWindowA Lib "user32" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub UserForm_Initialize() Dim hSysMenu As Long Dim MeHwnd As Long MeHwnd = FindWindowA(vbNullString, Me.Caption) If MeHwnd > 0 Then hSysMenu = GetSystemMenu(MeHwnd, False) RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND Else MsgBox "Handle de " & Me.Caption & " Introuvable", vbCritical End If MonthView1.Visible = False End Sub
Private Sub CommandButton1_Click() Dim a As Integer For Each ctrl In Me.Controls If Left(ctrl.Name, 7) = "TextBox" Then If ctrl = "" Then a = 1 End If Next If a = 0 Then Me.Hide Else MsgBox "Vous devez renseigner tous les cases avec une date" End If End Sub
isabelle
Le 2010-01-16 16:12, michdenis a écrit :
On peut toujours empêcher la fermeture par l'événement Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) if mode = 0 then cancel = true
Mais, if faudrait aussi penser à intercepter les touches "tab" et "enter" qui permet à l'usager de passer à un autre contrôle sans avoir saisi une date.
"isabelle" a écrit dans le message de groupe de discussion : uAuZ# oui, mais à prpos de cette croix de fermeture on sais tout les deux qu'il est possible de l'enlever sans oublier d'ajouter un bouton qui servira à la validation et à la fermeture. isabelle
Le 2010-01-16 15:21, michdenis a écrit :
| as tu réussi à entrer autre chose ?
Ce que je n'aime pas, si l'usager décide de fermer le contrôle contenant les dates sans retenir une date particulière en cliquant sur le x dans le coin supérieur droite, tout se ferme.
Ça risque d'en surprendre quelques-uns ! ;-)
michdenis
Avec tous ces efforts, c'est David qui va avoir l'embarras du choix ou le choix de l'embarras !
;-)
"isabelle" a écrit dans le message de groupe de discussion :
ou bien le masquer,
Private encours As String Private Const SC_CLOSE = &HF060& Private Const MF_BYCOMMAND = &H0& Private Declare Function GetSystemMenu Lib "user32" _ (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Declare Function RemoveMenu Lib "user32" _ (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long Private Declare Function FindWindowA Lib "user32" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub UserForm_Initialize() Dim hSysMenu As Long Dim MeHwnd As Long MeHwnd = FindWindowA(vbNullString, Me.Caption) If MeHwnd > 0 Then hSysMenu = GetSystemMenu(MeHwnd, False) RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND Else MsgBox "Handle de " & Me.Caption & " Introuvable", vbCritical End If MonthView1.Visible = False End Sub
Private Sub CommandButton1_Click() Dim a As Integer For Each ctrl In Me.Controls If Left(ctrl.Name, 7) = "TextBox" Then If ctrl = "" Then a = 1 End If Next If a = 0 Then Me.Hide Else MsgBox "Vous devez renseigner tous les cases avec une date" End If End Sub
isabelle
Le 2010-01-16 16:12, michdenis a écrit :
On peut toujours empêcher la fermeture par l'événement Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) if mode = 0 then cancel = true
Mais, if faudrait aussi penser à intercepter les touches "tab" et "enter" qui permet à l'usager de passer à un autre contrôle sans avoir saisi une date.
"isabelle" a écrit dans le message de groupe de discussion : uAuZ# oui, mais à prpos de cette croix de fermeture on sais tout les deux qu'il est possible de l'enlever sans oublier d'ajouter un bouton qui servira à la validation et à la fermeture. isabelle
Le 2010-01-16 15:21, michdenis a écrit :
| as tu réussi à entrer autre chose ?
Ce que je n'aime pas, si l'usager décide de fermer le contrôle contenant les dates sans retenir une date particulière en cliquant sur le x dans le coin supérieur droite, tout se ferme.
Ça risque d'en surprendre quelques-uns ! ;-)
Avec tous ces efforts, c'est David qui va avoir l'embarras du choix
ou le choix de l'embarras !
;-)
"isabelle" <i@v> a écrit dans le message de groupe de discussion :
OA62MxvlKHA.2592@TK2MSFTNGP04.phx.gbl...
ou bien le masquer,
Private encours As String
Private Const SC_CLOSE = &HF060&
Private Const MF_BYCOMMAND = &H0&
Private Declare Function GetSystemMenu Lib "user32" _
(ByVal hwnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" _
(ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As
Long) As Long
Private Declare Function FindWindowA Lib "user32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub UserForm_Initialize()
Dim hSysMenu As Long
Dim MeHwnd As Long
MeHwnd = FindWindowA(vbNullString, Me.Caption)
If MeHwnd > 0 Then
hSysMenu = GetSystemMenu(MeHwnd, False)
RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND
Else
MsgBox "Handle de " & Me.Caption & " Introuvable", vbCritical
End If
MonthView1.Visible = False
End Sub
Private Sub CommandButton1_Click()
Dim a As Integer
For Each ctrl In Me.Controls
If Left(ctrl.Name, 7) = "TextBox" Then
If ctrl = "" Then a = 1
End If
Next
If a = 0 Then
Me.Hide
Else
MsgBox "Vous devez renseigner tous les cases avec une date"
End If
End Sub
isabelle
Le 2010-01-16 16:12, michdenis a écrit :
On peut toujours empêcher la fermeture par l'événement
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
if mode = 0 then cancel = true
Mais,
if faudrait aussi penser à intercepter les touches "tab" et "enter"
qui permet à l'usager de passer à un autre contrôle sans avoir
saisi une date.
"isabelle"<i@v> a écrit dans le message de groupe de discussion :
uAuZ#qulKHA.3476@TK2MSFTNGP06.phx.gbl...
oui, mais à prpos de cette croix de fermeture on sais tout les deux
qu'il est possible de l'enlever
sans oublier d'ajouter un bouton qui servira à la validation et à la
fermeture.
isabelle
Le 2010-01-16 15:21, michdenis a écrit :
| as tu réussi à entrer autre chose ?
Ce que je n'aime pas, si l'usager décide de
fermer le contrôle contenant les dates sans
retenir une date particulière en cliquant sur le
x dans le coin supérieur droite, tout se ferme.
Avec tous ces efforts, c'est David qui va avoir l'embarras du choix ou le choix de l'embarras !
;-)
"isabelle" a écrit dans le message de groupe de discussion :
ou bien le masquer,
Private encours As String Private Const SC_CLOSE = &HF060& Private Const MF_BYCOMMAND = &H0& Private Declare Function GetSystemMenu Lib "user32" _ (ByVal hwnd As Long, ByVal bRevert As Long) As Long Private Declare Function RemoveMenu Lib "user32" _ (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long Private Declare Function FindWindowA Lib "user32" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub UserForm_Initialize() Dim hSysMenu As Long Dim MeHwnd As Long MeHwnd = FindWindowA(vbNullString, Me.Caption) If MeHwnd > 0 Then hSysMenu = GetSystemMenu(MeHwnd, False) RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND Else MsgBox "Handle de " & Me.Caption & " Introuvable", vbCritical End If MonthView1.Visible = False End Sub
Private Sub CommandButton1_Click() Dim a As Integer For Each ctrl In Me.Controls If Left(ctrl.Name, 7) = "TextBox" Then If ctrl = "" Then a = 1 End If Next If a = 0 Then Me.Hide Else MsgBox "Vous devez renseigner tous les cases avec une date" End If End Sub
isabelle
Le 2010-01-16 16:12, michdenis a écrit :
On peut toujours empêcher la fermeture par l'événement Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) if mode = 0 then cancel = true
Mais, if faudrait aussi penser à intercepter les touches "tab" et "enter" qui permet à l'usager de passer à un autre contrôle sans avoir saisi une date.
"isabelle" a écrit dans le message de groupe de discussion : uAuZ# oui, mais à prpos de cette croix de fermeture on sais tout les deux qu'il est possible de l'enlever sans oublier d'ajouter un bouton qui servira à la validation et à la fermeture. isabelle
Le 2010-01-16 15:21, michdenis a écrit :
| as tu réussi à entrer autre chose ?
Ce que je n'aime pas, si l'usager décide de fermer le contrôle contenant les dates sans retenir une date particulière en cliquant sur le x dans le coin supérieur droite, tout se ferme.