"Isnull" qui marche pas très bien avec une Zone de texte

loic911 Messages postés 24 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 10 mai 2005 - 5 mai 2005 à 17:31
dam84 Messages postés 40 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 17 mai 2005 - 11 mai 2005 à 12:47
Salut,

J'ai un problème assez bizarre quand j'essais de controler si l'utilisateur a entrer des valeurs correctes dans des zones de texte.



Je lui demande d'entrer un numéro de carte Sis, un nom, un prénom, une adresse, un CP, une ville, un statut Vipo, une date de naissance.

Seul la ville et la date peuvent être Null



Donc je tape toute mes alternative et pour voir si ca marche je lance le formulaire. Le controle des erreurs s'effectuera quand l'utilisateur cliquera sur un bouton.

Le programme affichera une fenetre dans laquelle il y aura toute les
erreurs relatives au remplissage des champs (variable "erreur")



Je recontre un soucis assez bizarre. Le controle de la valeur "null" marche pour tous les champs sauf pour "Nom" et "Prénom"...

Donc il ne détecte rien si l'utilisateur n'entre pas de nom et clique sur le bouton.

Mais si l'utilisateur entre une valeur dans le champ "nom", clique
sur le bouton, efface la valeur et reclique sur le bouton: il va
détecter l'absence de valeur...



Voilà la fonction (encore loin d'être finie et optimisée):





Private Function controlervaleur()



Dim erreur As String



'Carte Sis

If IsNull(Me.Txt_Sis) Then

erreur = erreur & vbCrLf & "Vous n'avez pas entré de numéro de carte Sis"

ElseIf Not IsNumeric(Me.Txt_Sis) Then

erreur = erreur & vbCrLf
& "Le numéro de carte Sis doit être composé uniquement de chiffre"

Me.Txt_Sis = ""

ElseIf Len(Me.Txt_Sis) <> 10 Then

erreur = erreur & vbCrLf
& "Le numéro de carte Sis doit être composé de 10 chiffres"

End If



'Nom

If IsNull(Me.Txt_Nom) Then

erreur = erreur & vbCrLf & "Vous n'avez pas entré de nom"

ElseIf Len(Me.Txt_Nom) > 25 Then

erreur = erreur & vbCrLf & "Le nom est trop long"

End If



'Prénom

If IsNull(Me.Txt_Prenom) Then

erreur = erreur & vbCrLf & "Vous n'avez pas entré de prénom"

ElseIf Len(Me.Txt_Prenom) > 25 Then

erreur = erreur & vbCrLf & "Le prénom est trop long"

End If



'Date

If Not IsNull(Me.Txt_Naissance) Then

If Not IsDate(Me.Txt_Naissance) Then

erreur = erreur & vbCrLf & "La date est incorrecte"

End If

End If



'Adresse

If IsNull(Me.Txt_Adresse) Then

erreur = erreur & vbCrLf & "Vous n'avez pas entré d'adresse"

ElseIf Len(Me.Txt_Prenom) > 50 Then

erreur = erreur & vbCrLf & "L'adresse est trop longue"

End If



'Code Postal

If IsNull(Me.Txt_Adresse) Then

erreur = erreur & vbCrLf & "Vous n'avez pas entré de code postal"

ElseIf Not IsNumeric(Me.Txt_CodePostal) Then

erreur = erreur + vbCrLf & "Le code postal doit être numérique"

ElseIf Len(Me.Txt_CodePostal) <> 4 Then

erreur = erreur & vbCrLf & "Le code postal doit comporter 4 chiffres"

End If



'Vipo

If (Me.CaseCocher_Vipo_Non False And Me.CaseCocher_Vipo_Oui False) Then

erreur = erreur & vbCrLf & "Le statu du patient (Vipo) doit être précisé"

End If



'Ref mutuelle

If Not IsNull(Me.Txt_RefMutuelle) Then

If Not IsNumeric(Me.Txt_RefMutuelle) Then


erreur = erreur & vbCrLf & "La référence de la mutuelle est un
nombre"

End If

End If



controlervaleur = erreur



End Function

13 réponses

cs_MasterHack Messages postés 586 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 13 février 2008 2
5 mai 2005 à 17:58
justement isnull te renvoie faux mem si le champ est plein,utilise plutot
if Me.Txt_Nom="" then

.
.
.


<HR>

Life is short...Learn more
Copy Rights <> Rights to Copy
0
loic911 Messages postés 24 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 10 mai 2005
5 mai 2005 à 18:03
j'avais pas pensé a cette astuces...

C'est étrange que ca marche "a moitié" le isnull.



merci
0
BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
5 mai 2005 à 18:06
'lut



Un champs ="" n'est pas null.


le mieux pour tester, c'est de controler que len(trim(champs))<>0


BasicInstinct
0
cs_MasterHack Messages postés 586 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 13 février 2008 2
5 mai 2005 à 18:09
BasicInstinct>trim ça supprime les espaces, alors "" c different de " "
voila. ""=vbnullstring


<HR>

Life is short...Learn more
Copy Rights <> Rights to Copy
0

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

Posez votre question
BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
5 mai 2005 à 18:27
vi c eviter que le nom soit composer uniquement d'espace

cependant, ""<>vbnullstring :



provient de MSDN

vbNullString,
Chaîne ayant la valeur 0,
Différent d'une chaîne de longueur nulle ("") ;








BasicInstinct
0
cs_MasterHack Messages postés 586 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 13 février 2008 2
5 mai 2005 à 18:32
BasicInstinct > tests ce petit code.
click en premier sur command1
Private Sub Command1_Click()
Text1 = ""
End Sub


Private Sub Command2_Click()If Text1 vbNullString Then Caption 1
End Sub

Ciao



<HR>



Life is short...Learn more
Copy Rights <> Rights to Copy
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 mai 2005 à 10:11
privilégiez l'usage de VbNullString en lieu et place de ""

autre chose, le test d'une chaine vide la plus rapide en temps d'execution est :

if LenB ( Chaine ) <> 0 Then

VB fonctionne en Unicode. Les chaines sont donc en DBSC. traduction : un caractère sur deux octets... quand vous demandez len ( a ) VB doit donc diviser la longeur par 2 pour donner le nombre de caractères, et non le nombre d'octets.... LenB donne le nombre d'octets. Vu que l'on recherche 0 , la division nous importe peu...

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 mai 2005 à 10:12
faute de frappe, je voulais saisir DBCS (Double Byte Character Set)

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic
0
loic911 Messages postés 24 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 10 mai 2005
6 mai 2005 à 13:02
Il me reste quand même un problème

Si je lance le formulaire et que je veux ajouter un patient sans lui
mettre de nom. Je clique sur "ajouter" (bouton qui délcenche la
fonction de vérification)

Il m'affiche une erreur en disant qu'il n'y a pas de nom (normal).

Si je lui met un nom et que je clique sur ajouter, il veut bien (normal)...

mais si je réefface le nom, il ne détectera plus l'absence de nom (pas normal).



J'ai essayer avec vbnullstring, len(...)=0, isnull(...) et = ""



Comment controler efficacement si une case contient quelque chose...si
je met son contenu dans une variable pour controler, j'obient une
erreur si il n'y a rien dedans (mauvaise utilisation du Null)
0
loic911 Messages postés 24 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 10 mai 2005
6 mai 2005 à 13:29
Problème résolu, il fallait faire usage de:

Len(Me.Txt_nom & "")<>0

bizarre...



Merci de m'avoir aider
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 mai 2005 à 16:25
ton code doit faire de sacrés détours pour que ton action résolve quelque chose...

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic
0
loic911 Messages postés 24 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 10 mai 2005
6 mai 2005 à 18:24
euh je comprend pas très bien ce que tu veux dire



Mais c'est l'aide de Micosoft qui m'a dit de faire ca...(je sais c'est p-e pas une référence )
0
dam84 Messages postés 40 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 17 mai 2005
11 mai 2005 à 12:47
Essaye avec la fonction Isempty
0
Rejoignez-nous