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

Problemes enregistrement structure lors d'un ajout de valeur dans un menu deroulant

2 réponses
Avatar
cothonx
Bonjour,

J'utilise cette procedure (ci-apres) donn=E9e en son temps par Mr.
Raymond :-)

Probleme : cela marche tres bien tant que l'on reste dans le
formulaire, la liste se met bien =E0 jour et l'on peut selectionner la
valeur que l'on vient d'ajouter dans la liste deroulante.
Mais si je ferme et r=E9-ouvre le formulaire les valeurs ajout=E9es
precedement n'apparaisse plus

Quelqu'un peut m'aider ou m'indiquer une autre maniere de faire des
ajout de valeurs sans utiliser une table li=E9e

Merci pour votre aide

C@th@nx


Code source
----------------------------------------------------------------------------=
----------------------------------------------------------------------------=
----
Private Sub Liste0_NotInList(NouvelleValeur As String, Suite As
Integer)
If AjoutValeur(NouvelleValeur) Then
Suite =3D acDataErrAdded
Else
Suite =3D acDataErrContinue
End If
End Sub
Private Function AjoutValeur(NouvelleValeur As String) As Boolean
On Error Resume Next
AjoutValeur =3D 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") _
=3D vbYes Then
Me.ActiveControl.RowSource =3D Me.ActiveControl.RowSource & ";"
_
& NouvelleValeur
AjoutValeur =3D True
Else
Me.ActiveControl.Undo
End If
End Function

2 réponses

Avatar
Fabien
Bonjour,

J'utilise cette procedure (ci-apres) donnée en son temps par Mr.
Raymond :-)

Probleme : cela marche tres bien tant que l'on reste dans le
formulaire, la liste se met bien à jour et l'on peut selectionner la
valeur que l'on vient d'ajouter dans la liste deroulante.
Mais si je ferme et ré-ouvre le formulaire les valeurs ajoutées
precedement n'apparaisse plus

Quelqu'un peut m'aider ou m'indiquer une autre maniere de faire des
ajout de valeurs sans utiliser une table liée

Merci pour votre aide

@nx


Code source
------------------------------------------------------------------------------------------------------------------------------------------------------------
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

Salut,

Si ta zone de liste est alimentée par une liste de valeurs et non par
une requete, je pense qu'il te faut sauvegarder le formulaire lorsque tu
le quitte.
Docmd.Close acForm,,acSaveYes
Sinon il faut enregistrer la nouvelle valeur dans la table qui contient
les données de ta liste.
Currentdb.execute "Insert [LaTable] ([LeChamp)) values ('" &
LaNouvelleValeur & "';" 'Si Nouvelle valeur est alpha
ou
Currentdb.execute "Insert [LaTable] ([LeChamp)) values (" &
LaNouvelleValeur & ";" 'Si Nouvelle valeur est numérique
@+

Avatar
cothonx
On 14 mai, 08:24, Fabien wrote:



Bonjour,

J'utilise cette procedure (ci-apres) donnée en son temps par Mr.
Raymond :-)

Probleme : cela marche tres bien tant que l'on reste dans le
formulaire, la liste se met bien à jour et l'on peut selectionner la
valeur que l'on vient d'ajouter dans la liste deroulante.
Mais si je ferme et ré-ouvre le formulaire les valeurs ajoutées
precedement n'apparaisse plus

Quelqu'un peut m'aider ou m'indiquer une autre maniere de faire des
ajout de valeurs sans utiliser une table liée

Merci pour votre aide

@nx

Code source
------------------------------------------------------------------------ ---­---------------------------------------------------------------------- -----­------
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, Nouvelle Valeur & ":
Valeur
inconnue") _
               = vbYes Then
        Me.ActiveControl.RowSource = Me.ActiveControl.RowSourc e & ";"
_
                                                   & NouvelleValeur
        AjoutValeur = True
    Else
        Me.ActiveControl.Undo
    End If
End Function


Salut,
Si ta zone de liste est alimentée par une liste de valeurs et non par
une requete, je pense qu'il te faut sauvegarder le formulaire lorsque tu
le quitte.
Docmd.Close acForm,,acSaveYes
Sinon il faut enregistrer la nouvelle valeur dans la table qui contient
les données de ta liste.
Currentdb.execute "Insert [LaTable] ([LeChamp)) values ('" &
LaNouvelleValeur & "';" 'Si Nouvelle valeur est alpha
ou
Currentdb.execute "Insert [LaTable] ([LeChamp)) values (" &
LaNouvelleValeur & ";" 'Si Nouvelle valeur est numérique
@+- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Bonjour,

Merci pour votre reponse

C'est une liste de valeur et j'ai essaye la technique d'enregistrer le
formulaire mais sans succes.> Docmd.Close acForm,,acSaveYes
Il prend en compte le changement tant que le formulaire est ouvert
mais des que je le ferme,et que j'enregistre le formulaire,
les données ajoutées dans le "RowSource" n'apparaissent plus la fois
suivante quand le formulaire s'ouvre.
C'est assez troublant car il faudrait que j'arrive a enregistrer la
nouvelle structure du formulaire mais je pense que l'enregistrement ne
marche pas
tant que le formulaire est actif, donc on se mord la queue.

Dois-je enregistrer les datas dans une variable public et faire les
modifs en mode creation, puis enregistrer ?
Je ne connais pas la procedure

Merci pour vore aide

@nx