Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ajout d'éléments ds une liste modifiable en mode formulaire

4 réponses
Avatar
Régis
Bonjour,

Lorsque je suis dans un formulaire, je souhaiterais que dans une zone de
liste modifiable, lorsque j'ajoute un nouvel élément qui n'est pas dans la
liste, celui-ci soit automatiquement ajouté à la liste et puisse être
réutilisé dans les fiches suivantes.

En gros, comment faire une list modifiable qui puisse évoluer et se
compléter au fur et à mesure

Merci de votre aide

4 réponses

Avatar
machin
Bonjour,

Régis wrote:
| Bonjour,
|
| Lorsque je suis dans un formulaire, je souhaiterais que dans une zone
| de liste modifiable, lorsque j'ajoute un nouvel élément qui n'est pas
| dans la liste, celui-ci soit automatiquement ajouté à la liste et
| puisse être réutilisé dans les fiches suivantes.
|
| En gros, comment faire une list modifiable qui puisse évoluer et se
| compléter au fur et à mesure
|
| Merci de votre aide

Tu as une zone de liste qui prend ses données dans une table, via une
requête source
Propriétés de la zone de liste concernées :
Origine Source Table/Requête
Contenu : SELECT les champs FROM la table

L'une des colonnes de cette liste est liée à un champ de la table ou de la
requête source du formulaire.

Ainsi, lorsque tu choisis une valeur dans la zone de liste, c'est celle de
la colonne liée qui est prise en compte,

Tu peux autoriser la saisie de valeurs qui ne figurent pas dans la table :
Propriété Limiter à Liste = NON

Dans ce cas il ne se passe rien, la saisie est prise en compte, mais comme
il ne se passe rien, la liste n'est pas mise à jour.

Tu peux interdire la saisie de valeurs qui ne sont pas dans la liste :
Propriété Limiter à Liste = OUI
Si tu ne fais rien de plus, tu auras le message standard d'access qui
interdit la saisie de valeurs nouvelles

Tu peux autoriser la saisie de valeurs qui ne sont pas dans la liste après
une confirmation. C'est tout là l'astuce :
Propriété Limiter à Liste = OUI
Un événement se déclenche, c'est l'événement sur absence dans liste

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

Et c'est dans cet événement qu'on va gérer tout ce qu'on veut faire :

1 - demander si on veut vraiment ajouter une nouvelle valeur

If MsgBox("Voulez-vous vraiment ajouter le client " & NewData & " ?",
vbQuestion + vbYesNo, "Client inexistant") = vbYes Then

2 - si la réponse est NON on inhibe le message d'erreur standard qui arrive
quand la valeur n'est pas dans la liste :

Response = acDataErrContinue

et on interrompt la saisie en cours pour revenir où on en était :
Me!CboClient.Undo puis Exit Sub

3 - si la réponse est OUI on rajoute d'abord la nouvelle valeur dans la
table source de la liste :

CurrentDb.Execute "INSERT INTO TblClients(NomClient) " _
& "SELECT """ & NewData & """ ;"


La valeur est dans la table source, mais l'ajout étant réalisé de manière
indépendante, la zone de liste n'est toujours pas rafraîchie donc on risque avoir un
message comme quoi la valeur n'a pas été trouvée dans la zone de liste.

Il faudrait donc :
a- mémoriser la nouvelle valeur (c'est justement newdata)
b - mettre à blanc la zone de liste me.CboClient.value = ""
c- rafraichir la zone de liste me.cboclient.requery
d - remettre la valeur mémorisée : me.CdoClient.value = newdata
e- inhiber le message d'erreur : response = acdataerrcontinue

Eh bien tout celà, c'est ce qu'on arrive à faire en une seule ligne

Response = acDataErrAdded

Conclusion : regarde l'exemple issu de http://memoaccess.free.fr/forms.htm#NotInList


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

If msgbox("Voulez-vous ajouter la valeur " & NewData & " ?", _
vbYesNo + vbQuestion) = vbYes Then

CurrentDb.Execute "INSERT INTO LaTable(LeChamp) " _
& "SELECT """ & NewData & """ ;"
Response = acDataErrAdded

Else

Response = acDataErrContinue
Me!Combo0.Undo

End If

End Sub
Bonne nuit quand même !
Avatar
3stone
Salut,

"Régis"
Lorsque je suis dans un formulaire, je souhaiterais que dans une zone de
liste modifiable, lorsque j'ajoute un nouvel élément qui n'est pas dans la
liste, celui-ci soit automatiquement ajouté à la liste et puisse être
réutilisé dans les fiches suivantes.

En gros, comment faire une list modifiable qui puisse évoluer et se
compléter au fur et à mesure




Expliqué ici :

http://www.self-access.com/access/grenier/acRedir.php?id




--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
Régis
Merci beaucoup ca fonctionne impécable

Bonsoir
Avatar
Régis
Merci du renseignement
Ca fonctionne

Bonsoir