Table of contents
TOC
Réduire la table des matières
Développer la table des matières

ComboBox.NotInList, événement (Access)ComboBox.NotInList Event (Access)

office 365 dev account|Dernière mise à jour: 30/01/2018
|
2 Collaborateurs

L’événement NotInList se produit quand l’utilisateur entre une valeur dans la zone de texte d’une zone de liste modifiable et que cette valeur ne figure pas dans la liste correspondante.The NotInList event occurs when the user enters a value in the text box portion of a combo box that isn't in the combo box list.

SyntaxeSyntax

expression.expression.NotInList( NewData, Response )NotInList( ** NewData_, ** Response_ )

expression Variable qui représente un objet ComboBox.expression A variable that represents a ComboBox object.

ParamètresParameters

NomNameRequis/FacultatifRequired/OptionalType de donnéesData TypeDescriptionDescription
NewDataNewDataObligatoireRequiredStringStringChaîne que Microsoft Access utilise pour transmettre à la procédure événementielle le texte que l'utilisateur a entré dans la zone de texte de la zone de liste modifiable.A string that Microsoft Access uses to pass the text the user entered in the text box portion of the combo box to the event procedure.
ResponseResponseObligatoireRequiredIntegerIntegerCe paramètre indique comment l’événement NotInList a été géré.The setting indicates how the NotInList event was handled.L’argument Response peut être l’une des constantes intrinsèques suivantes :The Response argument can be one of the following intrinsic constants:
  • acDataErrDisplay (par défaut) Affiche le message par défaut à l’utilisateur.acDataErrDisplay (Default) Displays the default message to the user.Utilisez cette constante quand vous ne voulez pas autoriser l’utilisateur à ajouter une nouvelle valeur à la liste de la zone de liste modifiable.You can use this when you don't want to allow the user to add a new value to the combo box list.
  • acDataErrContinue N’affiche pas le message par défaut à l’utilisateur.acDataErrContinue Doesn't display the default message to the user.Utilisez cette constante quand vous voulez afficher un message personnalisé à l’utilisateur.You can use this when you want to display a custom message to the user.Par exemple, la procédure événementielle peut afficher une boîte de dialogue personnalisée demandant à l’utilisateur s’il souhaite enregistrer la nouvelle entrée.For example, the event procedure could display a custom dialog box asking if the user wanted to save the new entry.Si la réponse est Oui, la procédure événementielle ajoute la nouvelle entrée à la liste et définit l’argument Response sur acDataErrAdded.If the response is Yes, the event procedure would add the new entry to the list and set the Response argument to acDataErrAdded.Si la réponse est Non, la procédure événementielle définit l’argument Response sur acDataErrContinue.If the response is No, the event procedure would set the Response argument to acDataErrContinue.
  • acDataErrAdded N’affiche aucun message à l’utilisateur, mais vous permet d’ajouter l’entrée à la liste de la zone de liste modifiable dans la procédure événementielle NotInList.acDataErrAdded Doesn't display a message to the user but enables you to add the entry to the combo box list in the NotInList event procedure.Une fois l’entrée ajoutée, Microsoft Access met à jour la liste en interrogeant une nouvelle fois la zone de liste modifiable.After the entry is added, Microsoft Access updates the list by re-querying the combo box.Microsoft Access vérifie à nouveau la chaîne par rapport à la liste de la zone de liste modifiable, puis enregistre la valeur dans l’argument NewData dans le champ associé à la zone de liste modifiable.Microsoft Access then rechecks the string against the combo box list, and saves the value in the NewData argument in the field the combo box is bound to.Si la chaîne ne figure pas dans la liste, Microsoft Access affiche un message d’erreur.If the string is not in the list, then Microsoft Access displays an error message.

RemarquesRemarks

Pour exécuter une macro ou une procédure événementielle quand cet événement se produit, affectez le nom de la macro ou [Event Procedure] à la propriété OnNotInList.To run a macro or event procedure when this event occurs, set the OnNotInList property to the name of the macro or to [Event Procedure].

Cet événement permet à l’utilisateur d’ajouter une nouvelle valeur à la liste de la zone de liste modifiable.This event enables the user to add a new value to the combo box list.

La propriété LimitToList doit avoir la valeur Oui pour que l’événement NotInList se produise.The LimitToList property must be set to Yes for the NotInList event to occur.

L’événement NotInList n’entraîne pas l’événement Error.The NotInList event doesn't trigger the Error event.

L’événement NotInList se produit pour les zones de liste modifiable dont la propriété LimitToList a pour valeur Oui, quand vous tapez une valeur qui ne figure pas dans la liste et que vous essayez de vous placer sur un autre contrôle ou de sauvegarder l’enregistrement.The NotInList event occurs for combo boxes whose LimitToList property is set to Yes, after you enter a value that isn't in the list and attempt to move to another control or save the record.Cet événement intervient après tous les événements Change pour la zone de liste modifiable.The event occurs after all the Change events for the combo box.

Quand la propriété AutoExpand est définie sur Oui, Microsoft Access sélectionne les valeurs correspondantes dans la liste quand l’utilisateur entre des caractères dans la zone de texte de la zone de liste modifiable.When the AutoExpand property is set to Yes, Microsoft Access selects matching values in the list as the user enters characters in the text box portion of the combo box.Si les caractères entrés par l’utilisateur correspondent aux premiers caractères d’une valeur de la liste (par exemple, si l’utilisateur entre « Smith » et que « Smithson » est une valeur de la liste), l’événement NotInList n’a pas lieu si l’utilisateur se place sur un autre contrôle ou s’il sauvegarde l’enregistrement.If the characters the user types match the first characters of a value in the list (for example, the user types "Smith" and "Smithson" is a value in the list), the NotInList event will not occur when the user moves to another control or saves the record.Toutefois, les caractères ajoutés par Microsoft Access à la suite des caractères entrés par l’utilisateur (dans l’exemple, « son ») sont sélectionnés dans la zone de texte de la zone de liste modifiable.However, the characters that Microsoft Access adds to the characters the user types (in the example, "son") are selected in the text box portion of the combo box.Si l’utilisateur souhaite que l’événement NotInList se déclenche dans ces cas de figure (par exemple, l’utilisateur souhaite ajouter le nouveau nom « Smith » à la zone de liste modifiable), l’utilisateur peut entrer un caractère ESPACE, RETOUR ARRIÈRE ou SUPPR après le dernier caractère de la nouvelle valeur.If the user wants the NotInList event to fire in such cases (for example, the user wants to add the new name "Smith" to the combo box list), the user can enter a SPACE, BACKSPACE, or DEL character after the last character in the new value.

Quand la propriété LimitToList est définie sur Oui et que la zone de liste modifiable est déroulée, Microsoft Access sélectionne les valeurs correspondantes dans la liste au fur et à mesure que l’utilisateur entre des caractères dans la zone de texte de la zone de liste modifiable, même si la propriété AutoExpand est définie sur Non.When the LimitToList property is set to Yes and the combo box list is dropped down, Microsoft Access selects matching values in the list as the user enters characters in the text box portion of the combo box, even if the AutoExpand property is set to No.Si l’utilisateur appuie sur ENTRÉE ou se place sur un autre contrôle ou enregistrement, la valeur sélectionnée apparaît dans la zone de liste modifiable.If the user presses ENTER or moves to another control or record, the selected value appears in the combo box.Dans ce cas, l’événement NotInList ne se déclenche pas.In this case, the NotInList event will not fire.Pour autoriser l’événement NotInList à se déclencher, l’utilisateur ne doit pas dérouler la zone de liste modifiable.To allow the NotInList event to fire, the user should not drop down the combo box list.

ExempleExample

L’exemple suivant utilise l’événement NotInList pour ajouter un élément à une zone de liste modifiable.The following example uses the NotInList event to add an item to a combo box.

Pour tester cet exemple, créez une zone de liste modifiable appelée Colors (Couleurs) dans un formulaire.To try this example, create a combo box called Colors on a form.Définissez la propriété LimitToList de la zone de liste modifiable sur Oui.Set the combo box's LimitToList property to Yes.Pour remplir la zone de liste modifiable, définissez la propriété RowSourceType de la zone de liste modifiable sur Value List, et fournissez une liste de valeurs séparées par des points-virgules pour le paramètre de la propriété RowSource.To populate the combo box, set the combo box's RowSourceType property to Value List, and supply a list of values separated by semicolons as the setting for the RowSource property.Par exemple, vous pouvez fournir les valeurs suivantes pour le paramètre de cette propriété : Rouge ; Vert ; Bleu.For example, you might supply the following values as the setting for this property: Red; Green; Blue.

Ensuite, ajoutez la procédure événementielle suivante au formulaire. Passez en mode Formulaire et entrez une nouvelle valeur dans l’espace réservé au texte de la zone de liste modifiable.Next add the following event procedure to the form. Switch to Form view and enter a new value in the text portion of the combo box.

RemarqueNote
L’exemple précédent ajoute un élément à une zone de liste modifiable indépendante. Dans ce cas, vous ajoutez une valeur à un champ de la source de données sous-jacente. La plupart du temps, vous ne pouvez pas ajouter simplement un champ dans un nouvel enregistrement : selon la structure des données de la table, vous devrez probablement ajouter un ou plusieurs champs pour satisfaire aux conditions requises par les données. Par exemple, un nouvel enregistrement doit inclure des valeurs pour les champs comportant la clé primaire. Si vous avez besoin d’ajouter en temps réel des éléments à une zone de liste modifiable, vous devez demander à l’utilisateur d’entrer des données pour tous les champs requis, d’enregistrer le nouvel enregistrement, puis d’actualiser la zone de liste modifiable pour afficher la nouvelle valeur.This example adds an item to an unbound combo box. When you add an item to a bound combo box, you add a value to a field in the underlying data source. In most cases you can't simply add one field in a new record ? depending on the structure of data in the table, you probably will need to add one or more fields to fulfill data requirements. For instance, a new record must include values for any fields comprising the primary key. If you need to add items to a bound combo box dynamically, you must prompt the user to enter data for all required fields, save the new record, and then re-query the combo box to display the new value.
Private Sub Colors_NotInList(NewData As String, _ 
        Response As Integer) 
    Dim ctl As Control 

    ' Return Control object that points to combo box. 
    Set ctl = Me!Colors 
    ' Prompt user to verify they wish to add new value. 
    If MsgBox("Value is not in list. Add it?", _ 
         vbOKCancel) = vbOK Then 
        ' Set Response argument to indicate that data 
        ' is being added. 
        Response = acDataErrAdded 
        ' Add string in NewData argument to row source. 
        ctl.RowSource = ctl.RowSource &; ";" &; NewData 
    Else 
    ' If user chooses Cancel, suppress error message 
    ' and undo changes. 
        Response = acDataErrContinue 
        ctl.Undo 
    End If 
End Sub

L’exemple suivant montre comment utiliser l’événement NotInList pour ajouter un élément à une zone de liste modifiable liée.The following example shows how to use the NotInList event to add an item to a bound combo box.

Exemple de code fourni par : Bill Jelen, MrExcel.comSample code provided by: Bill Jelen, MrExcel.com

Private Sub cboDept_NotInList(NewData As String, Response As Integer)
    Dim oRS As DAO.Recordset, i As Integer, sMsg As String
    Dim oRSClone As DAO.Recordset

    Response = acDataErrContinue

    If MsgBox("Add dept?", vbYesNo) = vbYes Then
        Set oRS = CurrentDb.OpenRecordset("tblDepartments", dbOpenDynaset)
        oRS.AddNew
        oRS.Fields(1) = NewData
        For i = 2 To oRS.Fields.Count - 1
            sMsg = "What do you want for " &; oRS(i).Name
            oRS(i).Value = InputBox(sMsg, , oRS(i).DefaultValue)
        Next i
        oRS.Update
        cboDept = Null
        cboDept.Requery
        DoCmd.OpenTable "tblDepartments", acViewNormal, acReadOnly
        DoCmd.GoToRecord acDataTable, "tblDepartments", acLast
    End If
End Sub

L’exemple suivant montre comment ajouter un élément à une zone de liste modifiable liée.The following example shows how to add an item to a bound combo box.

Exemple de code fourni par :Référence du programmeur Microsoft Access 2010Sample code provided by: The Microsoft Access 2010 Programmer's Reference

Private Sub cboMainCategory_NotInList(NewData As String, Response As Integer)

    On Error GoTo Error_Handler
    Dim intAnswer As Integer
    intAnswer = MsgBox("""" &; NewData &; """ is not an approved category. " &; vbcrlf _
        &; "Do you want to add it now?" _ vbYesNo + vbQuestion, "Invalid Category")

    Select Case intAnswer
        Case vbYes
            DoCmd.SetWarnings False
            DoCmd.RunSQL "INSERT INTO tlkpCategoryNotInList (Category) "
                &; _ "Select """ &; NewData &; """;"
            DoCmd.SetWarnings True
            Response = acDataErrAdded
        Case vbNo
            MsgBox "Please select an item from the list.", _
                vbExclamation + vbOKOnly, "Invalid Entry"
            Response = acDataErrContinue

    End Select

    Exit_Procedure:
        DoCmd.SetWarnings True
        Exit Sub

    Error_Handler:
        MsgBox Err.Number &; ", " &; Error Description
        Resume Exit_Procedure
        Resume

End Sub

À propos des collaborateursAbout the Contributors

Holy Macro! Books publie des livres divertissants pour les personnes qui utilisent Microsoft Office. Vous pouvez consulter le catalogue complet sur MrExcel.com.Holy Macro! Books publishes entertaining books for people who use Microsoft Office. See the complete catalog at MrExcel.com.

Wrox Press est guidé par la philosophie de programmeur à programmeur. Les livres Wrox sont écrits par des programmeurs pour des programmeurs et la marque Wrox est synonyme de solutions de référence aux problèmes de programmation concrets.Wrox Press is driven by the Programmer to Programmer philosophy. Wrox books are written by programmers for programmers, and the Wrox brand means authoritative solutions to real-world programming problems.

Voir aussiSee also

ConceptsConcepts

ComboBox, objetComboBox Object

© 2018 Microsoft