ACCESS : Fenêtres de saisie étenduesDate de publication : 20/06/07 , Date de mise à jour : 20/06/07
Par
Thierry GASPERMENT (arkham46.developpez.com/)
Ce module permet de créer des InputBox étendues.
On peut, par exemple, ajouter à une InputBox standard un contrôle calendrier ou une liste déroulante.
Il est également possible d'utiliser ces InputBox étendues en critères de requête.
I. Introduction
II. Compatibilité
III. Sélection de date avec un calendrier
IV. Sélection d'une date et heure : Date/Time picker
V. Sélection d'une valeur dans une zone de liste déroulante
VI. Sélection d'une valeur dans une zone de liste
VII. Saisie simple
VIII. Utiliser les InputBox étendues en critère d'une requête
IX. Les téléchargements
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.
Merci à Kikof pour les tests sur Access 97.
II. Compatibilité
Le module a été testé sur les couples :
- Access 2003 + Windows XP Home
- Access 2000 + Windows 98
- Access 97 + Windows XP
- Access 97 + Windows 2000 Pro
- Excel 2000 + Windows 2000 Pro
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 3.x Object Library dans la liste.
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 :
#Const AppVersion = "ACCESS"
|
doit être changé en :
#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 :
- le texte standard en haut, sur lequel agissent CaptionFontName et CaptionFontSize
- un texte additionel en bas, dans la police standard
Exemple : "Prompt de saisie;;Texte addionnel" |
| 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.
Les éléments de ce tableau sont soit :
- des dates : Array(Date,#8/15/2007#)
- des entiers pour préciser le jour de la semaine entre 1 et 7 : Array(6,7) met en gras les samedi et dimanche
- un mélange de ces deux types d'élements
|
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 :
| Affichage d'une fenêtre de saisie de date |
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
Deux parties séparées par deux points-virgules :
- le texte standard en haut, sur lequel agissent CaptionFontName et CaptionFontSize
- un texte additionel en bas, dans la police standard
Exemple : "Prompt de saisie;;Texte addionnel" |
| 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 :
| Affichage d'une fenêtre de saisie de date/heure |
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
|
| Affichage d'une fenêtre de saisie de date uniquement |
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)
|
| Affichage d'une fenêtre de saisie d'heure uniquement |
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
Deux parties séparées par deux points-virgules :
- le texte standard en haut, sur lequel agissent CaptionFontName et CaptionFontSize
- un texte additionel en bas, dans la police standard
Exemple : "Prompt de saisie;;Texte addionnel" |
| Items |
Variant |
Au choix :
- Un tableau de valeurs : Array("Choux","Carotte","Haricot")
- Ou une requête pour Access : "Select distinct legumes from matable"
- Ou un Range pour Excel : ThisWorkbook.Sheets("ArrayTests").Range("A15:B17")
La première colonne contient les valeurs.
La deuxième colonne contient les chemins (absolus ou relatifs) des images
|
| 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 :
| Sélection avec valeurs dans un tableau |
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
|
| Sélection avec valeurs d'une table |
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
|
| Sélection avec valeurs dans un tableau et avec images |
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
|
| Sélection avec valeurs d'une table et avec images |
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
Deux parties séparées par deux points-virgules :
- le texte standard en haut, sur lequel agissent CaptionFontName et CaptionFontSize
- un texte additionel en bas, dans la police standard
Exemple : "Prompt de saisie;;Texte addionnel" |
| Items |
Variant |
Au choix :
- Un tableau de tableaux de valeurs :
Array(Array("Légume1","Choux"), _
Array("Légume2","Carotte"),
Array("Légume3","Haricot"))
--> Pour une colonne unique, utilisez un tableau à une dimension : Array("Choux","Carotte","Haricot")
- Ou une requête pour Access : "Select distinct num,legumes from matable"
- Ou un Range pour Excel : ThisWorkbook.Sheets("ArrayTests").Range("A15:B17")
|
| 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 :
| Sélection avec valeurs dans un tableau |
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
|
| Sélection avec valeurs d'une table |
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
|
| Sélection avec valeurs dans un tableau et avec images |
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
|
| Sélection avec valeurs d'une table et avec images |
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
Deux parties séparées par deux points-virgules :
- le texte standard en haut, sur lequel agissent CaptionFontName et CaptionFontSize
- un texte additionel en bas, dans la police standard
Exemple : "Prompt de saisie;;Texte addionnel" |
| 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 :
| Saisie d'un mot de passe |
Dim lValue As String
lValue = InputBoxEx("Mot de passe", "InputBoxEx Password", , , , , , _
vbRed, vbYellow, "Comic sans MS", 20, "Arial", 15, "*")
If lValue <> "" Then MsgBox lValue
|
| Limitation de la saisie à 5 caractères |
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.
| Fonction d'appel d'InputBoxDate pour requête |
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
 
Les sources présentées sur cette page sont libres de droits,
et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation
constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©
Thierry GASPERMENT. Aucune reproduction,
même partielle, ne peut être faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E
de dommages et intérêts.
Cette page est déposée à la
SACD.
|