If then

cs_loulou14 Messages postés 10 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 17 janvier 2007 - 20 déc. 2006 à 23:05
XGuarden Messages postés 259 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 17 août 2012 - 23 déc. 2006 à 00:09
j'ai fait une comparaison a l'aide if then dans le style


if a = b then


instuct


end if


le probleme c'ast que a et b ont une valeur "null" et mon instruc ne ce fait pas ca passe directement a la fin "end if"


je ne comprends pas pourquoi ça se passe comme vu que ma condition est correct
si quelqu'un pouvez m'expliquer pourquoi et bien sur une solution serait le bien venu
merci d'avance

27 réponses

Utilisateur anonyme
20 déc. 2006 à 23:09
Salut,

Qu'entend tu pas null ? Nothing ?
a et b sont des entiers ? des string ? des varient ? des objets ?
suivant les cas, il faut employer "is" à la place de "="






__________
Kenji
0
cs_loulou14 Messages postés 10 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 17 janvier 2007
20 déc. 2006 à 23:18
a et b sont en réalité des zone texte qui recoivent des valeur de listes
lorsque la liste n'envoie rien dans la zone de texte cette dernière devient "null" (null correspond a sa valeur que j'ai vu en mode deboguage)
dans mon cas j'ai ecrit:
if me.text = "" then
instruct
end if
a ce moment la j'ai les deux valeurs qui sont "null" (en mode deboguage) mais l'instruction ne se fait pas
désolé j'ai voulu etre simple avec mes "a" et mes "b" mais c'est le contraire qui se produit
0
Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 4
20 déc. 2006 à 23:46
Tu peux essayer

If Me.text = string.empty then

mais ça m'étonnerais que ça change qqc...
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
20 déc. 2006 à 23:55
EN vb6, j'aurais plutot dit
If Me.Text = VBNullString Then

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0

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

Posez votre question
cs_loulou14 Messages postés 10 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 17 janvier 2007
21 déc. 2006 à 00:10
non aucune des deux solution ne fonctionne la premiere il ne li meme pas la ligne if....
et la seconde en deboguage  VBNullString prend la valeur ""
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
21 déc. 2006 à 00:18
Es-tu certain que le problème vient du If Me.Text = "" then ... ?
D'une part, il faut comprendre que "" est différent de " ". Donc, s'il y a un espace, ce n'est pas "rien".

Tu parles de a et b et dans ton exemple, tu n'écris que Me.Text
C'était bien pour montrer la comparaison de Me.Text (a) et du ""(b) ?

Finalement, et non le moindre
Est-ce bien de Me.Text dont on parle ou de Me.Text1.Text ?
(Text1 ou autre...)

MPi
0
cs_loulou14 Messages postés 10 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 17 janvier 2007
21 déc. 2006 à 00:29
effectivement au debut je parlais de a et b  il faut oublié je voulais etre simple et enfin de compte j'ai planté tout le monde.
pour le if  j'ai essayer "" et " " et j'ai meme creer une seconde zone de texte que j'ai mis volontairement  null pour pouvoir ecrire:
if me.texte1 = me.texte2 then
et
if me.texte1.text =me.texte2.text then
a chaque fois ma ligne d'instruction est ignoré
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
21 déc. 2006 à 00:40
Si tu mettais toute ta procédure (si elle n'est pas trop longue) peut-être que ça nous aiderait.

Ou tu peux faire un test
if me.texte1 = me.texte2 then
Stop

Si le code arrête sur Stop, c'est que la condition est reconnue sinon, tu as raison et la condition est vraiment ignorée. Du coup, on ne cherchera pas ailleurs...

Note que je ne connais ton niveau de programmation. Peut-être que tu vas me trouver con de te proposer une chose de ce genre... ¦¬)

MPi
0
cs_loulou14 Messages postés 10 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 17 janvier 2007
21 déc. 2006 à 01:24
pour mon niveau je dirais debutant avec un petit +
en fait pour ce qui est de mon probleme


je clic sur une liste qui m'ouvre un formulaire qui contient des 3 zones de texte qui ont leur source de controle qui correspondent au trois colonnes de la liste  du debut

lorsque les trois colonnes de la liste sont renseigner les 3 zones de textes prennent la valeur voulu comme je le veux car la premieres zone de texte prends la valeur de la colonne liees de la liste.
Mais les deux autres peuvent etre vide
D'ou j'ai mis ma ligne if then au chargement du formulaire pour que le formulaire se referme immediatement si les deux autres zones de texte seraient vide
Voici ma ligne de commande que j'ai placé à l'ouverture:

if  me.texte2.text = "" then
   if me.texte3.text = "" then
   docmd.close
   end if
end if

evidement pour la premiere ligne j'ai essayé tout ce que j'ai cité au dessus
en esperant que vous me comprendrais dans mes explications
0
Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 4
21 déc. 2006 à 01:45
Alors, solution toutes bête, totalement nulle même, mais que j'essaye des fois :

tu places ça avant ta condition :

msgbox "-" & me.texte2.text & "-" & me.texte3.text & "-"

Ca te servira à savoir quelles valeurs ont tes textbox. Oui je sais, il faut faire avec le débuggeur, mais moi j'ais pris l'habitude de faire ça alors hein... Venez pas me ruiner mes habitudes ! ;-)
0
XGuarden Messages postés 259 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 17 août 2012
21 déc. 2006 à 01:58
if  me.texte2.text = "" then
   if me.texte3.text = "" then
   docmd.close
   end if
end if

devient:

if  me.texte2.text = nothing then
   if me.texte3.text = nothing then
   docmd.close
   end if
end if

qui devient....
if  me.texte2.text nothing andalso if me.texte3.text nothing then
   docmd.close
end if

qui devient:if  len(me.texte2.text) 0 andalso len(me.texte3.text) 0 then

   docmd.close

end if

qui devient:

if  len(me.texte2.text & me.texte3.text) = 0  then

   docmd.close

end if

Qui peu devenir:

if  len(texte2.text & texte3.text) = 0  then


   docmd.close


end if

qui peu devenir si tu désire le contraire:

if  not len(texte2.text & texte3.text) = 0  then



   docmd.close



end if

qui peu devenir si ta ocndition ne contien qu'uen breve instruction:

if  len(texte2.text & texte3.text) = 0  then msgbox("coucou")
0
cs_loulou14 Messages postés 10 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 17 janvier 2007
21 déc. 2006 à 02:17
pour 244968 Scalpweb
le msg box ne fonctionne pas car il me dit :
"impossible de faire référence à une propriété ou de la définir pour un contrôle si ce dernier n'est pas activé."
j'ai donc creer un bouton sur la feuille pour executer le msgbox au cas ou mes zone de texte n'aurais pas été chargé et le probleme est le même.

=12357 XGuarden
j'ai mis la premiere ligne c'est a dire
if  me.texte2.text = nothing then
   if me.texte3.text = nothing then
   docmd.close
   end if
end if
lorsque je l'execute il me dit:
"erreur de compilation:
utilisation incorrect de l'objet."
en surlignant le premier nothing
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
21 déc. 2006 à 03:15
En voyant le DoCmd, je me dis que tu dois travailler sur Access, non ?
Et tes textbox sont liés à ta table, oui/non ?
Est-ce que tes champs ont une valeur par défaut, du genre 0 ou autre ?

Pour le Nothing, on ne dit pas
If text1=Nothing
mais
If Is Nothing(Text1.Text)
et encore là...

Pour le AndAlso, là je suis confondu ...¦¬)
Je n'ai jamais vu ça (?)

Et si le MsgBox te lance ce genre de message, il s'agit peut-être de voir quand et comment il est appelé... c'est tout de même étonnant...

MPi
0
XGuarden Messages postés 259 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 17 août 2012
21 déc. 2006 à 05:55
Ondirait que son code est a l'Extérieur d'une zone de code valide, mais is s'était lecas rien fonctionnerai. andalso est différent de and. and vérifie  les deux condition tandit que andalso sarete des que la premiere est fause.sa pe uchanger gros de chose si la comparaison est sur le retour de fonction. If text1=Nothing est tres correcte.... mais comme j'Ai continuer mon exemple, le len est la méthode la plus rapide qui reste encore compréensible..... Mais pour répondre.. cespas normal que msgbox ne fonctionne pas, il devrai fonctionner partout sauf si tu a fait un truc du genre..... me.msgbox..... sa sa ne se peu pas...
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 déc. 2006 à 07:55
Ca commence a devenir très embrouillé....

Moi, j'aimerais demander à loulou de bien vouloir en revenir à son tout premier post, celui où il disait :
"j'ai fait une comparaison a l'aide if then dans le style
if a = b then
instuct
end if
le probleme c'ast que a et b ont une valeur "null" et mon instruc ne ce fait pas ca passe directement a la fin "end if"

et de bien vouloir nous dire tout simplement dans quel événement de quel objet situé sur quoi il mettait ce code.
J'ai plusieurs doutes, en effet, que je vous cite dans l'ordre :
1) un événement qui n'existe pas (private sub quelquechose... écrit erronément à la main)
2) un événement au cours duquel tout n'est pas encore chargé
etc...

avant même d'aller plus loin dans les recherches de la cause.
0
Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 4
21 déc. 2006 à 11:41
Non, cet évènement existe, puisque la ligne msgbox est lue...

Le truc, c'est que l'on dirait que les textbox ne sont pas correctement initialisés...

Un peu comme si on utilisait une classe avant d'avoir mit le "New"...

C'est bizarre...

Peux-tu mettre ta fonction en entier, avec les en-têtes surtout ?
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 déc. 2006 à 11:53
Bonjour scalpwed,

1) Je n'ai vu l'utilisation d'un msgbox que plus loin .... et de façon inexacte
2) quid s'il compare des textes de textboxes non encore chargées (s'il a mis son code dans l'événement load de sa Form, par exemple) ?
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 déc. 2006 à 12:00
Voilà d'ailleurs ce qu'il a écrit un peu plus haut :

pour 244968 Scalpweb
le msg box ne fonctionne pas car il me dit :
"impossible de faire référence à une propriété ou de la définir pour un contrôle si ce dernier n'est pas activé.('ce qui me fait penser que son code est dans le Form_load !!)"
j'ai donc creer un bouton sur la feuille pour executer le msgbox au cas ou mes zone de texte n'aurais pas été chargé et le probleme est le même.

=12357 XGuarden
j'ai mis la premiere ligne c'est a dire
if  me.texte2.text = nothing then ' et là : l'expression es erronnée  !
   if me.texte3.text = nothing then ' et là : l'expression es erronnée également !

   docmd.close
   end if
end if
lorsque je l'execute il me dit:
"erreur de compilation:
utilisation incorrect de l'objet."
en surlignant le premier nothing

Voilà pourquoi je disais que celà devenait embrouillé ... Une erreur est venue se substiotuer à l'autre ...

Je parie que tout est à cause du Load au lieu de l'Activate ...
0
XGuarden Messages postés 259 Date d'inscription dimanche 14 juillet 2002 Statut Membre Dernière intervention 17 août 2012
21 déc. 2006 à 15:37
A ces vrai, sil utilise vb6 sé pas pareil lol. Par contre l'instruction = Null est suporté par vb6, tandis que vb.net posede dbnull
0
Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 4
21 déc. 2006 à 16:41
Dc la question est :

où as-tu mis ton code ?
Dans qu'elle fonction ?

On y arrive...
0
Rejoignez-nous