OVH Cloud OVH Cloud

Contrôles liste déroulante

3 réponses
Avatar
Eric RENAUD
Bonjour,
J'ai trouvé sur le site http://access.seneque.free.fr, (Raymond MVP) un
exemple de code pour ajouter un élement à un controle de type liste
déroulante.
Je suis en Access 2000
J'ai bien crée un controle zone de liste modifiable avec :
Limiter à liste Oui.
Origine Source : Liste des valeurs

Je n'arrive pas à faire fonctionner cet exemple et si quelqu'un la crée dans
son environnement ,je suis preneur
Private Sub Liste0_NotInList(NouvelleValeur As String, Suite As Integer)
If AjoutValeur(NouvelleValeur) Then
Suite = acDataErrAdded
Else
Suite = acDataErrContinue
End If
End Sub
Private Function AjoutValeur(NouvelleValeur As String) As Boolean
On Error Resume Next
AjoutValeur = False
If Me.ActiveControl.RowSourceType <> "Value List" Then
Exit Function
End If
If MsgBox("Cette valeur ne figure pas dans la liste." & vbCrLf & _
"Voulez-vous l'ajouter ?", vbYesNo, NouvelleValeur & ": Valeur
inconnue") _
= vbYes Then
Me.ActiveControl.RowSource = Me.ActiveControl.RowSource & ";" _
& NouvelleValeur
AjoutValeur = True
Else
Me.ActiveControl.Undo
End If
End Function

3 réponses

Avatar
Le Méruvien
bonjour Eric, je fait la procedure suivante, et ça marche bien
* AJOUT DANS UNE LISTE DEROULANTE **

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

Dim dbs As Database

Dim rcst As DAO.Recordset

If MsgBox("Voulez-vous ajouter ce nom?", vbOKCancel) = vbOK Then

Response = acDataErrAdded

Set dbs = CurrentDb

Set rcst = dbs.OpenRecordset("nom de la table ou est la liste",
dbOpenDynaset)

On Error Resume Next

rcst.AddNew

rcst.Fields![nom du champ dans la table] = NewData

rcst.Update

rcst.Close

Set dbs = Nothing

Else

Response = acDataErrContinue

Me![nom du champ liste D dans le forms].Undo

End If

End Sub

roger



"Eric RENAUD" a écrit dans le message de news:
#
Bonjour,
J'ai trouvé sur le site http://access.seneque.free.fr, (Raymond MVP) un
exemple de code pour ajouter un élement à un controle de type liste
déroulante.
Je suis en Access 2000
J'ai bien crée un controle zone de liste modifiable avec :
Limiter à liste Oui.
Origine Source : Liste des valeurs

Je n'arrive pas à faire fonctionner cet exemple et si quelqu'un la crée
dans

son environnement ,je suis preneur
Private Sub Liste0_NotInList(NouvelleValeur As String, Suite As Integer)
If AjoutValeur(NouvelleValeur) Then
Suite = acDataErrAdded
Else
Suite = acDataErrContinue
End If
End Sub
Private Function AjoutValeur(NouvelleValeur As String) As Boolean
On Error Resume Next
AjoutValeur = False
If Me.ActiveControl.RowSourceType <> "Value List" Then
Exit Function
End If
If MsgBox("Cette valeur ne figure pas dans la liste." & vbCrLf & _
"Voulez-vous l'ajouter ?", vbYesNo, NouvelleValeur & ":
Valeur

inconnue") _
= vbYes Then
Me.ActiveControl.RowSource = Me.ActiveControl.RowSource & ";" _
& NouvelleValeur
AjoutValeur = True
Else
Me.ActiveControl.Undo
End If
End Function




Avatar
Eric RENAUD
Merci
C'est vrai que ca marche bien mais le nouvel item est ajouté 2 fois
"Le Méruvien" a écrit dans le message de news:
403488ff$0$28143$
bonjour Eric, je fait la procedure suivante, et ça marche bien
* AJOUT DANS UNE LISTE DEROULANTE **

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

Dim dbs As Database

Dim rcst As DAO.Recordset

If MsgBox("Voulez-vous ajouter ce nom?", vbOKCancel) = vbOK Then

Response = acDataErrAdded

Set dbs = CurrentDb

Set rcst = dbs.OpenRecordset("nom de la table ou est la liste",
dbOpenDynaset)

On Error Resume Next

rcst.AddNew

rcst.Fields![nom du champ dans la table] = NewData

rcst.Update

rcst.Close

Set dbs = Nothing

Else

Response = acDataErrContinue

Me![nom du champ liste D dans le forms].Undo

End If

End Sub

roger



"Eric RENAUD" a écrit dans le message de news:
#
Bonjour,
J'ai trouvé sur le site http://access.seneque.free.fr, (Raymond MVP) un
exemple de code pour ajouter un élement à un controle de type liste
déroulante.
Je suis en Access 2000
J'ai bien crée un controle zone de liste modifiable avec :
Limiter à liste Oui.
Origine Source : Liste des valeurs

Je n'arrive pas à faire fonctionner cet exemple et si quelqu'un la crée
dans

son environnement ,je suis preneur
Private Sub Liste0_NotInList(NouvelleValeur As String, Suite As Integer)
If AjoutValeur(NouvelleValeur) Then
Suite = acDataErrAdded
Else
Suite = acDataErrContinue
End If
End Sub
Private Function AjoutValeur(NouvelleValeur As String) As Boolean
On Error Resume Next
AjoutValeur = False
If Me.ActiveControl.RowSourceType <> "Value List" Then
Exit Function
End If
If MsgBox("Cette valeur ne figure pas dans la liste." & vbCrLf & _
"Voulez-vous l'ajouter ?", vbYesNo, NouvelleValeur & ":
Valeur

inconnue") _
= vbYes Then
Me.ActiveControl.RowSource = Me.ActiveControl.RowSource & ";" _
& NouvelleValeur
AjoutValeur = True
Else
Me.ActiveControl.Undo
End If
End Function








Avatar
Eric
Bonjour Eric,
A première vue,
Il faut que tu remplaces dans l'instruction:
If Me.ActiveControl.RowSourceType <> "Value List" Then

la chaine "Value List" par "Liste valeurs" et je pense que
tu n'auras plus de problème.

Un autre Eric
-----Message d'origine-----
Bonjour,
J'ai trouvé sur le site http://access.seneque.free.fr,
(Raymond MVP) un

exemple de code pour ajouter un élement à un controle de
type liste

déroulante.
Je suis en Access 2000
J'ai bien crée un controle zone de liste modifiable avec :
Limiter à liste Oui.
Origine Source : Liste des valeurs

Je n'arrive pas à faire fonctionner cet exemple et si
quelqu'un la crée dans

son environnement ,je suis preneur
Private Sub Liste0_NotInList(NouvelleValeur As String,
Suite As Integer)

If AjoutValeur(NouvelleValeur) Then
Suite = acDataErrAdded
Else
Suite = acDataErrContinue
End If
End Sub
Private Function AjoutValeur(NouvelleValeur As String) As
Boolean

On Error Resume Next
AjoutValeur = False
If Me.ActiveControl.RowSourceType <> "Value List" Then
Exit Function
End If
If MsgBox("Cette valeur ne figure pas dans la liste."
& vbCrLf & _

"Voulez-vous l'ajouter ?", vbYesNo,
NouvelleValeur & ": Valeur

inconnue") _
= vbYes Then
Me.ActiveControl.RowSource =
Me.ActiveControl.RowSource & ";" _

&
NouvelleValeur

AjoutValeur = True
Else
Me.ActiveControl.Undo
End If
End Function


.