Champ d année dans une aplication VB

papillonnoir Messages postés 10 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 8 juillet 2007 - 29 juin 2007 à 23:07
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 30 juin 2007 à 18:18
svp comment faire pour que le champ de texte qui contient une année n accepte que les nombres et le caractere "/" et non d autre je fait une application pour la gestion d une ecole et j utilise dataenvirenement .

12 réponses

BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 17
29 juin 2007 à 23:11
Windows a un control fait exprès pour la saisie des dates.

ciao...
BruNews, MVP VC++
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
29 juin 2007 à 23:16
Salut,

C'est pas optimisé, mais c'est fonctionnel :

Private Sub Text1_KeyPress(KeyAscii As Integer)


If InStr("/0123456789", Chr$(KeyAscii)) 0 Then KeyAscii 0


End Sub


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
0
papillonnoir Messages postés 10 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 8 juillet 2007
29 juin 2007 à 23:23
ça marche pas parce que moi je veux introduire que l année il me dit que erreur de syntaxe voici mon code
merci de bien vouloir m aider.

Private Sub TxtAnnee_Change()
If TxtAnnee <> "" Then
    If date(TxtAnnee.Text) = False Then
        MsgBox "Il faut saisir une année !", vbInformation, "C'est une année"
        TxtAnnee.Text = ""
    End If
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 17
29 juin 2007 à 23:27
IsNumeric
ou concatene "01/01/" et ton champ et teste avec IsDate

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
papillonnoir Messages postés 10 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 8 juillet 2007
29 juin 2007 à 23:35
comment j ai pas bien comprie je suis débutante j ai utilisé isnumeric mais ne prend pas en compte le caractere/ est ce qu il y a pas de fonction ou astuce pour faire 2007/2006 c est ce que je veut faire
merci d avance
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 17
29 juin 2007 à 23:45
ah ben là faut coder un peu plus...
Teste si Len = 9
ensuite IsNumeric sur Left(4) et idem sur Right(4) et voir si crac du milieu est ""

ciao...
BruNews, MVP VC++
0
papillonnoir Messages postés 10 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 8 juillet 2007
30 juin 2007 à 00:09
 ça marche tjrs pas il me dit erreur de syntaxe voici mon code

Private Sub TxtAnnee_Change()
If Len(TxtAnnee.Text) = 9 Then
  If TxtAnnee <> "" Then
    If IsNumeric(TxtAnnee.Text) = False  and (len(txtAnnee.Text)/2)="/" and
        MsgBox "Il faut saisir une année !", vbInformation, "C'est une année"
        TxtAnnee.Text = ""
    End If
 End If
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 17
30 juin 2007 à 00:32
Dim str As String

str = TxtAnnee.Text
If Len(str) <> 9 Then Goto noGOOD
If Not IsNumeric(Left(str, 4)) Then Goto noGOOD
' A FINIR VALIDATION, JE VAIS DODO
' le Right
' le caractere central ""
exit sub
noGOOD:
MsgBox "Il faut saisir une année !", vbInformation, "C'est une année"
TxtAnnee.Text = ""

ciao...
BruNews, MVP VC++
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
30 juin 2007 à 01:09
Bonsoir,
Plusieurs solutions dont :
>Ne saisir que la première partie
 ex: 2006 .
ça sera plus facile de tester sur numérique
Ensuite complèter le champ avec la deuxième partie : 2006/2007
Comme ça tu controlera la plage d' une année.
>Proposer deux TextBox séparés par un label (/) qui se et toujours controler
  la plage d' une année en forçant l' un par rapport à l' autre.
>Proposer un combo prérempli
>Proposer deux DtPicker Format "yyyy" et toujours en forçant l' un par rapport à l' autre.
0
papillonnoir Messages postés 10 Date d'inscription vendredi 8 juin 2007 Statut Membre Dernière intervention 8 juillet 2007
30 juin 2007 à 09:36
j ai pensé a cette solution mais le champs année dans ma table n est pas composé de deux champs donc comment faire si je veux enregistrer l année dans ma table.
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
30 juin 2007 à 12:25
tu n' es pas forcé de changer quoi que ce soit à ta structure.
Tu gardes toujours un seul champ.Il faut juste 'jongler" un peu
avec .
Que tu saisisses une année sur un seul TextBox ou les deux sur deux TextBox,
 tu affecteras à ton champ le résultat de la concaténation.
Si tes controls sont directement liés à la table, tu ne le fais pas sur ce ou ces textbox
mais tu utilises un troisième que tu mets en arrière plan (un label par exemple)
et c' est ce dernier qui va être lié.
S' il ne sont pas liés tu metteras à jour ton champ (avec le résultat) au moment de valider.
A l' inverse, si tu ouvres un enregistrement pour la modification,tu récupères la valeur
de ton champ et tu affectes une partie au premier textbox et la deuxième à l' autre.
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
30 juin 2007 à 18:18
Plus encore..,

Si tu changes le type de ton champ en numérique,
ça t' éviterait tout celà...
En effet , l' année scolaire étant à cheval entre deux années,
il suffit de renseigner le début , pour en connaitre la fin.
Et tu respecteras pour ainsi dire la règle d' or:
-Eviter, tant qu' on peut, d' enregistrer tout ce qui peut être généré.
As_Debut=2006 suffit amplement pour afficher 2006/2007.
0
Rejoignez-nous