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