If elseif the

Bonjour a tous,

Je m'initie aux joies de la programmation VBA et je suis un peu perdu avec le code vba que je viens de faire.

If TextBoxsociete = "" Then MsgBox " vous devez rentrer le nom de la société."

ElseIf TextBoxnom = "" Then MsgBox "vous devez rentrer votre nom."

ElseIf TextBoxrue = "" Then MsgBox "Vous devez rentrez la rue."

ElseIf TextBoxCP = "" Then MsgBox "Vous devez rentrer le Code Postal."

ElseIf TextBoxville = "" Then MsgBox "Vous devez rentrer la ville."

Exit Sub

End If

Lorsque je lance l’exécution du code, j'ai un message d'erreur qui s'affiche me disant :

"erreur de compilation Else sans If"

Ou est mon erreur ?

Ce n'est pas la premiere fois que je retrouve ce message d'erreur. je pense donc que je n'ai rien compris au IF elseIf - then...

D'avance merci.

Bonjour

Ta première ligne est considérée comme un bloc If

Donc la 2ème ligne commence par un ElseIF et là c'est pas bon

Extrait de l'aide

Pour déterminer si une instruction If est un bloc If, examinez ce qui suit le mot clé Then. S'il ne s'agit pas d'un commentaire, l'instruction est traitée comme une instruction If à une seule ligne.

A tester

Sub test()
  If TextBoxsociete = "" Then
    MsgBox " vous devez rentrer le nom de la société."
  ElseIf TextBoxnom = "" Then MsgBox "vous devez rentrer votre nom."
  ElseIf TextBoxrue = "" Then MsgBox "Vous devez rentrez la rue."
  ElseIf TextBoxCP = "" Then MsgBox "Vous devez rentrer le Code Postal."
  ElseIf TextBoxville = "" Then MsgBox "Vous devez rentrer la ville."
    Exit Sub
  End If
End Sub

Donc si j'ai bien saisi, aprés ma premiere ligne j'aurai du avoir un end if?

du type :

If TextBoxsociete = "" Then MsgBox " vous devez rentrer le nom de la société."

end if

ElseIf TextBoxnom = "" Then MsgBox "vous devez rentrer votre nom."

ElseIf TextBoxrue = "" Then MsgBox "Vous devez rentrez la rue."

ElseIf TextBoxCP = "" Then MsgBox "Vous devez rentrer le Code Postal."

ElseIf TextBoxville = "" Then MsgBox "Vous devez rentrer la ville."

Exit Sub

End If

End Sub

Parceque franchement je pige pas du tout pourquoi d'un coup le fait d'envoyer le mesgbox a la migne apres la premiere variable constitut une enorme différence...

ou alors j'ai rien compris !!

en tout cas merci de ta reponse.

Bonsoir

Tu peux laisser la 1ère ligne telle quelle (sans retour à la ligne)

Mais la 2ème ligne qui commence par ElseIf il faut la faire débuter par If

Mais si la 2ème ligne commence par un If il faut que la 3ème ligne comme aussi par un If

etc ....

Tu pourrais écrire comme cela

Sub test()
  If TextBoxsociete = "" Then MsgBox " vous devez rentrer le nom de la société."
  If TextBoxnom = "" Then MsgBox "vous devez rentrer votre nom."
  If TextBoxrue = "" Then MsgBox "Vous devez rentrez la rue."
  If TextBoxCP = "" Then MsgBox "Vous devez rentrer le Code Postal."
  If TextBoxville = "" Then MsgBox "Vous devez rentrer la ville.":     Exit Sub
End Sub

Mais je sais pas si tu obtiendras ce que tu veux

Salut banzai64

Oui j avait aussi pense a ça et ça a lair de fonctionner.

Par contre je comprend toujours pas la nuance entre if- then end if et if- elseif then .

Je pense au il doit y avoir un intérêt... Mais lequel.

En tout cas merci de ta réponse

Bonjour

Dans le dernier code l'interpréteur va évaluer toutes les conditions sans exception

Avec un code If .... Then .... ElseIf .... End If, il va évaluer toutes les conditions jusqu'à la bonne mais ne fera pas les suivantes

Un gain de temps dans le 2ème cas

bon je commence a comprendre. Merci Banzai de tes lumières.

Si je pige bien :

if ...then

elsif...

elsif...

elsif

end if

c'est comme cela que ca doit se derouler? chaque elsif renvoi au then du if, si il ne fonctionne pas . et chaque elsif est testé jusqu'a ce qu'une variable engendre le then. Cela permet donc aussi si il y a de nombreuse variables et un code tres tres tres long d'accélérer son éxécution.

si je veut que chaque variable déclenche une réaction différente, comme c'est le cas pour mon code, alors il faut que j'utilise uniquement des if.

Le end if n'est utilisé que dans le cas d'utilisation de elseif?

C'est cela ou j'ai toujours rien compris?

Bonsoir

A force de pratiquer tu vas comprendre

Menu Débogage ---> Compiler VBAProject t'aidera au maximum en te signalant les fautes

Bonjour à tous,

En résumé tu as 2 syntaxes pour if.

Syntaxe sur 1 ligne : tu mets les instructions suivantes derrière le then (et pas de endif).

Syntaxe sur plusieurs lignes : rien derrière le then, endif obligatoire.

Syntaxe 1 :

If ... Then instruction1 Else instruction2

Syntaxe 2 :

If ... Then
     instruction1
Elseif
     instruction2
Else
     instruction3
Endif

eric

ok ! merci eriiic !

Le brouillard commence a se dissiper légèrement. J'ai plus qu'a faire différent essai pour bien comprendre les subtilités de tout ça .

Rechercher des sujets similaires à "elseif"