Valeurs d’argument de code de propriété RowSourceType (fonction définie par l’utilisateur)
La fonction Visual Basic que vous créez doit accepter cinq arguments. Le premier doit être déclaré en tant que contrôle et les autres en tant que données de type Variant. La fonction elle-même doit renvoyer une donnée de type Variant.
Functionfunctionname (fldAs Control, idAs Variant, rowAs Variant, colAs Variant, codeAs Variant) As Variant
Les cinq arguments suivants sont indispensables à la procédure Function :
Argument | Description |
---|---|
Fld | Variable de type contrôle faisant référence à la zone de liste ou à la zone de liste modifiable à compléter. |
id | Valeur unique identifiant le contrôle à remplir. Cette valeur est particulièrement utile si vous voulez utiliser la même fonction définie par l’utilisateur pour plusieurs zones de liste ou zones de liste modifiable tout en pouvant les différencier. (L’exemple affecte à cette variable la valeur de la fonction Timer). |
ramer | La ligne à remplir (en partant de zéro). |
col | La colonne à remplir (en partant de zéro). |
code | Constante intrinsèque spécifiant le type d’information souhaité. |
Remarque
[!REMARQUE] Dans la mesure où pour insérer des éléments dans une liste, Microsoft Access appelle plusieurs fois une fonction définie par l'utilisateur, il est nécessaire d'enregistrer des informations entre les appels. Pour cela, nous vous conseillons d'utiliser des variables Static.
Microsoft Access appelle la fonction définie par l’utilisateur en utilisant successivement des valeurs différentes dans l’argument code pour spécifier les informations requises. L’argument code peut utiliser les constantes intrinsèques suivantes :
Constante | Signification | Valeur retournée |
---|---|---|
acLBInitialize | Initialize | Différente de zéro si la fonction parvient à établir la liste, sinon,False (0) ou Null. |
acLBOpen | Ouvrir | ID différent de zéro si la fonction parvient à établir la liste, sinon False ou Null. |
acLBGetRowCount | Nombre de lignes | Nombre de lignes dans la liste (peut être égal à zéro) ; -1 si inconnu. |
acLBGetColumnCount | Nombre de colonnes | Nombre de colonnes contenues dans la liste (doit être différent de zéro) ; doit correspondre à la valeur de la feuille des propriétés. |
acLBGetColumnWidth | Largeur de colonne | Largeur (en twips) de la colonne spécifiée par l’argument col ; -1 pour utiliser la largeur par défaut. |
acLBGetValue | Entrée de liste | Entrée de la liste affichée dans la ligne et la colonne spécifiées par les arguments lgn et col. |
acLBGetFormat | Chaîne de format | Chaîne de format à utiliser pour mettre en forme l’entrée de liste affichée dans la ligne et la colonne spécifiées par les arguments ligne et col ; -1 pour utiliser le format par défaut. |
acLBEnd | Fin (cette valeur est toujours utilisée lors du dernier appel d’une fonction définie par l’utilisateur) | Rien. |
acLBClose | (Non utilisé) | Non utilisé. |
Access appelle votre fonction définie par l’utilisateur une seule fois pour acLBInitialize, acLBOpen, acLBGetRowCount et acLBGetColumnCount. Il initialise la fonction définie par l’utilisateur, ouvre la requête et détermine le nombre de lignes et de colonnes.
Access appelle votre fonction définie par l’utilisateur deux fois pour acLBGetColumnWidth : une fois pour déterminer la largeur totale de la zone de liste ou de la zone de liste déroulante et une deuxième fois pour définir la largeur de colonne.
Le nombre de fois que les constantes acLBGetValue et acLBGetFormat de votre fonction définie par l’utilisateur sont appelées pour saisir les entrées de liste et mettre en forme les chaînes varie en fonction du nombre d’entrées, de la tendance de l’utilisateur à faire défiler la liste et d’autres facteurs.
Access appelle la fonction définie par l’utilisateur pour acLBEnd lorsque le formulaire est fermé ou chaque fois que la zone de liste ou la zone de liste déroulante est interrogée.
Chaque fois qu’une valeur particulière (telle que le nombre de colonnes) est requise, le renvoi de la valeur Null ou d’une valeur non valide entraîne l’arrêt de l’appel de la fonction définie par l’utilisateur avec ce code.
Conseil
Utilisez la structure de code Sélectionner la casse de l’exemple comme modèle pour vos propres fonctions définies par l’utilisateur de propriété RowSourceType .
Exemple
La fonction définie par l’utilisateur suivante retourne la liste des quatre lundis suivants la date du jour. Pour appeler cette fonction à partir d’un contrôle de zone de liste, entrez ListMondays comme paramètre de propriété RowSourceType et laissez le paramètre de propriété RowSource vide.
Public Function ListMondays(fld As Control, id As Variant, _
row As Variant, col As Variant, code As Variant) _
As Variant
Dim Offset As Integer
Dim WeekdayDate As Date
Select Case code
Case acLBInitialize ' Initialize.
ListMondays = True
Case acLBOpen ' Open.
ListMondays = Timer ' Unique ID.
Case acLBGetRowCount ' Get rows.
ListMondays = 4
Case acLBGetColumnCount ' Get columns.
ListMondays = 1
Case acLBGetColumnWidth ' Get column width.
ListMondays = -1 ' Use default width.
Case acLBGetValue ' Get the data.
Offset = Abs((9 - Weekday(Date)) Mod 7)
WeekdayDate = DateAdd("d", _
Offset + 7 * row, Date)
ListMondays = Format(WeekdayDate, _
"mmmm d")
End Select
End Function
L'exemple suivant utilise un tableau de taille statique pour enregistrer les noms des bases de données du répertoire courant. Pour appeler cette fonction, tapez ListeDesMDBs comme paramètre de la propriété RowSourceType et laissez le paramètre de la propriété RowSource vierge.
Public Function ListMDBs(fld As Control, id As Variant, _
row As Variant, col As Variant, code As Variant) _
As Variant
Static dbs(127) As String
Static Entries As Integer
Dim ReturnVal As Variant
ReturnVal = Null
Select Case code
Case acLBInitialize ' Initialize.
Entries = 0
dbs(Entries ) = Dir("*.MDB")
Do Until dbs(Entries) = "" Or Entries >= 127
Entries = Entries + 1
dbs(Entries) = Dir
Loop
ReturnVal = Entries
Case acLBOpen ' Open.
' Generate unique ID for control.
ReturnVal = Timer
Case acLBGetRowCount ' Get number of rows.
ReturnVal = Entries
Case acLBGetColumnCount ' Get number of columns.
ReturnVal = 1
Case acLBGetColumnWidth ' Column width.
' -1 forces use of default width.
ReturnVal = -1
Case acLBGetValue ' Get data.
ReturnVal = dbs(row)
Case acLBEnd ' End.
Erase dbs
End Select
ListMDBs = ReturnVal
End Function
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.