Pour choisir l'ordre de tabulation il te suffit d'aller dans les propriétés de l'objet et d'ajuster les 2 propriétés suivantes:
TabStop -> mettre sur True
TabIndex -> Indiquer le numéro d'ordre.
Autre solution, passer par le menu Affichage>Ordre de tabulation puis dans la fenêtre qui s'affiche, ordonner les tabulations.
Mais le format date on peut écrit encore se que veut. il n'y aurait pas un moyen pour que le format date soit directement intégrer dans le formulaire???
Il existe 2 possibilités à ma connaissance (aucune n'est vraiment simple):
Soit on gère la date dans la Textbox, soit on utilise un objet type ActiveX qui gère les calendrier comme DatePicker (solution plus complexe à mettre en oeuvre). Pour ce dernier, tu peux jeter un oeil à ce lien Activation du contrôle de calendrier et DatePicker pour MS Excel 2010 qui te donnera quelques indications précieuses.
Concernant la première solution, il faut que tu gères le format via le code. Je t'invite à charger la solution de Robert que tu trouveras là https://www.excel-downloads.com/threads/controle-de-date-en-vba.49196/.
Il existe 2 possibilités à ma connaissance (aucune n'est vraiment simple):
Soit on gère la date dans la Textbox, soit on utilise un objet type ActiveX qui gère les calendrier comme DatePicker (solution plus complexe à mettre en oeuvre). Pour ce dernier, tu peux jeter un oeil à ce lien Activation du contrôle de calendrier et DatePicker pour MS Excel 2010 qui te donnera quelques indications précieuses.
Concernant la première solution, il faut que tu gères le format via le code. Je t'invite à charger la solution de Robert que tu trouveras là https://www.excel-downloads.com/threads/controle-de-date-en-vba.49196/.
Ce code dans l'USF contrôlera le format de la TextBox TDate :
Code:
Private Sub Tdate_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TDate <> "" And Not (TDate Like "##/##/####" And IsDate(TDate)) Then
Cancel = True
MsgBox "Entrez une date au format jj/mm/aaaa"
TDate = ""
End If
End Sub
Bien sûr si le format de la date n'a pas d'importance :
Code:
Private Sub Tdate_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TDate <> "" And Not IsDate(TDate) Then
Cancel = True
MsgBox "Date non valide !", 48
TDate = ""
End If
End Sub
Cela dit en VBA les dates vont de l'an 100 à l'an 9999...
Si l'on veut des années postérieures à 2011 :
Code:
Private Sub Tdate_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim an As Integer
If IsDate(TDate) Then an = Year(CDate(TDate))
If TDate <> "" And (Not TDate Like "##/##/####" Or an < 2012) Then
Cancel = True
MsgBox "Entrez une date au format jj/mm/aaaa à partir de l'année 2012"
TDate = ""
End If
End Sub
Code:
Private Sub Tdate_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim an As Integer
If IsDate(TDate) Then an = Year(CDate(TDate))
If TDate <> "" And an < 2012 Then
Cancel = True
MsgBox "Entrez une date valide à partir de l'année 2012"
TDate = ""
End If
End Sub