vba If Then End If

Ð

Ðidier

Guest
bonjour,

je comprend bien l'instruction If Then (si alors) par contre je saisie mal le End if (fin de l'instruction si) qui lui est parfois obligatoire, d'autrefois inutile........pourquoi ?

merci pour votre aide
Ðidier
 
@

@+Thierry

Guest
Bonjour Ðidier, le Forum

Ah oui, j'ai été aussi surpris il y a bien longtemps en voyant les deux syntax possibles...

En fait c'est assez simple :

Syntax 1
If Range("A1") = "" Then
MsgBox "La Cellule A1 est Vide"
End If

Peut tout aussi bien s'écrire comme ceci :

Syntax 2
If Range("A1") = "" Then MsgBox "La Cellule A1 est Vide"


Perso, j'utilise beaucoup la Syntax 2 dans le cas de Test d'intégrité dans les évènements devant de poursuivre une Macro, exemple pour un UserForm avec une ListBox qui doit avoir une Sélection impérativement, exemple :

If ListBox1.ListIndex = -1 Then Exit Sub



Là où on devra plus obligatoirement appliquer la Syntax 1 c'est dans le cas d'un "Else"

Syntax 1
If Range("A1") = "" Then
MsgBox "La Cellule A1 est Vide"
Else
MsgBox "La Cellule A1 est Vide"
End If

Que l'on peut voir écrit aussi comme ceci, mais bon, je n'aime pas trop (l'utilisation des ":" permet d'écrire sur la même ligne différentes instructions, ce n'est pas exactement comme dans l'exemple de départ)...

Syntax 2
If Range("A1") = "" Then MsgBox "La Cellule A1 est Vide" Else MsgBox "La Cellule A1 est Vide"

Et si l'on passe par des ElseIf alors la Syntax 2 devient impossible...

Syntax 1
  If Range("A1") = "" Then
     MsgBox "La Cellule A1 est Vide"
  ElseIf IsNumeric(Range("A1")) Then
     MsgBox "La Cellule A1 contient un nombre"
  ElseIf Not IsNumeric(Range("A1")) Then
      MsgBox "La Cellule A1 ne contient pas un nombre"
  End If

De plus on notera l'usage de "l'identation" (les retraits décalés) qui permet une lecture bien améliorée du code...

En espérant t'avoir éclairé...

Si Non, Alors Lire l'aide VBA !

Bon Samedi
@+Thierry
 
L

Lord Nelson

Guest
Salut Didier,

C'est simple, le End If ne sert à rien si l'instruction tient sur une seule ligne :

Si "Condition est vraie " Alors "Faire ceci" Sinon "Faire cela"
Ce qui se traduit en VB par
If...Then...Else...
ou bien IIF, l'équivalent du SI d'excel ou du VraiFaux d'Access.

Dans le cas de plusieurs instructions à enchaîner dans "Faire ceci" ou "Faire cela", l'ensemble de l'instruction ne tient plus sur une seule ligne et il faudra indiquer sa fin par End If.

Si "Condition est vraie " Alors
Faire ceci
et ceci
et encore ceci
Sinon
Faire cela
puis cela
... etc
Fin de l'instruction conditionnelle (End If)

L'instruction qui suit le End If sera exécutée dans tous les cas car elle ne dépend pas de la condition posée par If.

A+
Horatio
 

Discussions similaires

Réponses
5
Affichages
244

Statistiques des forums

Discussions
312 497
Messages
2 088 984
Membres
103 998
dernier inscrit
Gotteland