OVH Cloud OVH Cloud

liste deroulante

7 réponses
Avatar
le méruvien
bonjour a tous,
dans unj formulaire, j'ai une liste déroulante, avec:
limiter à la liste=oui
sur absence dans liste= procédure ......
cette procedure me propose soit d'ajouter le nom a la liste, soit d'annuler,
mais (je suis chiant!) je voudrai a la place de "annuler", pouvoir
conserver le mot que j'ai saisie, malgres qu'il n'est pas dans la liste,
sans l'ajouter a la liste.
merci

7 réponses

Avatar
tiah
enleve le limiter à liste alors...
Avatar
le méruvien
Non, car si j'enlève limiter a liste, je ne pourrait pas éventuellement
l'ajouter a ma liste !
je veut conserver cette possibilité.



"tiah" a écrit dans le message de news:

enleve le limiter à liste alors...
Avatar
Raymond [mvp]
Bonjour.

dans ta procédure d'ajout, tu fais un
Me.maliste.Rowsource = Me.maliste.Rowsource & "manouvellevaleur" & ";"
il n'y a pas intérêt que ça se produise souvent, sinon.......

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"le méruvien" a écrit dans le message de news:
43663cc9$0$13082$
Non, car si j'enlève limiter a liste, je ne pourrait pas éventuellement
l'ajouter a ma liste !
je veut conserver cette possibilité.



"tiah" a écrit dans le message de news:

enleve le limiter à liste alors...




Avatar
le méruvien
Bonjour Raymond,
Oui, bien sur, cet ajout est tres rare, mais possible, j'arrive pas a faire
marcher ma procédure, ou je dois mettre cette ligne?
là ou je l'ai mise, j'ai un message d'erreur "caractère trouvé après la fin
de l'instruction SQL"
Private Sub désignation_NotInList(NewData As String, Response As Integer)
Dim dbs As Database
Dim rcst As DAO.Recordset

Dim mot As String
mot = NewData

If MsgBox("Voulez-vous ajouter cet désignation?", vbOKCancel) = vbOK
Then
Response = acDataErrAdded
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl liste ingrédients", dbOpenDynaset)
On Error Resume Next
rcst.AddNew
rcst.Fields![désignation] = NewData
rcst.Update
rcst.Close
Set dbs = Nothing
Else
'Response = acDataErrContinue
Me!désignation.RowSource = Me!désignation.RowSource & mot & ";"
'****************************

'Me![désignation].Undo
End If
End Sub



"Raymond [mvp]" a écrit dans le message de
news: %
Bonjour.

dans ta procédure d'ajout, tu fais un
Me.maliste.Rowsource = Me.maliste.Rowsource & "manouvellevaleur" & ";"
il n'y a pas intérêt que ça se produise souvent, sinon.......

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"le méruvien" a écrit dans le message de news:
43663cc9$0$13082$
Non, car si j'enlève limiter a liste, je ne pourrait pas éventuellement
l'ajouter a ma liste !
je veut conserver cette possibilité.



"tiah" a écrit dans le message de news:

enleve le limiter à liste alors...








Avatar
Eric
Bonjour Roger,

L'erreur que tu obtiens est normale puisque le contenu de ta liste
déroulante est une instruction Select (tu peux d'ailleurs le vérifier
dans les propriétés de la combo) du genre Select désignation from
[tbl liste ingrédients];. Celle-ci se termine par un ;(marque de fin
d'instruction SQL) donc en concaténant ta nouvelle valeur ca te génère
cette erreur.

Pour ton problème, je ne vois pas, personnellement, de solution hormis
un bidouillage qui consisterait à mettre une 2eme combo ou une zone de
texte positionnée comme la 1ere qui s'afficherait en récupérant le
NewData alors que la 1ère serait mis à non visible. Mais ca va être
lourd car il faudra faire en permanence la bascule entre les 2 à
l'affichage. Je vois pas trop l'intérêt de conserver cette valeur
puisque tu ne veux pas l'ajouter. Quelle signification a-t-elle donc
pour l'application?

Attendons les experts.

Bonjour Raymond,
Oui, bien sur, cet ajout est tres rare, mais possible, j'arrive pas a faire
marcher ma procédure, ou je dois mettre cette ligne?
là ou je l'ai mise, j'ai un message d'erreur "caractère trouvé après la fin
de l'instruction SQL"
Private Sub désignation_NotInList(NewData As String, Response As Integer)
Dim dbs As Database
Dim rcst As DAO.Recordset

Dim mot As String
mot = NewData

If MsgBox("Voulez-vous ajouter cet désignation?", vbOKCancel) = vbOK
Then
Response = acDataErrAdded
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl liste ingrédients", dbOpenDynaset)
On Error Resume Next
rcst.AddNew
rcst.Fields![désignation] = NewData
rcst.Update
rcst.Close
Set dbs = Nothing
Else
'Response = acDataErrContinue
Me!désignation.RowSource = Me!désignation.RowSource & mot & ";"
'****************************

'Me![désignation].Undo
End If
End Sub



"Raymond [mvp]" a écrit dans le message de
news: %

Bonjour.

dans ta procédure d'ajout, tu fais un
Me.maliste.Rowsource = Me.maliste.Rowsource & "manouvellevaleur" & ";"
il n'y a pas intérêt que ça se produise souvent, sinon.......

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"le méruvien" a écrit dans le message de news:
43663cc9$0$13082$

Non, car si j'enlève limiter a liste, je ne pourrait pas éventuellement
l'ajouter a ma liste !
je veut conserver cette possibilité.



"tiah" a écrit dans le message de news:

enleve le limiter à liste alors...










--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Raymond [mvp]
Bonjour Eric.

je n'avais pas réfléchi sur la requête étant donné que si on rajoute une
valeur dans la liste c'est parce que la liste est en liste de valeurs d'où
.......;
la seule solution est de transformer la source en requête union directement
dans le rowsource, mais s'il y a beaucoup d'ajouts ça va devenir la foire.
autre solution, placer une 2e liste à côté, basée sur une liste de valeurs
et dans ce cas ça fonctionne très bien.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Eric" a écrit dans le message de news:

Bonjour Roger,

L'erreur que tu obtiens est normale puisque le contenu de ta liste
déroulante est une instruction Select (tu peux d'ailleurs le vérifier dans
les propriétés de la combo) du genre Select désignation from
[tbl liste ingrédients];. Celle-ci se termine par un ;(marque de fin
d'instruction SQL) donc en concaténant ta nouvelle valeur ca te génère
cette erreur.

Pour ton problème, je ne vois pas, personnellement, de solution hormis un
bidouillage qui consisterait à mettre une 2eme combo ou une zone de texte
positionnée comme la 1ere qui s'afficherait en récupérant le NewData alors
que la 1ère serait mis à non visible. Mais ca va être lourd car il faudra
faire en permanence la bascule entre les 2 à l'affichage. Je vois pas trop
l'intérêt de conserver cette valeur puisque tu ne veux pas l'ajouter.
Quelle signification a-t-elle donc pour l'application?

Attendons les experts.

Bonjour Raymond,
Oui, bien sur, cet ajout est tres rare, mais possible, j'arrive pas a
faire marcher ma procédure, ou je dois mettre cette ligne?
là ou je l'ai mise, j'ai un message d'erreur "caractère trouvé après la
fin de l'instruction SQL"
Private Sub désignation_NotInList(NewData As String, Response As Integer)
Dim dbs As Database
Dim rcst As DAO.Recordset

Dim mot As String
mot = NewData

If MsgBox("Voulez-vous ajouter cet désignation?", vbOKCancel) = vbOK
Then
Response = acDataErrAdded
Set dbs = CurrentDb
Set rcst = dbs.OpenRecordset("tbl liste ingrédients",
dbOpenDynaset)
On Error Resume Next
rcst.AddNew
rcst.Fields![désignation] = NewData
rcst.Update
rcst.Close
Set dbs = Nothing
Else
'Response = acDataErrContinue
Me!désignation.RowSource = Me!désignation.RowSource & mot & ";"
'****************************

'Me![désignation].Undo
End If
End Sub



"Raymond [mvp]" a écrit dans le message
de news: %

Bonjour.

dans ta procédure d'ajout, tu fais un
Me.maliste.Rowsource = Me.maliste.Rowsource & "manouvellevaleur" & ";"
il n'y a pas intérêt que ça se produise souvent, sinon.......

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"le méruvien" a écrit dans le message de news:
43663cc9$0$13082$

Non, car si j'enlève limiter a liste, je ne pourrait pas éventuellement
l'ajouter a ma liste !
je veut conserver cette possibilité.



"tiah" a écrit dans le message de news:

enleve le limiter à liste alors...










--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr





Avatar
Eric
Bonjour Raymond,

Effectivement, j'avais pensé initialement à une requête Union mais comme
il ne veut pas conserver dans la liste, plus précisemment dans la
requête, cette valeur, j'avais écarté cette idée. D'autant plus que s'il
se trompe en saisie, ca ajoute à chaque fois.
L'idée de la 2eme liste me semble être bonne.

Bonjour Eric.
la seule solution est de transformer la source en requête union directement
dans le rowsource, mais s'il y a beaucoup d'ajouts ça va devenir la foire.
autre solution, placer une 2e liste à côté, basée sur une liste de valeurs
et dans ce cas ça fonctionne très bien.



--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr