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

modifier rowsource d'une table

10 réponses
Avatar
kimai
Bonjour,

J'aimerais savoir comment modifier le rowsource d'une=20
table (en mode cr=E9ation pour un champ texte : zone de=20
liste modifiable, Origine source :"liste de valeurs" et=20
contenu "valeur1";"valeur2"; etc?) depuis un formulaire,=20
donc en VB

J'arrive tr=E8s bien =E0 utiliser la propri=E9t=E9 Rowsource pour=20
modifier le contenu de la liste de mon formulaire avec une=20
proc=E9dure =E9vennementielle sur "Absence dans liste", mais=20
lorsque je ferme le formulaire, ce que j'avais ajout=E9 =E0 ma=20
liste a disparu. Voila le code que j'utilise :

-------------------
Private Sub carac_particuliere_NotInList(NewData As=20
String, Response As Integer)

'Supprimer les messages d'informations d'ACCESS
DoCmd.SetWarnings False

Dim rep As Integer
rep =3D MsgBox("Cet =E9l=E9ment n'existe pas dans la liste=20
d=E9roulante. Voulez-vous l'ajouter ?", vbExclamation +=20
vbYesNo, "El=E9ment pas dans la liste")
If rep =3D 6 Then
Response =3D acDataErrAdded
carac_particuliere.RowSource =3D=20
carac_particuliere.RowSource & ";" & NewData

Else
Response =3D acDataErrContinue
Me.carac_particuliere.Undo
End If

DoCmd.SetWarnings True
End Sub
-------------------

C'est pourquoi j'aimerais modifier la propri=E9t=E9 Rowsource=20
de ma table, et non pas de ma liste du formulaire pour que=20
cela soit d=E9finitif !
Si quelqu'un sait comment faire...

Merci d'avance
Kimai

10 réponses

Avatar
André AVONS
Salut
Au lieu de mettre une liste de valeur , mets une table
sur absence tu ajoutes l'element a la table

--
@+
André

Quelques liens avec des exemples, des utilitaires et des compléments pour
Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" a écrit dans le message de
news:054c01c35ff3$04b8afd0$
Bonjour,

J'aimerais savoir comment modifier le rowsource d'une
table (en mode création pour un champ texte : zone de
liste modifiable, Origine source :"liste de valeurs" et
contenu "valeur1";"valeur2"; etc?) depuis un formulaire,
donc en VB

J'arrive très bien à utiliser la propriété Rowsource pour
modifier le contenu de la liste de mon formulaire avec une
procédure évennementielle sur "Absence dans liste", mais
lorsque je ferme le formulaire, ce que j'avais ajouté à ma
liste a disparu. Voila le code que j'utilise :

-------------------
Private Sub carac_particuliere_NotInList(NewData As
String, Response As Integer)

'Supprimer les messages d'informations d'ACCESS
DoCmd.SetWarnings False

Dim rep As Integer
rep = MsgBox("Cet élément n'existe pas dans la liste
déroulante. Voulez-vous l'ajouter ?", vbExclamation +
vbYesNo, "Elément pas dans la liste")
If rep = 6 Then
Response = acDataErrAdded
carac_particuliere.RowSource carac_particuliere.RowSource & ";" & NewData

Else
Response = acDataErrContinue
Me.carac_particuliere.Undo
End If

DoCmd.SetWarnings True
End Sub
-------------------

C'est pourquoi j'aimerais modifier la propriété Rowsource
de ma table, et non pas de ma liste du formulaire pour que
cela soit définitif !
Si quelqu'un sait comment faire...

Merci d'avance
Kimai
Avatar
André AVONS
Salut
du style
Private Sub ListeModifiable_NotInList(NewData As String, Response As
Integer)
On Error GoTo erreur
Dim mdb As Database, strSQL As String, Reponse As Integer

'Efface la valeur entree dans la liste modifiable
DoCmd.DoMenuItem A_FORMBAR, A_EDIT, A_UNDOFIELD, , A_MENU_VER20

'Si on fait entree avec la zone modifiable vide
If NewData = "" Then Exit Sub

'Message choix creation article
Reponse = MsgBox("Voulez vous ajouter cet article : " & NewData, vbYesNo +
vbQuestion, "Ajout article")
If Reponse = vbYes Then
Set mdb = CurrentDb
'Ajoute la nouvelle valeur DANS LA TABLE
strSQL = "INSERT INTO Table1 (Champ1)" _
& " VALUES('" & NewData & "')"

'DoCmd.RunSQL strsql, 0
mdb.Execute strSQL


Response = acDataErrAdded
End If
'ACTUALISE LA LISTE avec la nouvelle valeur
Me.Requery

Set mdb = Nothing
Exit Sub

'Gere l'erreur si on repond non a l'ajout de l'enregistrement
erreur:
Response = acDataErrContinue

End Sub

--
@+
André

Quelques liens avec des exemples, des utilitaires et des compléments pour
Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" a écrit dans le message de
news:054c01c35ff3$04b8afd0$
Bonjour,

J'aimerais savoir comment modifier le rowsource d'une
table (en mode création pour un champ texte : zone de
liste modifiable, Origine source :"liste de valeurs" et
contenu "valeur1";"valeur2"; etc?) depuis un formulaire,
donc en VB

J'arrive très bien à utiliser la propriété Rowsource pour
modifier le contenu de la liste de mon formulaire avec une
procédure évennementielle sur "Absence dans liste", mais
lorsque je ferme le formulaire, ce que j'avais ajouté à ma
liste a disparu. Voila le code que j'utilise :

-------------------
Private Sub carac_particuliere_NotInList(NewData As
String, Response As Integer)

'Supprimer les messages d'informations d'ACCESS
DoCmd.SetWarnings False

Dim rep As Integer
rep = MsgBox("Cet élément n'existe pas dans la liste
déroulante. Voulez-vous l'ajouter ?", vbExclamation +
vbYesNo, "Elément pas dans la liste")
If rep = 6 Then
Response = acDataErrAdded
carac_particuliere.RowSource carac_particuliere.RowSource & ";" & NewData

Else
Response = acDataErrContinue
Me.carac_particuliere.Undo
End If

DoCmd.SetWarnings True
End Sub
-------------------

C'est pourquoi j'aimerais modifier la propriété Rowsource
de ma table, et non pas de ma liste du formulaire pour que
cela soit définitif !
Si quelqu'un sait comment faire...

Merci d'avance
Kimai
Avatar
kimai
Merci beaucoup, tu es la première personne à me proposer
une solution à mon problème !!
Je vais essayer de mettre en ouevre ce code, et je
t'envoie un message pour le résultat
Merci encore
Kimai


-----Message d'origine-----
Salut
Copies dans nouveau module
Function AjoutListeValeurChamp(table As String, Champ As
String , Liste as

string _
, Optional NomBase As String)
'Exemple de valeur liste : Liste = "'A';'B';'C';'D'"

'Nombase chemin complet de la base
On Error GoTo AjoutListeValeurChamp_Error

Dim bds As Database, CheminBase As String
Dim tdf As TableDef, fld As Field, chp As Field
Dim wrkJet As Workspace

If IsNull(NomBase) Or IsEmpty(NomBase) Or NomBase
= "" Then

CheminBase = CurrentDb.Name
Else
CheminBase = BaseEnCour() & NomBase
End If

Set wrkJet = CreateWorkspace("", "admin", "",
dbUseJet)

Set bds = wrkJet.OpenDatabase(CheminBase)

' Crée un nouvel objet TableDef.
Set tdf = bds.TableDefs(table)

Set chp = tdf.Fields(Champ)

Call DéfinirPropriété(chp, "RowSource", dbText, Liste)
Call DéfinirPropriété(chp, "LimitToList", dbBoolean,
True)


Fin:

bds.Close
wrkJet.Close
Set fld = Nothing
Set bds = Nothing
Set chp = Nothing
Set tdf = Nothing
Set wrkJet = Nothing

Exit Function

AjoutListeValeurChamp_Error:

MsgBox "Error " & Err.Number & " (" & Err.Description
& ") in procedure

AjoutListeValeurChamp of Module Ajout Champ dans Table"
Resume Fin

End Function
Function DéfinirPropriété(obj As Object, _
chNom As String, entType As Integer, _
varSetting As Variant) As Boolean
On Error GoTo ErrorDéfinirPropriétéAccess

Dim prp As Property
Const conPropNotFound As Integer = 3270 'Prop non définie.

' Se réfère explicitement à la collection properties.
obj.Properties(chNom) = varSetting
obj.Properties.Refresh
DéfinirPropriété = True

SortieDéfinirPropriétéAccess:
Exit Function

ErrorDéfinirPropriétéAccess:
If Err = conPropNotFound Then
' Crée une propriété, précise le type et définit
une valeur

initiale.
Set prp = obj.CreateProperty(chNom, entType,
varSetting)

' Ajoute l'objet Property à la collection
Properties.

obj.Properties.Append prp
obj.Properties.Refresh
DéfinirPropriété = True
Resume SortieDéfinirPropriétéAccess
Else
MsgBox Err & ": " & Err.Number & vbCrLf &
Err.Description

DéfinirPropriété = False
Resume SortieDéfinirPropriétéAccess
End If
End Function


--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"Kimai" a écrit dans le message de
news:036101c35ff9$2c875d30$
Merci pour ta réponse:

Je suis d'accord avec toi, cela simplifie lse choses. J'ai
fais cette manip lorsue je pense intéressant de créer une
table pour y entrer une liste.
Mais je voulais éviter de créer un table à chaque fois que
je voulais faire une liste déroulante.

On ne peut donc pas accéder à ce fichu rowsource de la
table ??

Merci de ta réponse !
A bientot peut-etre
Kimai
-----Message d'origine-----
Salut
Au lieu de mettre une liste de valeur , mets une table
sur absence tu ajoutes l'element a la table

--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" a écrit dans le message de
news:054c01c35ff3$04b8afd0$
Bonjour,

J'aimerais savoir comment modifier le rowsource d'une
table (en mode création pour un champ texte : zone de
liste modifiable, Origine source :"liste de valeurs" et
contenu "valeur1";"valeur2"; etc?) depuis un formulaire,
donc en VB

J'arrive très bien à utiliser la propriété Rowsource pour
modifier le contenu de la liste de mon formulaire avec
une


procédure évennementielle sur "Absence dans liste", mais
lorsque je ferme le formulaire, ce que j'avais ajouté à
ma


liste a disparu. Voila le code que j'utilise :

-------------------
Private Sub carac_particuliere_NotInList(NewData As
String, Response As Integer)

'Supprimer les messages d'informations d'ACCESS
DoCmd.SetWarnings False

Dim rep As Integer
rep = MsgBox("Cet élément n'existe pas dans la liste
déroulante. Voulez-vous l'ajouter ?", vbExclamation +
vbYesNo, "Elément pas dans la liste")
If rep = 6 Then
Response = acDataErrAdded
carac_particuliere.RowSource =
carac_particuliere.RowSource & ";" & NewData

Else
Response = acDataErrContinue
Me.carac_particuliere.Undo
End If

DoCmd.SetWarnings True
End Sub
-------------------

C'est pourquoi j'aimerais modifier la propriété Rowsource
de ma table, et non pas de ma liste du formulaire pour
que


cela soit définitif !
Si quelqu'un sait comment faire...

Merci d'avance
Kimai



.




.




Avatar
André AVONS
Salut
1)D'abord il faut trouver ou il y a l'erreur de compilation
2)Mets le code quz je t'ai envoyer pour ajouter une valeur a la table
Tu enleves la partie Ajout que tu remplaces par ton call
3) la liste passes la par une variable
liste = "'A';"B"
Call AjoutListeValeurChamp("T_diagnostic","PDM",Liste)
5) J'ai oublie un module
Public Function BaseEnCour() As String
On Error GoTo BaseEnCour_Error

BaseEnCour = Left(CurrentDb.Name, InStrRev(CurrentDb.Name, ""))

Fin:
Exit Function

BaseEnCour_Error:
RepBaseCarte = "Erreur"
MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") " _
& "dans procedure BaseEnCour du Module Repertoire base en cour"
Resume Fin
End Function
'================================================== 'Si ta version ne gere pas instrrev Code de Anor
'================================================== 'Public Function InStrRev(ByVal sIn As String, sFind As String, _
'Optional nStart As Long = 1, Optional bCompare As _
'Long = vbBinaryCompare) As Long
'
' Dim nPos As Long
' sIn = StrReverse(sIn)
' sFind = StrReverse(sFind)
' nPos = InStr(nStart, sIn, sFind, bCompare)
' If nPos = 0 Then
' InStrRev = 0
' Else
' InStrRev = Len(sIn) - nPos - Len(sFind) + 2
' End If
'End Function
'
'Public Function StrReverse(ByVal sIn As String) As String
' Dim nC As Integer, sOut As String
' For nC = Len(sIn) To 1 Step -1
' sOut = sOut & Mid(sIn, nC, 1)
' Next
' StrReverse = sOut
'End Function


6)Si tu n' y arrives pas envoies moi une base avec le form et la table ou
les tables
--
@+
André

Quelques liens avec des exemples, des utilitaires et des compléments pour
Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" a écrit dans le message de
news:076e01c36008$971163d0$
Re_salut ! (:-D)

J'ai copié le code dans un nouveau module
Mais je ne sais pas trop comment le faire fonctionner :
J'ai essayé cela :
----------
Private Sub PDM_NotInList(NewData As String, Response As
Integer)
Call AjoutListeValeurChamp
("T_diagnostic","PDM","'A';'B';'C';'D'")
End Sub
----------

cad sur ma liste basée sur le champ PDM , avec la
propriété "Limiter à liste" = oui,
"sur absence dans liste", je veux remplacer mon rowsource
du champ PDM de la table T_diagnostic par "'A';'B';'C';'D'"

Mais access me met ce message d'erreur :
"Erreur de compilation: Variable ou procédure attendue, et
non un module"
Alors j'ai essayé de lancer à la place une macro qui me
lancerai le module ('ExecuterCode'), sans succes...

Qu'est-ce-qui pourrait clocher ??
Avatar
kimai
Helloo

J'ai fais ce que tu m'as dit, cad que j'ai copié toutes
les fonctions dans le module de classe de mon formulaire.

Tout fonctionne comme sur des roulettes : lorsque j'ajoute
un élément qui n'est pas dans la liste, le rowsource de la
table a bien été changé. (je n'utilise plus l'ex "'A';'B'"
mais liste = PDM.RowSource & ";" & NewData)

Par contre, il me reste à réactualiser ma liste déroulante
de mon formulaire : Comment faire pour que cette liste me
renvoie les valeurs écrite dans la définition de la table ?

J'ai essayé un Me![PDM].Requery sans succes

Merci encore !!!
On y est presque !!!!

kimai
Avatar
André AVONS
Salut
Private Sub Pdm_NotInList(NewData As String, Response As Integer)
On Error GoTo erreur
Dim mdb As Database, strSQL As String, Reponse As Integer,liste as string

'Efface la valeur entree dans la liste modifiable
DoCmd.DoMenuItem A_FORMBAR, A_EDIT, A_UNDOFIELD, , A_MENU_VER20

'Si on fait entree avec la zone modifiable vide
If NewData = "" Then Exit Sub

'Message choix creation article
Reponse = MsgBox("Voulez vous ajouter cet article : " & NewData, vbYesNo +
vbQuestion, "Ajout article")
If Reponse = vbYes Then
liste = me.PDM.RowSource & ";" & NewData
Call AjoutListeValeurChamp("T_diagnostic","PDM",Liste)
Response = acDataErrAdded
End If

'ACTUALISE LA LISTE avec la nouvelle valeur
Me.Requery
Exit Sub

'Gere l'erreur si on repond non a l'ajout de l'enregistrement
erreur:
Response = acDataErrContinue

End Sub


--
@+
André

Quelques liens avec des exemples, des utilitaires et des compléments pour
Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" a écrit dans le message de
news:00d201c36021$a84e5900$
Helloo

J'ai fais ce que tu m'as dit, cad que j'ai copié toutes
les fonctions dans le module de classe de mon formulaire.

Tout fonctionne comme sur des roulettes : lorsque j'ajoute
un élément qui n'est pas dans la liste, le rowsource de la
table a bien été changé. (je n'utilise plus l'ex "'A';'B'"
mais liste = PDM.RowSource & ";" & NewData)

Par contre, il me reste à réactualiser ma liste déroulante
de mon formulaire : Comment faire pour que cette liste me
renvoie les valeurs écrite dans la définition de la table ?

J'ai essayé un Me![PDM].Requery sans succes

Merci encore !!!
On y est presque !!!!

kimai
Avatar
kimai
Salut,

J'ai essayé avec le code que tu m'as envoyé, sans succès...
il faudrait que je puisse écrire quelque chose du type :
"rowsource de la liste du formulaire" = "rowsource de la
liste de la table"

Je sais faire pour le formulaire : c'est Me!
[PDM].rowsource = "truc"

Et je ne sais pas faire pour la table. Je devrais pouvoir
le trouver dans ton code, puisque celui ci modifie le
rowsource de la table, mais je n'y arrive pas (il y a
beaucoup d'intermédiaire pour arriver à
obj.propertie.quelque_chose....

Il y a une autre solution : celle que j'avais essayé tout
au début, cad tout simplement: (après un msgbox)
PDM.RowSource = PDM.RowSource & ";" & NewData
Cela evite de trafique la table elle-même (on ne touche
qu'a la liste du formaulaire) et cela fonctionne très
bien : apresvalidation de la boite de dialogue, il y a un
nouvel élément dans la liste. MAIS

Le seul GROS pbm ,c'est que lorsqu'on ferme et qu'on ré-
ouvre le formulaire, ce nouvel élément a disparu !!!!
Comment le sauvegarder ???

Merci encore pour toutes tes réponses.
Si cela t'embête trop, dis moi et je prendrai une décision
draconienne : permettre simplement l'ajout sans enrichir
la liste...

A +
Kimai






-----Message d'origine-----
Salut
Private Sub Pdm_NotInList(NewData As String, Response As
Integer)

On Error GoTo erreur
Dim mdb As Database, strSQL As String, Reponse As
Integer,liste as string


'Efface la valeur entree dans la liste modifiable
DoCmd.DoMenuItem A_FORMBAR, A_EDIT, A_UNDOFIELD, ,
A_MENU_VER20


'Si on fait entree avec la zone modifiable vide
If NewData = "" Then Exit Sub

'Message choix creation article
Reponse = MsgBox("Voulez vous ajouter cet article : " &
NewData, vbYesNo +

vbQuestion, "Ajout article")
If Reponse = vbYes Then
liste = me.PDM.RowSource & ";" & NewData
Call AjoutListeValeurChamp("T_diagnostic","PDM",Liste)
Response = acDataErrAdded
End If

'ACTUALISE LA LISTE avec la nouvelle valeur
Me.Requery
Exit Sub

'Gere l'erreur si on repond non a l'ajout de
l'enregistrement

erreur:
Response = acDataErrContinue

End Sub


--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" a écrit dans le message de
news:00d201c36021$a84e5900$
Helloo

J'ai fais ce que tu m'as dit, cad que j'ai copié toutes
les fonctions dans le module de classe de mon formulaire.

Tout fonctionne comme sur des roulettes : lorsque j'ajoute
un élément qui n'est pas dans la liste, le rowsource de la
table a bien été changé. (je n'utilise plus l'ex "'A';'B'"
mais liste = PDM.RowSource & ";" & NewData)

Par contre, il me reste à réactualiser ma liste déroulante
de mon formulaire : Comment faire pour que cette liste me
renvoie les valeurs écrite dans la définition de la
table ?


J'ai essayé un Me![PDM].Requery sans succes

Merci encore !!!
On y est presque !!!!

kimai


.



Avatar
kimai
Salut,
Je t'ai envoyé un mail avec la base et toutes les
explications nécessaires
Merci encore pour ton aide précieuse
kimai


-----Message d'origine-----
Salut
envoies moi le formulaire et la ou les tables
anisi que les modules
Il ne sera pas dit que l'on a pas essaye

--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" a écrit dans le message de
news:02b401c3602c$4922c9b0$
Salut,

J'ai essayé avec le code que tu m'as envoyé, sans
succès...

il faudrait que je puisse écrire quelque chose du type :
"rowsource de la liste du formulaire" = "rowsource de la
liste de la table"

Je sais faire pour le formulaire : c'est Me!
[PDM].rowsource = "truc"

Et je ne sais pas faire pour la table. Je devrais pouvoir
le trouver dans ton code, puisque celui ci modifie le
rowsource de la table, mais je n'y arrive pas (il y a
beaucoup d'intermédiaire pour arriver à
obj.propertie.quelque_chose....

Il y a une autre solution : celle que j'avais essayé tout
au début, cad tout simplement: (après un msgbox)
PDM.RowSource = PDM.RowSource & ";" & NewData
Cela evite de trafique la table elle-même (on ne touche
qu'a la liste du formaulaire) et cela fonctionne très
bien : apresvalidation de la boite de dialogue, il y a un
nouvel élément dans la liste. MAIS

Le seul GROS pbm ,c'est que lorsqu'on ferme et qu'on ré-
ouvre le formulaire, ce nouvel élément a disparu !!!!
Comment le sauvegarder ???

Merci encore pour toutes tes réponses.
Si cela t'embête trop, dis moi et je prendrai une décision
draconienne : permettre simplement l'ajout sans enrichir
la liste...

A +
Kimai






-----Message d'origine-----
Salut
Private Sub Pdm_NotInList(NewData As String, Response As
Integer)

On Error GoTo erreur
Dim mdb As Database, strSQL As String, Reponse As
Integer,liste as string


'Efface la valeur entree dans la liste modifiable
DoCmd.DoMenuItem A_FORMBAR, A_EDIT, A_UNDOFIELD, ,
A_MENU_VER20


'Si on fait entree avec la zone modifiable vide
If NewData = "" Then Exit Sub

'Message choix creation article
Reponse = MsgBox("Voulez vous ajouter cet article : " &
NewData, vbYesNo +

vbQuestion, "Ajout article")
If Reponse = vbYes Then
liste = me.PDM.RowSource & ";" & NewData
Call AjoutListeValeurChamp("T_diagnostic","PDM",Liste)
Response = acDataErrAdded
End If

'ACTUALISE LA LISTE avec la nouvelle valeur
Me.Requery
Exit Sub

'Gere l'erreur si on repond non a l'ajout de
l'enregistrement

erreur:
Response = acDataErrContinue

End Sub


--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" a écrit dans le message de
news:00d201c36021$a84e5900$
Helloo

J'ai fais ce que tu m'as dit, cad que j'ai copié toutes
les fonctions dans le module de classe de mon formulaire.

Tout fonctionne comme sur des roulettes : lorsque
j'ajoute


un élément qui n'est pas dans la liste, le rowsource de
la


table a bien été changé. (je n'utilise plus
l'ex "'A';'B'"


mais liste = PDM.RowSource & ";" & NewData)

Par contre, il me reste à réactualiser ma liste
déroulante


de mon formulaire : Comment faire pour que cette liste me
renvoie les valeurs écrite dans la définition de la
table ?


J'ai essayé un Me![PDM].Requery sans succes

Merci encore !!!
On y est presque !!!!

kimai


.




.




Avatar
André AVONS
Salut
Ok je regarde ca en debut d'apres midi

--
@+
André

Quelques liens avec des exemples, des utilitaires et des compléments pour
Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" a écrit dans le message de
news:097c01c360ac$a62686d0$
Salut,
Je t'ai envoyé un mail avec la base et toutes les
explications nécessaires
Merci encore pour ton aide précieuse
kimai


-----Message d'origine-----
Salut
envoies moi le formulaire et la ou les tables
anisi que les modules
Il ne sera pas dit que l'on a pas essaye

--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" a écrit dans le message de
news:02b401c3602c$4922c9b0$
Salut,

J'ai essayé avec le code que tu m'as envoyé, sans
succès...

il faudrait que je puisse écrire quelque chose du type :
"rowsource de la liste du formulaire" = "rowsource de la
liste de la table"

Je sais faire pour le formulaire : c'est Me!
[PDM].rowsource = "truc"

Et je ne sais pas faire pour la table. Je devrais pouvoir
le trouver dans ton code, puisque celui ci modifie le
rowsource de la table, mais je n'y arrive pas (il y a
beaucoup d'intermédiaire pour arriver à
obj.propertie.quelque_chose....

Il y a une autre solution : celle que j'avais essayé tout
au début, cad tout simplement: (après un msgbox)
PDM.RowSource = PDM.RowSource & ";" & NewData
Cela evite de trafique la table elle-même (on ne touche
qu'a la liste du formaulaire) et cela fonctionne très
bien : apresvalidation de la boite de dialogue, il y a un
nouvel élément dans la liste. MAIS

Le seul GROS pbm ,c'est que lorsqu'on ferme et qu'on ré-
ouvre le formulaire, ce nouvel élément a disparu !!!!
Comment le sauvegarder ???

Merci encore pour toutes tes réponses.
Si cela t'embête trop, dis moi et je prendrai une décision
draconienne : permettre simplement l'ajout sans enrichir
la liste...

A +
Kimai






-----Message d'origine-----
Salut
Private Sub Pdm_NotInList(NewData As String, Response As
Integer)

On Error GoTo erreur
Dim mdb As Database, strSQL As String, Reponse As
Integer,liste as string


'Efface la valeur entree dans la liste modifiable
DoCmd.DoMenuItem A_FORMBAR, A_EDIT, A_UNDOFIELD, ,
A_MENU_VER20


'Si on fait entree avec la zone modifiable vide
If NewData = "" Then Exit Sub

'Message choix creation article
Reponse = MsgBox("Voulez vous ajouter cet article : " &
NewData, vbYesNo +

vbQuestion, "Ajout article")
If Reponse = vbYes Then
liste = me.PDM.RowSource & ";" & NewData
Call AjoutListeValeurChamp("T_diagnostic","PDM",Liste)
Response = acDataErrAdded
End If

'ACTUALISE LA LISTE avec la nouvelle valeur
Me.Requery
Exit Sub

'Gere l'erreur si on repond non a l'ajout de
l'enregistrement

erreur:
Response = acDataErrContinue

End Sub


--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" a écrit dans le message de
news:00d201c36021$a84e5900$
Helloo

J'ai fais ce que tu m'as dit, cad que j'ai copié toutes
les fonctions dans le module de classe de mon formulaire.

Tout fonctionne comme sur des roulettes : lorsque
j'ajoute


un élément qui n'est pas dans la liste, le rowsource de
la


table a bien été changé. (je n'utilise plus
l'ex "'A';'B'"


mais liste = PDM.RowSource & ";" & NewData)

Par contre, il me reste à réactualiser ma liste
déroulante


de mon formulaire : Comment faire pour que cette liste me
renvoie les valeurs écrite dans la définition de la
table ?


J'ai essayé un Me![PDM].Requery sans succes

Merci encore !!!
On y est presque !!!!

kimai


.




.




Avatar
kimai
Salut!

Merci BEAUCOUP !!! Tout fonctionne à merveille !
Allez, tu as le droit à une dernière petite question :
j'aimerais utiliser ce code pour d'autres listes; faut-il
que je copie colle (en adaptant bien sûr) le code dans
chaque module de classe, ou est ce qu'ilo y a un moyen
d'appeler un module (sans qu'acces m'affiche un message
d'erreur du style : "c'est une valeur ou une procédure
attendue, et non pas un module, espèce de nul !"

Allez, je ne te remercierais jamais assez : Merci !
A plus
Et bonne continuation

Mike



-----Message d'origine-----
Salut
Ok je regarde ca en debut d'apres midi

--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" a écrit dans le message de
news:097c01c360ac$a62686d0$
Salut,
Je t'ai envoyé un mail avec la base et toutes les
explications nécessaires
Merci encore pour ton aide précieuse
kimai


-----Message d'origine-----
Salut
envoies moi le formulaire et la ou les tables
anisi que les modules
Il ne sera pas dit que l'on a pas essaye

--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" a écrit dans le message de
news:02b401c3602c$4922c9b0$
Salut,

J'ai essayé avec le code que tu m'as envoyé, sans
succès...

il faudrait que je puisse écrire quelque chose du type :
"rowsource de la liste du formulaire" = "rowsource de la
liste de la table"

Je sais faire pour le formulaire : c'est Me!
[PDM].rowsource = "truc"

Et je ne sais pas faire pour la table. Je devrais pouvoir
le trouver dans ton code, puisque celui ci modifie le
rowsource de la table, mais je n'y arrive pas (il y a
beaucoup d'intermédiaire pour arriver à
obj.propertie.quelque_chose....

Il y a une autre solution : celle que j'avais essayé
tout


au début, cad tout simplement: (après un msgbox)
PDM.RowSource = PDM.RowSource & ";" & NewData
Cela evite de trafique la table elle-même (on ne touche
qu'a la liste du formaulaire) et cela fonctionne très
bien : apresvalidation de la boite de dialogue, il y a un
nouvel élément dans la liste. MAIS

Le seul GROS pbm ,c'est que lorsqu'on ferme et qu'on ré-
ouvre le formulaire, ce nouvel élément a disparu !!!!
Comment le sauvegarder ???

Merci encore pour toutes tes réponses.
Si cela t'embête trop, dis moi et je prendrai une
décision


draconienne : permettre simplement l'ajout sans enrichir
la liste...

A +
Kimai






-----Message d'origine-----
Salut
Private Sub Pdm_NotInList(NewData As String, Response As
Integer)

On Error GoTo erreur
Dim mdb As Database, strSQL As String, Reponse As
Integer,liste as string


'Efface la valeur entree dans la liste modifiable
DoCmd.DoMenuItem A_FORMBAR, A_EDIT, A_UNDOFIELD, ,
A_MENU_VER20


'Si on fait entree avec la zone modifiable vide
If NewData = "" Then Exit Sub

'Message choix creation article
Reponse = MsgBox("Voulez vous ajouter cet article : " &
NewData, vbYesNo +

vbQuestion, "Ajout article")
If Reponse = vbYes Then
liste = me.PDM.RowSource & ";" & NewData
Call AjoutListeValeurChamp("T_diagnostic","PDM",Liste)
Response = acDataErrAdded
End If

'ACTUALISE LA LISTE avec la nouvelle valeur
Me.Requery
Exit Sub

'Gere l'erreur si on repond non a l'ajout de
l'enregistrement

erreur:
Response = acDataErrContinue

End Sub


--
@+
André

Quelques liens avec des exemples, des utilitaires et des
compléments pour

Access
http://access.seneque.free.fr/
http://www.self-access.com/
http://www.mvps.org/accessfr/
http://mypage.bluewin.ch/w.stucki/
http://access.jessy.free.fr/

"kimai" a écrit dans le message de
news:00d201c36021$a84e5900$
Helloo

J'ai fais ce que tu m'as dit, cad que j'ai copié toutes
les fonctions dans le module de classe de mon
formulaire.




Tout fonctionne comme sur des roulettes : lorsque
j'ajoute


un élément qui n'est pas dans la liste, le rowsource de
la


table a bien été changé. (je n'utilise plus
l'ex "'A';'B'"


mais liste = PDM.RowSource & ";" & NewData)

Par contre, il me reste à réactualiser ma liste
déroulante


de mon formulaire : Comment faire pour que cette liste
me



renvoie les valeurs écrite dans la définition de la
table ?


J'ai essayé un Me![PDM].Requery sans succes

Merci encore !!!
On y est presque !!!!

kimai


.




.




.