I. Introduction▲
Ce module donne la possibilité d'ajouter de nouvelles fonctionnalités à la boîte de saisie InputBox standard.
On peut ainsi :
- Saisir une date à l'aide du calendrier Windows.
- Saisir une date et une heure avec un Date/Time picker.
- Saisir une valeur dans une liste déroulante.
- Saisir une valeur dans une zone de liste.
- Utiliser des images dans les listes.
- Changer la couleur de fond de la boîte.
- Changer la taille, la police et la couleur du texte d'information.
- Changer la taille et la police du texte saisi.
- Masquer le texte saisi (pour un mot de passe).
- Limiter la longueur de la saisie.
- Ajouter un texte additionnel en bas de la fenêtre.
- Centrer la fenêtre.
- Utiliser ces boîtes de saisie en critère d'une requête.
- Fermer automatiquement la fenêtre avec une minuterie.
Exemples en images :
Calendrier : | Liste déroulante : |
Zone de liste : | Date/Time picker : |
Mot de passe : | Fermeture sur minuterie |
Merci à Tofalu, caféine et hiko-seijuro pour leur relecture.
II. Compatibilité / Installation▲
Le module a été développé pour Access et Excel.
Il n'y a pas de référence à définir pour les différents contrôles.
Par contre il est nécessaire, pour Access de sélectionner la référence à DAO car les boîtes de saisie avec « Zone de liste » utilisent DAO pour lire les données à insérer dans la liste.
Pour ajouter la référence, allez dans l'éditeur VBA puis :
- Outils => Références
- Sélectionnez la référence Microsoft DAO x.x Object Library dans la liste, ou Microsoft Office xx.x Access database engine Object Library pour les versions plus récentes (à partir de 2007).
Le module est disponible au format texte dans la section Les téléchargements
Pour Excel : modifier la variable de compilation au début du module :
' Pour Access
#Const AppVersion =
"ACCESS"
' Pour Excel
'#Const AppVersion = "EXCEL"
doit être changé en :
' Pour Access
'#Const AppVersion = "ACCESS"
' Pour Excel
#Const AppVersion =
"EXCEL"
III. Sélection de date avec un calendrier▲
La nouvelle fonction pour la boîte de saisie avec calendrier est InputBoxDate.
Seul le paramètre Prompt est obligatoire.
Paramètre | Type | Explication |
---|---|---|
Prompt | String |
Texte d'information Deux parties séparées par deux points-virgules :
|
Title | String | Titre de la fenêtre |
Default | Date | Date par défaut |
XPos | Single | Position horizontale de la fenêtre en pixels -1 pour centrer horizontalement |
YPos | Single | Position verticale de la fenêtre en pixels -1 pour centrer verticalement (au 1/3 de l'écran en fait) |
HelpFile | String | Fichier d'aide (paramètre identique à l'InputBox standard) |
Context | String | Contexte de l'aide (paramètre identique à l'InputBox standard) |
ForeColor | Long | Couleur du texte d'information |
BackColor | Long | Couleur de fond de la fenêtre |
CaptionFontName | String | Nom de la police de caractères du texte d'information |
CaptionFontSize | Long | Taille de la police de caractères du texte d'information |
CalendarFontName | String | Nom de la police de caractères des textes du calendrier |
CalendarFontSize | Long | Taille de la police de caractères des textes du calendrier Utiliser ce paramètre pour agrandir le calendrier. |
DisplayWeeks | boolean | Affichage des numéros de semaine |
EditFontName | String | Nom de la police de caractères de la zone d'édition |
EditFontSize | Long | Taille de la police de caractères de la zone d'édition |
pTimer | Integer | Minuterie en secondes. Le temps restant s'affiche dans la zone de texte additionnel, en remplacement de [Timer]. (Ex de paramètre Prompt: "Test Timer;;Fermeture dans [Timer] secondes" )Lorsque la minuterie est écoulée le bouton d'annulation est cliqué automatiquement. |
pBoldDays | Tableau |
Tableau de jours à mettre en gras dans le calendrier.
|
La fonction s'utilise comme la fonction InputBox standard.
Elle renvoie une chaîne de caractères, il est donc utile de vérifier que la date est valide.
Exemple :
Dim
lDate As
String
lDate =
InputBoxDate
(
"Date test"
, , Now
(
) +
20
, , , , , , , _
"Comic sans MS"
, 12
, "Comic sans MS"
, 15
, True
, "Arial"
, 15
)
If
Not
IsDate
(
lDate) Then
MsgBox
"Date Invalide"
IV. Sélection d'une date et heure : Date/Time picker▲
La nouvelle fonction pour la boîte de saisie avec Date/Time picker est InputBoxDateTime.
Seul le paramètre Prompt est obligatoire.
Paramètre | Type | Explication |
---|---|---|
Prompt | String |
Texte d'information
Exemple : |
Title | String | Titre de la fenêtre |
Default | Date | Date par défaut |
XPos | Single | Position horizontale de la fenêtre en pixels -1 pour centrer horizontalement |
YPos | Single | Position verticale de la fenêtre en pixels -1 pour centrer verticalement (au 1/3 de l'écran en fait) |
HelpFile | String | Fichier d'aide (paramètre identique à l'InputBox standard) |
Context | String | Contexte de l'aide (paramètre identique à l'InputBox standard) |
ForeColor | Long | Couleur du texte d'information |
BackColor | Long | Couleur de fond de la fenêtre |
CaptionFontName | String | Nom de la police de caractères du texte d'information |
CaptionFontSize | Long | Taille de la police de caractères du texte d'information |
CalendarFontName | String | Nom de la police de caractères des textes du calendrier |
CalendarFontSize | Long | Taille de la police de caractères des textes du calendrier Utiliser ce paramètre pour agrandir le calendrier. |
DisplayWeeks | boolean | Affichage des numéros de semaine |
EditFontName | String | Nom de la police de caractères de la zone d'édition et de la liste |
EditFontSize | Long | Taille de la police de caractères de la zone d'édition et de la liste |
DateFormat | String | Format d'affichage de la date et de l'heure |
UpDown | Boolean | Utiliser des boutons haut-bas au lieu du la flèche d'affichage du calendrier |
pTimer | Integer | Minuterie en secondes. Le temps restant s'affiche dans la zone de texte additionnel, en remplacement de [Timer]. (Ex de paramètre Prompt: "Test Timer;;Fermeture dans [Timer] secondes" )Lorsque la minuterie est écoulée le bouton d'annulation est cliqué automatiquement. |
La fonction s'utilise comme la fonction InputBox standard.
Elle renvoie une chaîne de caractères Date + Heure formatée en fonction des paramètres régionaux.
Exemple :
Dim
lDate As
String
lDate =
InputBoxDateTime
(
"Date + Heure"
, , Now
(
), , , , , vbRed
, _
RGB
(
200
, 255
, 255
), "Arial"
, 15
, "Comic sans MS"
, _
15
, True
, "Arial"
, 15
, "ddddMMMdd', 'yyy HH':'mm':'ss"
)
If
lDate <>
""
Then
MsgBox
"Saisie :"
&
vbCrLf
&
lDate
Dim
lDate As
String
lDate =
InputBoxDateTime
(
"Date"
, , Now
(
), , , , , vbRed
, _
RGB
(
200
, 255
, 255
), "Arial"
, 15
, "Comic sans MS"
, _
15
, True
, , , "ddddMMMdd', 'yyy"
)
If
lDate <>
""
Then
MsgBox
"Saisie :"
&
vbCrLf
&
DateValue
(
lDate)
Dim
lDate As
String
lDate =
InputBoxDateTime
(
"Heure"
, , Now
(
), , , , , vbRed
, _
RGB
(
200
, 255
, 255
), "Arial"
, 15
, "Comic sans MS"
, _
15
, True
, , 15
, "HH':'mm':'ss"
, True
)
If
lDate <>
""
Then
MsgBox
"Saisie :"
&
vbCrLf
&
TimeValue
(
lDate)
V. Sélection d'une valeur dans une zone de liste déroulante▲
La nouvelle fonction pour la boîte de saisie avec zone de liste déroulante est InputBoxCombo.
Les paramètres Prompt et Items sont obligatoires.
Paramètre | Type | Explication |
---|---|---|
Prompt | String |
Texte d'information
Exemple : |
Items | Variant |
Au choix :
La première colonne contient les valeurs. |
Title | String | Titre de la fenêtre |
Default | String | Valeur par défaut |
XPos | Single | Position horizontale de la fenêtre en pixels -1 pour centrer horizontalement |
YPos | Single | Position verticale de la fenêtre en pixels -1 pour centrer verticalement (au 1/3 de l'écran en fait) |
HelpFile | String | Fichier d'aide (paramètre identique à l'InputBox standard) |
Context | String | Contexte de l'aide (paramètre identique à l'InputBox standard) |
ListHeight | Long | Hauteur de la liste déroulante en nombre de lignes |
ForeColor | Long | Couleur du texte d'information |
BackColor | Long | Couleur de fond de la fenêtre |
CaptionFontName | String | Nom de la police de caractères du texte d'information |
CaptionFontSize | Long | Taille de la police de caractères du texte d'information |
EditFontName | String | Nom de la police de caractères de la zone d'édition et de la liste |
EditFontSize | Long | Taille de la police de caractères de la zone d'édition et de la liste |
DisplayImg | Boolean | Si vrai alors la deuxième colonne contient le chemin (absolu ou relatif) des images Les tailles des images doivent être identiques. |
pTimer | Integer | Minuterie en secondes. Le temps restant s'affiche dans la zone de texte additionnel, en remplacement de [Timer]. (Ex de paramètre Prompt: "Test Timer;;Fermeture dans [Timer] secondes" )Lorsque la minuterie est écoulée le bouton d'annulation est cliqué automatiquement. |
La fonction s'utilise comme la fonction InputBox standard.
Elle renvoie une chaîne de caractères.
Exemple :
Dim
lValue As
String
lValue =
InputBoxCombo
(
"Choisissez un légume"
,Array
(
"Choux"
,"Carotte"
,"Haricot"
), _
"Test Combo Box Tableau"
, , , , , , , vbRed
, RGB
(
200
, 255
, 255
), "Comic sans MS"
, 20
)
If
lValue <>
""
Then
MsgBox
"Saisie :"
&
vbCrLf
&
lValue
Dim
lValue As
String
lValue =
InputBoxCombo
(
"Choisissez un légume"
,"Select distinct legumes from matable"
, _
"Test Combo Box Table"
, , , , , , , vbRed
, RGB
(
200
, 255
, 255
), "Comic sans MS"
, 20
)
If
lValue <>
""
Then
MsgBox
"Saisie :"
&
vbCrLf
&
lValue
Dim
lItems
Dim
lValue As
String
lItems =
Array
(
"Ligne Test 1"
, "MonImage1.bmp"
, _
"Ligne Test 2"
, "MonImage2.bmp"
, _
"Ligne Test 3"
, "MonImage3.bmp"
)
lValue =
InputBoxCombo
(
"Test Combo Box Tableau + Images"
, lItems, , lItems
(
4
), , , , , _
300
, vbRed
, RGB
(
200
, 255
, 255
), "Comic sans MS"
, 20
, "Arial"
, 15
, True
)
If
lValue <>
""
Then
MsgBox
"Saisie :"
&
vbCrLf
&
lValue
Dim
lValue As
String
lValue =
InputBoxCombo
(
"Test Combo Box Recorset + Images"
, _
"select TList.texte,TImages.chemin from Tlist"
, , , , , , , 300
, vbRed
, _
RGB
(
200
, 255
, 255
), "Comic sans MS"
, 20
, "Arial"
, 15
, True
)
If
lValue <>
""
Then
MsgBox
"Saisie :"
&
vbCrLf
&
lValue
VI. Sélection d'une valeur dans une zone de liste▲
La nouvelle fonction pour la boîte de saisie avec zone de liste est InputBoxListView.
Les paramètres Prompt et Items sont obligatoires.
Paramètre | Type | Explication |
---|---|---|
Prompt | String |
Texte d'information
Exemple : |
Items | Variant |
Au choix :
|
LinkedColumn | Integer | Colonne contenant la valeur à renvoyer. (la numérotation commence par 0) |
HasHeader | Boolean | Affiche les en-têtes de colonne. Pour un tableau, la première ligne contient les en-tête. Pour un recordset, les en-têtes sont les légendes ou à défaut les noms de champs. |
Title | String | Titre de la fenêtre |
Default | String | Valeur par défaut Pour une sélection multiple, séparez les valeurs avec le séparateur défini dans le paramètre MultiSelectSep |
XPos | Single | Position horizontale de la fenêtre en pixels -1 pour centrer horizontalement |
YPos | Single | Position verticale de la fenêtre en pixels -1 pour centrer verticalement (au 1/3 de l'écran en fait) |
HelpFile | String | Fichier d'aide (paramètre identique à l'InputBox standard) |
Context | String | Contexte de l'aide (paramètre identique à l'InputBox standard) |
ListHeight | Long | Hauteur de la liste déroulante en nombre de lignes |
ListWidth | Long | Largeur de la liste déroulante en pixels |
ForeColor | Long | Couleur du texte d'information |
BackColor | Long | Couleur de fond de la fenêtre |
CaptionFontName | String | Nom de la police de caractères du texte d'information |
CaptionFontSize | Long | Taille de la police de caractères du texte d'information |
ListFontName | String | Nom de la police de caractères de la liste |
ListFontSize | Long | Taille de la police de caractères de la liste |
AutoResize | Boolean | Redimensionnement automatique des colonnes |
DisplayGrid | Boolean | Affiche la grille |
ImageCol | Integer | Colonne contenant le chemin des images. La numérotation commence par 0. Les images s'affichent dans la première colonne de la liste. Les tailles des images doivent être identiques. |
DisplayImageCol | Boolean | La colonne contenant le chemin des images est masquée par défaut. Mettre ce paramètre à vrai pour l'afficher. |
ColSize | Variant | Tableau contenant la taille des colonnes en pixels. Mettre -1 pour les colonnes redimensionnées automatiquement. (si AutoResize = Vrai). |
MultiSelectSep | String | Séparateur pour sélection multiple |
pTimer | Integer | Minuterie en secondes. Le temps restant s'affiche dans la zone de texte additionnel, en remplacement de [Timer]. (Ex de paramètre Prompt: "Test Timer;;Fermeture dans [Timer] secondes" )Lorsque la minuterie est écoulée le bouton d'annulation est cliqué automatiquement. |
pCheckBox | Boolean | Si Vrai, affichage de case à cocher à gauche de chaque ligne. |
La fonction s'utilise comme la fonction InputBox standard.
Elle renvoie une chaîne de caractères.
Exemple :
Dim
lValue As
String
lValue =
InputBoxlistView
(
"Test ListView Tableau"
, _
Array
(
Array
(
"En-Tête 1"
, "En-Tête 2"
), _
Array
(
"Lig 1 Col 1"
, "Lig1 Col 2"
), _
Array
(
"Lig 2 Col 1"
, "Lig2 Col 2"
)), _
1
, True
, "Titre fenêtre"
, , , , , , 300
, , 255
, RGB
(
0
, 255
, 255
), _
"Comic sans MS"
, 20
, "Arial"
, 15
, True
, True
)
If
lValue <>
""
Then
MsgBox
"Saisie :"
&
vbCrLf
&
lValue
Dim
lValue As
String
lValue =
InputBoxlistView
(
"Test ListView Recordset"
, _
"select Nom,Lieu,format(DateEvent,""Long Date"") as [Date ] from Tevenements"
, _
0
, True
, "Test Titre"
, , , , , , 300
, 800
, 255
, RGB
(
0
, 255
, 255
), _
"Comic sans MS"
, 20
, "Arial"
, 15
, True
, True
, , , Array
(
150
, 250
, -
1
))
If
lValue <>
""
Then
MsgBox
"Saisie :"
&
vbCrLf
&
lValue
Dim
lValue As
String
lValue =
InputBoxlistView
(
"Test ListView Tableau"
, _
Array
(
Array
(
"En-Tête 1"
, "En-Tête 2"
, ""
), _
Array
(
"Lig 1 Col 1"
, "Lig1 Col 2"
, "rhume.bmp"
), _
Array
(
"Lig 2 Col 1"
, "Lig2 Col 2"
, "laugh.bmp"
)), _
1
, True
, "Titre fenêtre"
, , , , , , 300
, , 255
, RGB
(
0
, 255
, 255
), _
"Comic sans MS"
, 20
, "Arial"
, 15
, True
, True
, 2
)
If
lValue <>
""
Then
MsgBox
"Saisie :"
&
vbCrLf
&
lValue
Dim
lValue As
String
lValue =
InputBoxlistView
(
"Test ListView Recordset"
, _
"select Null as Status,TList.texte,TImages.chemin from Tlist"
, _
0
, True
, "Test Titre"
, , , , , , 300
, 800
, 255
, RGB
(
0
, 255
, 255
), _
"Comic sans MS"
, 20
, "Arial"
, 15
, True
, True
, 2
, False
)
If
lValue <>
""
Then
MsgBox
"Saisie :"
&
vbCrLf
&
lValue
VII. Saisie simple▲
Cette boîte de dialogue plus simple permet tout de même de :
- de changer les couleurs de fond et du texte d'information;
- de changer la police de caractères du texte d'information;
- de changer la police de caractères du texte saisi;
- de masquer les caractères (pour la saisie d'un mot de passe);
- de limiter la saisie à un nombre de caractères.
La nouvelle fonction pour cette boîte de saisie étendue est InputBoxEx.
Seul le paramètre Prompt est obligatoire.
Paramètre | Type | Explication |
---|---|---|
Prompt | String |
Texte d'information
Exemple : |
Title | String | Titre de la fenêtre |
Default | String | Valeur par défaut |
XPos | Single | Position horizontale de la fenêtre en pixels -1 pour centrer horizontalement |
YPos | Single | Position verticale de la fenêtre en pixels -1 pour centrer verticalement (au 1/3 de l'écran en fait) |
HelpFile | String | Fichier d'aide (paramètre identique à l'InputBox standard) |
Context | String | Contexte de l'aide (paramètre identique à l'InputBox standard) |
ForeColor | Long | Couleur du texte d'information |
BackColor | Long | Couleur de fond de la fenêtre |
CaptionFontName | String | Nom de la police de caractères du texte d'information |
CaptionFontSize | Long | Taille de la police de caractères du texte d'information |
EditFontName | String | Nom de la police de caractères de la zone d'édition et de la liste |
EditFontSize | Long | Taille de la police de caractères de la zone d'édition et de la liste |
PasswordChar | String | Caractère de masquage du texte (par exemple pour un mot de passe) |
TextLength | Long | Nombre de caractères maximum pouvant être saisis |
pTimer | Integer | Minuterie en secondes. Le temps restant s'affiche dans la zone de texte additionnel, en remplacement de [Timer]. (Ex de paramètre Prompt: "Test Timer;;Fermeture dans [Timer] secondes" )Lorsque la minuterie est écoulée le bouton d'annulation est cliqué automatiquement. |
La fonction s'utilise comme la fonction InputBox standard.
Elle renvoie une chaîne de caractères.
Exemple :
Dim
lValue As
String
lValue =
InputBoxEx
(
"Mot de passe"
, "InputBoxEx Password"
, , , , , , _
vbRed
, vbYellow
, "Comic sans MS"
, 20
, "Arial"
, 15
, "*"
)
If
lValue <>
""
Then
MsgBox
lValue
Dim
lValue As
String
lValue =
InputBoxEx
(
"Saisir 5 caractères"
, "Saisie limitée"
, , , , , , _
vbRed
, vbYellow
, "Comic sans MS"
, 20
, "Arial"
, 15
, , 5
)
If
lValue <>
""
Then
MsgBox
lValue
VIII. Utiliser les InputBox étendues en critère d'une requête▲
L'avantage des InputBox c'est qu'on peut les utiliser comme critère dans une requête.
Pour cela il suffit de créer, dans un module, une fonction qui appelle l'InputBox.
Public
Function
GetDate
(
)
GetDate =
InputBoxDate
(
"Saisir une date"
, , Now
(
), , , , , _
vbRed
, RGB
(
255
, 255
, 200
), "Comic sans MS"
, 20
, "Comic sans MS"
, 15
)
End
Function
Ensuite on utilise cette fonction comme critère de la requête.
A l'exécution de la requête le calendrier va s'ouvrir pour demander une date.
IX. Les téléchargements▲
Télécharger le module au format texte
Une fois téléchargé et décompressé, importez le fichier MInputBoxPlus.bas dans votre projet.
Dans le menu : Fichier => Importer un fichier … (ou glisser-déposer le fichier dans le projet).
Télécharger la base Access de démonstration au format ACCESS 2000