Imposer un nombre

Résolu
Belag55 Messages postés 20 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 13 février 2009 - 18 déc. 2008 à 17:01
piloulac Messages postés 21 Date d'inscription dimanche 10 juin 2007 Statut Membre Dernière intervention 28 décembre 2008 - 20 déc. 2008 à 00:54
Bonjour,

Dans un formulaire (sous VBA - Excel), je souhaite imposer à l'utilisateur d'entrer dans un textbox un N° à 8 chiffres dont les 2 permiers sont déterminés par l'année en cours et le 3 ème imposé (exemple : 095xxxxx pour l'année 2009)

si cela n'est pas possible,  il faudrait que je puisse au moins imposer 8 chiffres.
Pour ce qui est de la longueur de chaine de caractère, pas de problème, j'ai écris le code suivant :

    If Me.TXT_bob.TextLength <> 8 Then
          errbox = MsgBox("Veuillez entrer un N° valide", , "Erreur de numérotation !")
          Exit Sub
    End If

Pour imposer des chiffres je ne sais pas faire.
J'ai essayé de déclarer une variable de type "long" = Me.TXT_bob.Value
puis utiliser "IsNull" pour vérifier que la validité de la valeur entrée, mais cela ne marche pas. ça me donne un message d'erreur d'incompatibilité. Evidemment, vu que ma variable est déclarée comme "long" et que je la définis comme étant = à la valeur entrée dans le textbox avant de tester la validité par "IsNull", ça ne peut pas marcher. Et là je bloque.

Merci d'avance à ceux qui pourront donner un coup de pouce au NooB ici présent

7 réponses

cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
18 déc. 2008 à 17:10
Salut,

Il faut tester si le contenu de ta TextBox est un nombre, voici un exemple :







If
 IsNumeric(TextBox1.Text) =   False Then
     errbox  = MsgBox( "Veuillez entrer un N° valide" , , "Erreur de numérotation !")
     Exit Sub
End If

++

Fauve



<hr size ="2" width="100%" />Pensez : Réponse Acceptée 
3
thome76 Messages postés 47 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 5 juin 2009
18 déc. 2008 à 17:24
je pense que tu devrais aussi mettre le format à mettre genre du met la valeur par défaut
095xxxxx  dans ta textbox et s'il se trompe tu dire dans le message d'erreur remplacer les x par des nombre un truc comme ça ... Re garde si tu peux pas personnalisé le masque de ta textbox
0
Belag55 Messages postés 20 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 13 février 2009
18 déc. 2008 à 20:51
Merci à vous deux.

Je testerai ça dès demain au boulot.
3 jours de formation c'est un peu léger pour faire ce qu'on me demande au taf et je manque cruellement de vocabulaire (code) VBA et les recherches sont longues et fastidieuses quand on manque de temps. Il me reste 4 jours pour cloturer mon programme
0
Belag55 Messages postés 20 Date d'inscription mercredi 17 décembre 2008 Statut Membre Dernière intervention 13 février 2009
18 déc. 2008 à 20:59
Thome76,  merci pour ta suggestion, mais je ne peux malheureusement pas définir les 3 premiers chiffres du nombre à entrer comme tu le proposes. Ce qui est valable en 2009 ne le sera plus les années suivantes et je tiens à ce que le programme soit autonome sans avoir à le modifier. Il n'est pas sur que je sois encore au poste que j'occupe dans les années à venir et il faudra que ça tourne sans moi  

A moins qu'il existe un moyen de n'écrire que les 2 derniers chiffres du résultat de "year(date)" par un code, mais là encore, je ne connais pas.
0

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

Posez votre question
thome76 Messages postés 47 Date d'inscription mardi 16 décembre 2008 Statut Membre Dernière intervention 5 juin 2009
19 déc. 2008 à 09:32
Non  en programmant  directement le default value en utilisant la date système c'est possible non?
ça je n'ai pas regarder mais ça doit être trop possible de faire ça en programmation
0
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
19 déc. 2008 à 11:13
Salut,

Ce code te permet de retourner les deux derniers chiffres de l'année en cours :

Mid(FormatDateTime(Now, vbShortDate), Len(FormatDateTime(Now, vbShortDate)) - 1)

++

Fauve


<hr size="2" width="100%" />Pensez : Réponse Acceptée 
0
piloulac Messages postés 21 Date d'inscription dimanche 10 juin 2007 Statut Membre Dernière intervention 28 décembre 2008
20 déc. 2008 à 00:54
ou tout simple :

AnAbreg = Year(Date)   'renvoie 2008
AnAbreg = Right(AnAbreg, 2)  'renvoie "08"

Tu peux créer un
Label1.Caption=AnAbreg
Tu colles cette étiquette à Gauche ton TextBox
Tu lui choisis les mêmes apparences que ton TextBox

Dans la sub Exit de ton TextBox, tu testes le format.
Maval=TextBox1.Text
If  IsNumeric MaVal And Len(Maval)=7 then
MaVal=AnAbreg & MaVal   'Tu récupères ainsi ton format à 9 chiffres
Else
MsgBox "Format incompatible .........."
Exit Sub
End If

'''Exploitation de MaVal
0
Rejoignez-nous