J'ai une liste
déroulante basée sur une table. Si l'utilisateur tape une valeur qui ne figure
pas dans la liste, je voudrais l'ajouter automatiquement dans la table (et dans
la liste). Comment faire ?
Pour utiliser ce qui suit, vous avez besoin de savoir taper du code Visual Basic dans un module Access, compiler du code, et exécuter du code.
La liste déroulante est dotée d'un événement "Sur absence dans liste" (NotInList). Voici comment l'utiliser :
Private Sub cmbListe_NotInList(NewData As String, Response As Integer) Dim rst As Recordset If MsgBox("L'élément [" & NewData & "] ne figure pas dans la liste. Voulez-vous l'ajouter ?", vbQuestion + vbYesNo) = vbYes Then ' Ajouter l'élément à la liste Set rst = CurrentDb.OpenRecordset("tblIntitulés") rst.AddNew rst!Intitulé = NewData rst.Update rst.Close Set rst = Nothing End If ' Annuler le message d'erreur d'Access Response = acDataErrAdded End Sub
Le code Visual Basic ajoute l'élément nouveau dans la table (via un
Recordset), puis définit la variable Response à acDataErrAdded
de façon à ce que le message d'erreur d'Access ne se produise pas et que la
liste soit mise à jour.
Pour plus de détails, consultez l'aide en ligne sur l'objet Recordset
et sur l'événement NotInList.