L’exemple suivant, qui génère une boîte de dialogue , utilise la fonction VBA InputBox pour demander à l’utilisateur son nom complet. Le code extrait ensuite le prénom et affiche un message d’accueil dans une boîte de message.
Sub DemanderLeNom() Dim NomUtilisateur As String Dim PremierEspace As Long Do Until Len(NomUtilisateur) > 0 NomUtilisateur = InputBox("Entrez votre nom complet: ", _ "Identifiez-vous") Loop PremierEspace = InStr(NomUtilisateur, Space(1)) If PremierEspace > 0 Then NomUtilisateur = Left$(NomUtilisateur, PremierEspace - 1) End If MsgBox "Salut " & NomUtilisateur End Sub
Commentaires
■ Notez que cette fonction inputBox est écrite dans une boucle Do Until pour garantir que quelque chose est entré lorsque la zone de saisie apparaît.
■ Si l’utilisateur clique sur Annuler ou n’entre pas de texte, UserName contient une chaîne vide et la zone de saisie réapparaît. La procédure tente ensuite d’extraire le prénom en recherchant le premier caractère d’espace (à l’aide de la fonction inStr), puis en utilisant la fonction Left pour extraire tous les caractères avant le premier espace.
■ Si aucun caractère espace n’est trouvé, le nom entier est utilisé tel qu’il a été saisi.
Le code suivant montre la même procédure avec deux modifications. Tout d’abord, la propriété UserName de l’objet Application est fournie comme valeur par défaut dans la boîte de dialogue. Si le nom avec lequel l’utilisateur s’est connecté à Office est correct, il lui suffit de cliquer sur OK et de ne rien saisir. Sinon, ils peuvent changer la propriété par défaut en ce qu’ils veulent. Ensuite, la fonction Split est utilisée pour diviser le texte en un tableau partout où il y a un espace. Ensuite, le premier élément du tableau (le (0) dans le code) est renvoyé. Si l’utilisateur entre Elie Chancelin, Elie est le premier élément du tableau et Chancelin est le second.
Sub DemanderLeNom() Dim NomUtilisateur As String Do Until Len(NomUtilisateur) > 0 NomUtilisateur = InputBox("Entrez votre nom complet: ", _ "Identifiez-vous", Application.UserName) Loop MsgBox "Salut " & Split(NomUtilisateur, Space(1))(0) End Sub
Si l’utilisateur entre un nom sans espace, le tableau créé par Split n’aura qu’un seul élément. Le code fonctionnera toujours car il utilise le premier élément. Si vous vouliez utiliser un élément différent, vous devez d’abord vous assurer qu’il existe. Utiliser Split n’est pas nécessairement un meilleur moyen qu’InStr de diviser un nom, mais un autre.