If then

Messages postés
10
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
17 janvier 2007
- - Dernière réponse : 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
Afficher la suite 

20/27 réponses

Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
25
0
Merci
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
Commenter la réponse de Charles Racaud
Messages postés
10
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
17 janvier 2007
0
Merci
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
Commenter la réponse de cs_loulou14
Messages postés
1468
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 mai 2010
0
Merci
Tu peux essayer

If Me.text = string.empty then

mais ça m'étonnerais que ça change qqc...
Commenter la réponse de Scalpweb
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
31
0
Merci
EN vb6, j'aurais plutot dit
If Me.Text = VBNullString Then

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Commenter la réponse de cs_casy
Messages postés
10
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
17 janvier 2007
0
Merci
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 ""
Commenter la réponse de cs_loulou14
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
0
Merci
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
Commenter la réponse de cs_MPi
Messages postés
10
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
17 janvier 2007
0
Merci
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é
Commenter la réponse de cs_loulou14
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
0
Merci
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
Commenter la réponse de cs_MPi
Messages postés
10
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
17 janvier 2007
0
Merci
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
Commenter la réponse de cs_loulou14
Messages postés
1468
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 mai 2010
0
Merci
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 ! ;-)
Commenter la réponse de Scalpweb
Messages postés
259
Date d'inscription
dimanche 14 juillet 2002
Statut
Membre
Dernière intervention
17 août 2012
0
Merci
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")
Commenter la réponse de XGuarden
Messages postés
10
Date d'inscription
mercredi 20 décembre 2006
Statut
Membre
Dernière intervention
17 janvier 2007
0
Merci
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
Commenter la réponse de cs_loulou14
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
0
Merci
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
Commenter la réponse de cs_MPi
Messages postés
259
Date d'inscription
dimanche 14 juillet 2002
Statut
Membre
Dernière intervention
17 août 2012
0
Merci
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...
Commenter la réponse de XGuarden
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
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.
Commenter la réponse de jmfmarques
Messages postés
1468
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 mai 2010
0
Merci
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 ?
Commenter la réponse de Scalpweb
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
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) ?
Commenter la réponse de jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
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 ...
Commenter la réponse de jmfmarques
Messages postés
259
Date d'inscription
dimanche 14 juillet 2002
Statut
Membre
Dernière intervention
17 août 2012
0
Merci
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
Commenter la réponse de XGuarden
Messages postés
1468
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
5 mai 2010
0
Merci
Dc la question est :

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

On y arrive...
Commenter la réponse de Scalpweb