Toute l'actualité de [self-access.com] en direct sur votre ordinateur !  Vous êtes ici : Accueil » Visual Basic » Initiation à VB » Boîtes de dialogue » InputBoxConnexion
 


La fonction InputBox

L'instruction InputBox est un peu la petite soeur de MsgBox. Elle permet de demander une valeur simple à l'utilisateur, et de récupérer cette valeur (généralement dans une variable).

Note
Sur Access, vous utiliserez sans doute rarement InputBox, parce qu'il y a plein d'autres manières de saisir des informations ; les formulaires Access, notamment, sont bien plus pratiques en termes d'ergonomie et de validation de la saisie.

Donc vous pouvez vous dispenser de lire cette page... Smiley

 Exemple simple

Voici un premier exemple de code, et la boîte qui s'affiche en résultat :

  1. Sub Saisie1()
  2.   ' La variable x va stocker le résultat de InputBox
  3.   Dim x As String
  4.  
  5.   ' Demander une valeur (ici : le nom)
  6.   x = InputBox("Tapez votre nom :")
  7.  
  8.   ' Afficher le résultat
  9.   MsgBox "Bonjour " & x
  10. End Sub

Note
En principe, le résultat renvoyé par InputBox est une chaîne de caractères (d'où le fait que la variable x soit de type String).

InputBox avec titre

Il est possible de définir le titre d'une InputBox, à la place de "Microsoft Office Access".

Pour cela, définissez le second paramètre de la fonction, comme ceci :

  1. Sub Saisie2()
  2.   Dim x As String
  3.  
  4.   x = InputBox("Tapez votre nom :", "Identification")
  5.   MsgBox "Bonjour " & x
  6. End Sub

InputBox avec valeur par défaut

Un 3ème paramètre peut être fourni à InputBox, il permet de proposer une valeur par défaut lors de la saisie. En d'autres termes, lorsque la boîte s'affiche, elle est pré-remplie :

Note
Comme InputBox renvoie (et gère) des chaînes, la valeur par défaut doit aussi être une chaîne, entre guillemets.

  1. Sub Saisie3()
  2.   Dim x As String
  3.  
  4.   x = InputBox("Tapez votre nom :", "Identification", "Hervé")
  5.   MsgBox "Bonjour " & x
  6. End Sub

Gérer l'annulation dans une InputBox

La fonction InputBox renvoie toujours une chaîne de caractères (donc une valeur de type String). Si l'utilisateur a appuyé sur le bouton Annuler ou sur la croix de fermeture, cette chaîne est vide (donc ""). Généralement, vous testerez ce cas par un If / End If, pour savoir si vous devez continuer le traitement.

Exemple de code :

L'exemple suivant demande son nom à l'utilisateur, et affiche un message différent selon que l'utilisateur a bien validé une valeur, ou qu'il a annulé la saisie.

Même si InputBox propose une valeur par défaut (ce qui est notre cas ici), le fait d'annuler renvoie toujours une chaîne vide.

  1. Sub Saisie4()
  2.   Dim x As String
  3.  
  4.   ' Attendre une saisie
  5.   x = InputBox("Tapez votre nom :", "Identification", "Hervé")
  6.  
  7.   ' Afficher un message en fonction de la saisie
  8.   If x = "" Then
  9.     MsgBox "Bonjour, Inconnu !"
  10.   Else
  11.     MsgBox "Bonjour " & x
  12.   End If
  13. End Sub

InputBox et valeur numérique

Si vous souhaitez que l'utilisateur tape un nombre, vous pouvez tapez ceci, mais ce n'est pas la meilleure méthode...

  1. Sub Saisie5()
  2.   Dim x As Double
  3.  
  4.   x = InputBox("Tapez un nombre :")
  5.   MsgBox "Vous avez tapé : " & x
  6. End Sub

... ce n'est pas la meilleure méthode parce que :

  1. InputBox renvoie en principe une chaîne (String) et non une valeur numérique (Single, Double, Integer...). Dans mon programme, j'ai donc sous-entendu que VB serait capable de convertir la valeur String en valeur Double.
  2. Mais en fait, si l'utilisateur tape autre chose qu'un nombre — et il n'a aucune obligation ! —, le programme s'arrête.
  3. Si l'utilisateur annule la saisie (bouton Annuler ou croix de fermeture), c'est la même punition.

Il vaut mieux saisir une chaîne, quitte à vérifier que la saisie est correcte et à convertir la saisie en nombre après. Dans l'exemple qui suit :

  1. On stocke la saisie dans une chaîne (variable x).
  2. On vérifie que cette saisie contient réellement des chiffres, grâce à la fonction IsNumeric() qui renvoie True si la chaîne peut être transformée en nombre, et False sinon.
  3. Si la saisie est conforme, on la convertit de chaîne en nombre, grâce à la fonction Val().

Cette fois, si l'utilisateur annule la saisie ou tape n'importe quoi, le programme ne "plante" pas !

  1. Sub Saisie6()
  2.   Dim x As String
  3.   Dim y As Double
  4.  
  5.   ' Demander un nombre
  6.   x = InputBox("Tapez un nombre :")
  7.  
  8.   ' Vérifier que la saisie est bien numérique
  9.   If IsNumeric(x) Then
  10.     ' Si la saisie est numérique...
  11.     y = Val(x)
  12.     MsgBox "Vous avez tapé le nombre : " & y, vbInformation
  13.   Else
  14.     ' Si la saisie est incorrecte...
  15.     MsgBox "Vous n'avez pas tapé de nombre !", vbExclamation
  16.   End If
  17. End Sub

InputBox et date

Pour la saisie de dates, c'est un peu le même principe. On utilise cette fois la fonction IsDate() pour vérifier si la saisie est transformable en date...

  1. Sub Saisie7()
  2.   Dim x As String
  3.   Dim y As Date
  4.  
  5.   ' Demander une date
  6.   x = InputBox("Tapez une date :")
  7.  
  8.   ' Vérifier que la saisie est bien transformable en date
  9.   If IsDate(x) Then
  10.     ' Si la saisie est bien une date...
  11.     y = CDate(x)
  12.     MsgBox "Vous avez tapé la date : " & y, vbInformation
  13.   Else
  14.     ' Si la saisie est incorrecte...
  15.     MsgBox "Vous n'avez pas tapé de date !", vbExclamation
  16.   End If
  17. End Sub

Mes livres sur Access...
[cliquez pour plus d'infos]





Hit-Parade 
 
[ Copyright 1997-2018 hervé inisan, self-access.com Reproduction interdite ]