Bonjour !
Je suis tombée sur ce morceau de code qui illustre la notion de procédures et arguments en VBA, mais je ne comprends pas son exécution. Voici le code en question :
1/ Je ne comprends pas pourquoi la sub "exemple" est entrée avant la sub "boitedialogue" alors que la sub exemple fait appel à la sub boitedialogue. Bon, cela ne semble pas être un souci dans VBA car la macro s'exécute bien mais cela me semble illogique comme ordre ?
2/ Je pensais que lors du lancement de la macro "exemple", la macro "boitedialogue" allait se lancer et donc que les ifs allaient être testés et donc que en fonction de l'issue, on aurait tel ou tel résultat. Par exemple, si je n'entre pas d'âge en cellule C1 (mais j'entre un nom et un prénom en A1 et B1 resp.) , seule la condition If ismissing(age) est vraie donc je m'attendais à ce que s'affiche le message "nom, prenom" or seul le nom s'affiche. Je sais que le nom s'affiche car dans la sub Exemple il y a boitedialogue nom mais même si je mets boitedialogue nom, prenom, age alors ce qui s'affiche est "nom, prenom, 0 ans".
En d'autres termes, je ne comprends pas vraiment cette macro et comment faudrait-il l'écrire afin qu'elle s'exécute correctement?
Merci pour votre aide,
Shanon
Je suis tombée sur ce morceau de code qui illustre la notion de procédures et arguments en VBA, mais je ne comprends pas son exécution. Voici le code en question :
VB:
Sub exemple()
Dim nom As String, prenom As String, age As Integer
nom = Range("A1")
prenom = Range("B1")
age = Range("C1")
boiteDialogue nom
End Sub
Private Sub boiteDialogue(nom As String, Optional prenom, Optional age)
'Si l'âge est manquant
If IsMissing(age) Then
If IsMissing(prenom) Then 'Si le prénom est manquant, on n'affiche que le nom
MsgBox nom
Else 'Sinon, on affiche le nom et le prénom
MsgBox nom & " " & prenom
End If
'Si l'âge a été renseigné
Else
If IsMissing(prenom) Then 'Si le prénom est manquant, on affiche le nom et l'âge
MsgBox nom & ", " & age & " ans"
Else 'Sinon on affiche le nom, le prénom et l'âge
MsgBox nom & " " & prenom & ", " & age & " ans"
End If
End If
End Sub
1/ Je ne comprends pas pourquoi la sub "exemple" est entrée avant la sub "boitedialogue" alors que la sub exemple fait appel à la sub boitedialogue. Bon, cela ne semble pas être un souci dans VBA car la macro s'exécute bien mais cela me semble illogique comme ordre ?
2/ Je pensais que lors du lancement de la macro "exemple", la macro "boitedialogue" allait se lancer et donc que les ifs allaient être testés et donc que en fonction de l'issue, on aurait tel ou tel résultat. Par exemple, si je n'entre pas d'âge en cellule C1 (mais j'entre un nom et un prénom en A1 et B1 resp.) , seule la condition If ismissing(age) est vraie donc je m'attendais à ce que s'affiche le message "nom, prenom" or seul le nom s'affiche. Je sais que le nom s'affiche car dans la sub Exemple il y a boitedialogue nom mais même si je mets boitedialogue nom, prenom, age alors ce qui s'affiche est "nom, prenom, 0 ans".
En d'autres termes, je ne comprends pas vraiment cette macro et comment faudrait-il l'écrire afin qu'elle s'exécute correctement?
Merci pour votre aide,
Shanon