conditions And dans les If

conditions And dans les If - VB/VBA/VBS - Programmation

Marsh Posté le 07-03-2007 à 19:13:43    

Bonjour à tous,
 
J'ai une question au sujet des If en VB :
 
Y a t il un moyen pour que les If se comportent comme dans les autres languages basés sur le C notamment, c'est-à-dire que dans une instruction du style : If not monObjet is nothing And monObjet.xx = xx Then ... la seconde condition ne soit pas testée si la première est fausse.
 
Cette instruction plantera en VB si l'objet n'existe pas car le test sur la propriété plantera. Par contre l'équivalent en C++ ou en java ne plantera pas car si l'objet n'existe pas la seconde condition ne sera pas testée.
 
Je ne sais pas si j'ai été clair mais en tous cas merci de vos réponses et désolé si la question a déjà été posée.

Reply

Marsh Posté le 07-03-2007 à 19:13:43   

Reply

Marsh Posté le 07-03-2007 à 19:30:09    

if not monObjet is nothing then
    if monObjet.xx=xx then
    'tu fais ce que tu veux
    end if
else
'goto fin
end if
'fin:
end sub
 
'goto fin et fin: peuvent peut etre te servir  
 
j'espere que ca te vas
 

Reply

Marsh Posté le 07-03-2007 à 20:19:02    

Oui c'est bien ce que je pensais il faut imbriquer 2 If c'est ça que je trouve dommage car ça fait repeter 2 fois l'instruction Else.
 
Par contre j'avais pas pensé aux goto pour éviter justement de répeter 2 fois le Else.
Mais bon ça serait quand meme plus propre avec un seul If.

Reply

Marsh Posté le 07-03-2007 à 20:20:20    

et avec les Select Case ca peut le faire aussi

Reply

Marsh Posté le 08-03-2007 à 11:28:08    

non la seul solution c'est les if imbriquer  
tu peut pas fair un case la dessus

Reply

Marsh Posté le 08-03-2007 à 13:11:59    

20stylz a écrit :

If not monObjet is nothing And monObjet.xx = xx Then ... la seconde condition ne soit pas testée si la première est fausse.


ce n'est pas déjà le cas ?  :sweat:  
mets des parentheses dans ton test if, mais si l'une des deux conditions est fausse, ca ne rentrera pas dans la boucle.


Message édité par jpcheck le 08-03-2007 à 13:12:22
Reply

Marsh Posté le 08-03-2007 à 16:40:38    

Non le problème ce n'est pas de rentrer dans la boucle, si une des condition est fausse le then se sera pas executée. Le problème c'est le test de la seconde condition (monObjet.xx = xx) qui plante si l'objet n'existe pas.
 
Et malheureusement les parenthèses ne changent rien :(

Reply

Marsh Posté le 08-03-2007 à 17:44:28    

avec un "On Error Resume Next"
non ?
 
autre possibilité
sub 20stylz()
If not monObjet is nothing And monObjet.xx = xx Then
on error goto fin
'ici ce que tu veux faire
end if
fin:
end sub
 
à tester


Message édité par ingenieurcesi le 08-03-2007 à 18:06:00
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed