Bonjour,
Voici mon problème :
J'ai créé un formulaire tout simple contenant une "zone de liste" seule. Je
voudrais lorsque l'on double-clique sur l'un des enregistrements contenuent
dans la zone de liste on accède à un autre formulaire qui s'ouvre sur
l'enregistrement sélectionné préallablement.
La méthode que j'ai employé est la suivante :
En 1 : j'ai d'abord développé dans un module, une fonction RECHERCHEID qui
est celle-ci :
Public openEnr
Function RechercheID(ReqSQL As String, NomChamp As String, Valeur As String)
'--
Dim rs As New ADODB.Recordset
'--
'--
rs.Open ReqSQL, CN, adOpenKeyset, adLockBatchOptimistic
rs.MoveFirst
For i = 1 To rs.RecordCount
If Val(rs(NomChamp).Value) <> Val(Valeur) Then
rs.MoveNext
Else
Exit For
End If
Next i
rs.Close
'--
'--
'Renvoi du N° d'enregistrement dans la Fonction "RechercheID"
RechercheID = i
End Function
Puis en 2 : sur l'évènement "Sur double-clique" de la zone de liste j'ai mis
:
Private Sub lstUser_DblClick(Cancel As Integer)
'--Recherche un utilisateur pour modification
'--
If Me.lstUser.ListCount = 0 Then
MsgBox "La liste des utilisateurs est vide." & vbCr & vbLf & "Aucune
modification n'est donc à apporter !", vbCritical + vbOKOnly, "Liste vide..."
End If
If Me.lstUser.ListCount <> 0 Then
DoCmd.OpenForm "Frm-Modif-lstUser"
'Utilisation d'une fonction personnellement programmée servant à
retrouver le N°
'd'un enregistrement (N° Ligne dans une Table) à partir de la clé
primaire
openEnr = RechercheID("SELECT * FROM UTILISATEUR", "PK_User",
lstUser.Value)
DoCmd.GoToRecord acDataForm, "Frm-Modif-lstUser", acGoTo, openEnr
End If
End Sub
Mon soucis est qu'Access n'accède pas à l'enregistrement voulu. Lorsque le
formulaire s'ouvre, après le double-clique, il se positionne toujours sur le
premier enregistrement ! Comment faire ?
Merci pour vos réponses
Cordialement
Rouge_XIII
NB : le PK_User est un champ "texte". Le soucis ne viendrait-il pas d'ici ?
Bonjour,
Voici mon problème :
J'ai créé un formulaire tout simple contenant une "zone de liste" seule. Je
voudrais lorsque l'on double-clique sur l'un des enregistrements contenuent
dans la zone de liste on accède à un autre formulaire qui s'ouvre sur
l'enregistrement sélectionné préallablement.
La méthode que j'ai employé est la suivante :
En 1 : j'ai d'abord développé dans un module, une fonction RECHERCHEID qui
est celle-ci :
Public openEnr
Function RechercheID(ReqSQL As String, NomChamp As String, Valeur As String)
'--
Dim rs As New ADODB.Recordset
'--
'--
rs.Open ReqSQL, CN, adOpenKeyset, adLockBatchOptimistic
rs.MoveFirst
For i = 1 To rs.RecordCount
If Val(rs(NomChamp).Value) <> Val(Valeur) Then
rs.MoveNext
Else
Exit For
End If
Next i
rs.Close
'--
'--
'Renvoi du N° d'enregistrement dans la Fonction "RechercheID"
RechercheID = i
End Function
Puis en 2 : sur l'évènement "Sur double-clique" de la zone de liste j'ai mis
:
Private Sub lstUser_DblClick(Cancel As Integer)
'--Recherche un utilisateur pour modification
'--
If Me.lstUser.ListCount = 0 Then
MsgBox "La liste des utilisateurs est vide." & vbCr & vbLf & "Aucune
modification n'est donc à apporter !", vbCritical + vbOKOnly, "Liste vide..."
End If
If Me.lstUser.ListCount <> 0 Then
DoCmd.OpenForm "Frm-Modif-lstUser"
'Utilisation d'une fonction personnellement programmée servant à
retrouver le N°
'd'un enregistrement (N° Ligne dans une Table) à partir de la clé
primaire
openEnr = RechercheID("SELECT * FROM UTILISATEUR", "PK_User",
lstUser.Value)
DoCmd.GoToRecord acDataForm, "Frm-Modif-lstUser", acGoTo, openEnr
End If
End Sub
Mon soucis est qu'Access n'accède pas à l'enregistrement voulu. Lorsque le
formulaire s'ouvre, après le double-clique, il se positionne toujours sur le
premier enregistrement ! Comment faire ?
Merci pour vos réponses
Cordialement
Rouge_XIII
NB : le PK_User est un champ "texte". Le soucis ne viendrait-il pas d'ici ?
Bonjour,
Voici mon problème :
J'ai créé un formulaire tout simple contenant une "zone de liste" seule. Je
voudrais lorsque l'on double-clique sur l'un des enregistrements contenuent
dans la zone de liste on accède à un autre formulaire qui s'ouvre sur
l'enregistrement sélectionné préallablement.
La méthode que j'ai employé est la suivante :
En 1 : j'ai d'abord développé dans un module, une fonction RECHERCHEID qui
est celle-ci :
Public openEnr
Function RechercheID(ReqSQL As String, NomChamp As String, Valeur As String)
'--
Dim rs As New ADODB.Recordset
'--
'--
rs.Open ReqSQL, CN, adOpenKeyset, adLockBatchOptimistic
rs.MoveFirst
For i = 1 To rs.RecordCount
If Val(rs(NomChamp).Value) <> Val(Valeur) Then
rs.MoveNext
Else
Exit For
End If
Next i
rs.Close
'--
'--
'Renvoi du N° d'enregistrement dans la Fonction "RechercheID"
RechercheID = i
End Function
Puis en 2 : sur l'évènement "Sur double-clique" de la zone de liste j'ai mis
:
Private Sub lstUser_DblClick(Cancel As Integer)
'--Recherche un utilisateur pour modification
'--
If Me.lstUser.ListCount = 0 Then
MsgBox "La liste des utilisateurs est vide." & vbCr & vbLf & "Aucune
modification n'est donc à apporter !", vbCritical + vbOKOnly, "Liste vide..."
End If
If Me.lstUser.ListCount <> 0 Then
DoCmd.OpenForm "Frm-Modif-lstUser"
'Utilisation d'une fonction personnellement programmée servant à
retrouver le N°
'd'un enregistrement (N° Ligne dans une Table) à partir de la clé
primaire
openEnr = RechercheID("SELECT * FROM UTILISATEUR", "PK_User",
lstUser.Value)
DoCmd.GoToRecord acDataForm, "Frm-Modif-lstUser", acGoTo, openEnr
End If
End Sub
Mon soucis est qu'Access n'accède pas à l'enregistrement voulu. Lorsque le
formulaire s'ouvre, après le double-clique, il se positionne toujours sur le
premier enregistrement ! Comment faire ?
Merci pour vos réponses
Cordialement
Rouge_XIII
NB : le PK_User est un champ "texte". Le soucis ne viendrait-il pas d'ici ?
SAlut,
Pas tant de complications !!! enfin si je comprends bien ton preobleme...
Dans ta zone de liste tu cree un bouton qui apparaitra pour chaque
enregistremente et dans l evenement "on Click" tu mets le code suivant
Private Sub TonBouton_Click()
On Error GoTo Err_TonBouton_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "TonFormulaireAOuvrir"
stLinkCriteria = "[TonChampRelation]=" & Me![TonChampRelation]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_TonBouton_Click:
Exit Sub
Err_TonBouton_Click:
MsgBox Err.Description
Resume Exit_TonBouton_Click
End Sub
Voila c tout... ou tout simplement en creant ton bouton tu suis l'assistant
qui te fera la meme chose.
--
Ghislain
"Rouge_XIII" wrote:Bonjour,
Voici mon problème :
J'ai créé un formulaire tout simple contenant une "zone de liste" seule. Je
voudrais lorsque l'on double-clique sur l'un des enregistrements contenuent
dans la zone de liste on accède à un autre formulaire qui s'ouvre sur
l'enregistrement sélectionné préallablement.
La méthode que j'ai employé est la suivante :
En 1 : j'ai d'abord développé dans un module, une fonction RECHERCHEID qui
est celle-ci :
Public openEnr
Function RechercheID(ReqSQL As String, NomChamp As String, Valeur As String)
'--
Dim rs As New ADODB.Recordset
'--
'--
rs.Open ReqSQL, CN, adOpenKeyset, adLockBatchOptimistic
rs.MoveFirst
For i = 1 To rs.RecordCount
If Val(rs(NomChamp).Value) <> Val(Valeur) Then
rs.MoveNext
Else
Exit For
End If
Next i
rs.Close
'--
'--
'Renvoi du N° d'enregistrement dans la Fonction "RechercheID"
RechercheID = i
End Function
Puis en 2 : sur l'évènement "Sur double-clique" de la zone de liste j'ai mis
:
Private Sub lstUser_DblClick(Cancel As Integer)
'--Recherche un utilisateur pour modification
'--
If Me.lstUser.ListCount = 0 Then
MsgBox "La liste des utilisateurs est vide." & vbCr & vbLf & "Aucune
modification n'est donc à apporter !", vbCritical + vbOKOnly, "Liste vide..."
End If
If Me.lstUser.ListCount <> 0 Then
DoCmd.OpenForm "Frm-Modif-lstUser"
'Utilisation d'une fonction personnellement programmée servant à
retrouver le N°
'd'un enregistrement (N° Ligne dans une Table) à partir de la clé
primaire
openEnr = RechercheID("SELECT * FROM UTILISATEUR", "PK_User",
lstUser.Value)
DoCmd.GoToRecord acDataForm, "Frm-Modif-lstUser", acGoTo, openEnr
End If
End Sub
Mon soucis est qu'Access n'accède pas à l'enregistrement voulu. Lorsque le
formulaire s'ouvre, après le double-clique, il se positionne toujours sur le
premier enregistrement ! Comment faire ?
Merci pour vos réponses
Cordialement
Rouge_XIII
NB : le PK_User est un champ "texte". Le soucis ne viendrait-il pas d'ici ?
SAlut,
Pas tant de complications !!! enfin si je comprends bien ton preobleme...
Dans ta zone de liste tu cree un bouton qui apparaitra pour chaque
enregistremente et dans l evenement "on Click" tu mets le code suivant
Private Sub TonBouton_Click()
On Error GoTo Err_TonBouton_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "TonFormulaireAOuvrir"
stLinkCriteria = "[TonChampRelation]=" & Me![TonChampRelation]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_TonBouton_Click:
Exit Sub
Err_TonBouton_Click:
MsgBox Err.Description
Resume Exit_TonBouton_Click
End Sub
Voila c tout... ou tout simplement en creant ton bouton tu suis l'assistant
qui te fera la meme chose.
--
Ghislain
"Rouge_XIII" wrote:
Bonjour,
Voici mon problème :
J'ai créé un formulaire tout simple contenant une "zone de liste" seule. Je
voudrais lorsque l'on double-clique sur l'un des enregistrements contenuent
dans la zone de liste on accède à un autre formulaire qui s'ouvre sur
l'enregistrement sélectionné préallablement.
La méthode que j'ai employé est la suivante :
En 1 : j'ai d'abord développé dans un module, une fonction RECHERCHEID qui
est celle-ci :
Public openEnr
Function RechercheID(ReqSQL As String, NomChamp As String, Valeur As String)
'--
Dim rs As New ADODB.Recordset
'--
'--
rs.Open ReqSQL, CN, adOpenKeyset, adLockBatchOptimistic
rs.MoveFirst
For i = 1 To rs.RecordCount
If Val(rs(NomChamp).Value) <> Val(Valeur) Then
rs.MoveNext
Else
Exit For
End If
Next i
rs.Close
'--
'--
'Renvoi du N° d'enregistrement dans la Fonction "RechercheID"
RechercheID = i
End Function
Puis en 2 : sur l'évènement "Sur double-clique" de la zone de liste j'ai mis
:
Private Sub lstUser_DblClick(Cancel As Integer)
'--Recherche un utilisateur pour modification
'--
If Me.lstUser.ListCount = 0 Then
MsgBox "La liste des utilisateurs est vide." & vbCr & vbLf & "Aucune
modification n'est donc à apporter !", vbCritical + vbOKOnly, "Liste vide..."
End If
If Me.lstUser.ListCount <> 0 Then
DoCmd.OpenForm "Frm-Modif-lstUser"
'Utilisation d'une fonction personnellement programmée servant à
retrouver le N°
'd'un enregistrement (N° Ligne dans une Table) à partir de la clé
primaire
openEnr = RechercheID("SELECT * FROM UTILISATEUR", "PK_User",
lstUser.Value)
DoCmd.GoToRecord acDataForm, "Frm-Modif-lstUser", acGoTo, openEnr
End If
End Sub
Mon soucis est qu'Access n'accède pas à l'enregistrement voulu. Lorsque le
formulaire s'ouvre, après le double-clique, il se positionne toujours sur le
premier enregistrement ! Comment faire ?
Merci pour vos réponses
Cordialement
Rouge_XIII
NB : le PK_User est un champ "texte". Le soucis ne viendrait-il pas d'ici ?
SAlut,
Pas tant de complications !!! enfin si je comprends bien ton preobleme...
Dans ta zone de liste tu cree un bouton qui apparaitra pour chaque
enregistremente et dans l evenement "on Click" tu mets le code suivant
Private Sub TonBouton_Click()
On Error GoTo Err_TonBouton_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "TonFormulaireAOuvrir"
stLinkCriteria = "[TonChampRelation]=" & Me![TonChampRelation]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_TonBouton_Click:
Exit Sub
Err_TonBouton_Click:
MsgBox Err.Description
Resume Exit_TonBouton_Click
End Sub
Voila c tout... ou tout simplement en creant ton bouton tu suis l'assistant
qui te fera la meme chose.
--
Ghislain
"Rouge_XIII" wrote:Bonjour,
Voici mon problème :
J'ai créé un formulaire tout simple contenant une "zone de liste" seule. Je
voudrais lorsque l'on double-clique sur l'un des enregistrements contenuent
dans la zone de liste on accède à un autre formulaire qui s'ouvre sur
l'enregistrement sélectionné préallablement.
La méthode que j'ai employé est la suivante :
En 1 : j'ai d'abord développé dans un module, une fonction RECHERCHEID qui
est celle-ci :
Public openEnr
Function RechercheID(ReqSQL As String, NomChamp As String, Valeur As String)
'--
Dim rs As New ADODB.Recordset
'--
'--
rs.Open ReqSQL, CN, adOpenKeyset, adLockBatchOptimistic
rs.MoveFirst
For i = 1 To rs.RecordCount
If Val(rs(NomChamp).Value) <> Val(Valeur) Then
rs.MoveNext
Else
Exit For
End If
Next i
rs.Close
'--
'--
'Renvoi du N° d'enregistrement dans la Fonction "RechercheID"
RechercheID = i
End Function
Puis en 2 : sur l'évènement "Sur double-clique" de la zone de liste j'ai mis
:
Private Sub lstUser_DblClick(Cancel As Integer)
'--Recherche un utilisateur pour modification
'--
If Me.lstUser.ListCount = 0 Then
MsgBox "La liste des utilisateurs est vide." & vbCr & vbLf & "Aucune
modification n'est donc à apporter !", vbCritical + vbOKOnly, "Liste vide..."
End If
If Me.lstUser.ListCount <> 0 Then
DoCmd.OpenForm "Frm-Modif-lstUser"
'Utilisation d'une fonction personnellement programmée servant à
retrouver le N°
'd'un enregistrement (N° Ligne dans une Table) à partir de la clé
primaire
openEnr = RechercheID("SELECT * FROM UTILISATEUR", "PK_User",
lstUser.Value)
DoCmd.GoToRecord acDataForm, "Frm-Modif-lstUser", acGoTo, openEnr
End If
End Sub
Mon soucis est qu'Access n'accède pas à l'enregistrement voulu. Lorsque le
formulaire s'ouvre, après le double-clique, il se positionne toujours sur le
premier enregistrement ! Comment faire ?
Merci pour vos réponses
Cordialement
Rouge_XIII
NB : le PK_User est un champ "texte". Le soucis ne viendrait-il pas d'ici ?
Bonsoir Ghislain, merci pour ta réponse d'une part.
D'autre part, le code que tu m'as donné a été généré avec l'assistant. Hors
je ne l'utilise jamais.
J'ai la sensation que tu n'as pas compris ce que je demandais !
Ici, je n'ai parlé d'aucun bouton. Mon formulaire est juste composé d'une
"zone de liste" et c'est tout !
Je veux lorsque l'on double-clique sur cette dernière un formulaire s'ouvre
en se placant directement sur l'enregistrement sélectionné précédemment !
Cordialement.
Rouge_XIIISAlut,
Pas tant de complications !!! enfin si je comprends bien ton preobleme...
Dans ta zone de liste tu cree un bouton qui apparaitra pour chaque
enregistremente et dans l evenement "on Click" tu mets le code suivant
Private Sub TonBouton_Click()
On Error GoTo Err_TonBouton_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "TonFormulaireAOuvrir"
stLinkCriteria = "[TonChampRelation]=" & Me![TonChampRelation]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_TonBouton_Click:
Exit Sub
Err_TonBouton_Click:
MsgBox Err.Description
Resume Exit_TonBouton_Click
End Sub
Voila c tout... ou tout simplement en creant ton bouton tu suis l'assistant
qui te fera la meme chose.
--
Ghislain
"Rouge_XIII" wrote:Bonjour,
Voici mon problème :
J'ai créé un formulaire tout simple contenant une "zone de liste" seule. Je
voudrais lorsque l'on double-clique sur l'un des enregistrements contenuent
dans la zone de liste on accède à un autre formulaire qui s'ouvre sur
l'enregistrement sélectionné préallablement.
La méthode que j'ai employé est la suivante :
En 1 : j'ai d'abord développé dans un module, une fonction RECHERCHEID qui
est celle-ci :
Public openEnr
Function RechercheID(ReqSQL As String, NomChamp As String, Valeur As String)
'--
Dim rs As New ADODB.Recordset
'--
'--
rs.Open ReqSQL, CN, adOpenKeyset, adLockBatchOptimistic
rs.MoveFirst
For i = 1 To rs.RecordCount
If Val(rs(NomChamp).Value) <> Val(Valeur) Then
rs.MoveNext
Else
Exit For
End If
Next i
rs.Close
'--
'--
'Renvoi du N° d'enregistrement dans la Fonction "RechercheID"
RechercheID = i
End Function
Puis en 2 : sur l'évènement "Sur double-clique" de la zone de liste j'ai mis
:
Private Sub lstUser_DblClick(Cancel As Integer)
'--Recherche un utilisateur pour modification
'--
If Me.lstUser.ListCount = 0 Then
MsgBox "La liste des utilisateurs est vide." & vbCr & vbLf & "Aucune
modification n'est donc à apporter !", vbCritical + vbOKOnly, "Liste vide..."
End If
If Me.lstUser.ListCount <> 0 Then
DoCmd.OpenForm "Frm-Modif-lstUser"
'Utilisation d'une fonction personnellement programmée servant à
retrouver le N°
'd'un enregistrement (N° Ligne dans une Table) à partir de la clé
primaire
openEnr = RechercheID("SELECT * FROM UTILISATEUR", "PK_User",
lstUser.Value)
DoCmd.GoToRecord acDataForm, "Frm-Modif-lstUser", acGoTo, openEnr
End If
End Sub
Mon soucis est qu'Access n'accède pas à l'enregistrement voulu. Lorsque le
formulaire s'ouvre, après le double-clique, il se positionne toujours sur le
premier enregistrement ! Comment faire ?
Merci pour vos réponses
Cordialement
Rouge_XIII
NB : le PK_User est un champ "texte". Le soucis ne viendrait-il pas d'ici ?
Bonsoir Ghislain, merci pour ta réponse d'une part.
D'autre part, le code que tu m'as donné a été généré avec l'assistant. Hors
je ne l'utilise jamais.
J'ai la sensation que tu n'as pas compris ce que je demandais !
Ici, je n'ai parlé d'aucun bouton. Mon formulaire est juste composé d'une
"zone de liste" et c'est tout !
Je veux lorsque l'on double-clique sur cette dernière un formulaire s'ouvre
en se placant directement sur l'enregistrement sélectionné précédemment !
Cordialement.
Rouge_XIII
SAlut,
Pas tant de complications !!! enfin si je comprends bien ton preobleme...
Dans ta zone de liste tu cree un bouton qui apparaitra pour chaque
enregistremente et dans l evenement "on Click" tu mets le code suivant
Private Sub TonBouton_Click()
On Error GoTo Err_TonBouton_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "TonFormulaireAOuvrir"
stLinkCriteria = "[TonChampRelation]=" & Me![TonChampRelation]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_TonBouton_Click:
Exit Sub
Err_TonBouton_Click:
MsgBox Err.Description
Resume Exit_TonBouton_Click
End Sub
Voila c tout... ou tout simplement en creant ton bouton tu suis l'assistant
qui te fera la meme chose.
--
Ghislain
"Rouge_XIII" wrote:
Bonjour,
Voici mon problème :
J'ai créé un formulaire tout simple contenant une "zone de liste" seule. Je
voudrais lorsque l'on double-clique sur l'un des enregistrements contenuent
dans la zone de liste on accède à un autre formulaire qui s'ouvre sur
l'enregistrement sélectionné préallablement.
La méthode que j'ai employé est la suivante :
En 1 : j'ai d'abord développé dans un module, une fonction RECHERCHEID qui
est celle-ci :
Public openEnr
Function RechercheID(ReqSQL As String, NomChamp As String, Valeur As String)
'--
Dim rs As New ADODB.Recordset
'--
'--
rs.Open ReqSQL, CN, adOpenKeyset, adLockBatchOptimistic
rs.MoveFirst
For i = 1 To rs.RecordCount
If Val(rs(NomChamp).Value) <> Val(Valeur) Then
rs.MoveNext
Else
Exit For
End If
Next i
rs.Close
'--
'--
'Renvoi du N° d'enregistrement dans la Fonction "RechercheID"
RechercheID = i
End Function
Puis en 2 : sur l'évènement "Sur double-clique" de la zone de liste j'ai mis
:
Private Sub lstUser_DblClick(Cancel As Integer)
'--Recherche un utilisateur pour modification
'--
If Me.lstUser.ListCount = 0 Then
MsgBox "La liste des utilisateurs est vide." & vbCr & vbLf & "Aucune
modification n'est donc à apporter !", vbCritical + vbOKOnly, "Liste vide..."
End If
If Me.lstUser.ListCount <> 0 Then
DoCmd.OpenForm "Frm-Modif-lstUser"
'Utilisation d'une fonction personnellement programmée servant à
retrouver le N°
'd'un enregistrement (N° Ligne dans une Table) à partir de la clé
primaire
openEnr = RechercheID("SELECT * FROM UTILISATEUR", "PK_User",
lstUser.Value)
DoCmd.GoToRecord acDataForm, "Frm-Modif-lstUser", acGoTo, openEnr
End If
End Sub
Mon soucis est qu'Access n'accède pas à l'enregistrement voulu. Lorsque le
formulaire s'ouvre, après le double-clique, il se positionne toujours sur le
premier enregistrement ! Comment faire ?
Merci pour vos réponses
Cordialement
Rouge_XIII
NB : le PK_User est un champ "texte". Le soucis ne viendrait-il pas d'ici ?
Bonsoir Ghislain, merci pour ta réponse d'une part.
D'autre part, le code que tu m'as donné a été généré avec l'assistant. Hors
je ne l'utilise jamais.
J'ai la sensation que tu n'as pas compris ce que je demandais !
Ici, je n'ai parlé d'aucun bouton. Mon formulaire est juste composé d'une
"zone de liste" et c'est tout !
Je veux lorsque l'on double-clique sur cette dernière un formulaire s'ouvre
en se placant directement sur l'enregistrement sélectionné précédemment !
Cordialement.
Rouge_XIIISAlut,
Pas tant de complications !!! enfin si je comprends bien ton preobleme...
Dans ta zone de liste tu cree un bouton qui apparaitra pour chaque
enregistremente et dans l evenement "on Click" tu mets le code suivant
Private Sub TonBouton_Click()
On Error GoTo Err_TonBouton_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "TonFormulaireAOuvrir"
stLinkCriteria = "[TonChampRelation]=" & Me![TonChampRelation]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_TonBouton_Click:
Exit Sub
Err_TonBouton_Click:
MsgBox Err.Description
Resume Exit_TonBouton_Click
End Sub
Voila c tout... ou tout simplement en creant ton bouton tu suis l'assistant
qui te fera la meme chose.
--
Ghislain
"Rouge_XIII" wrote:Bonjour,
Voici mon problème :
J'ai créé un formulaire tout simple contenant une "zone de liste" seule. Je
voudrais lorsque l'on double-clique sur l'un des enregistrements contenuent
dans la zone de liste on accède à un autre formulaire qui s'ouvre sur
l'enregistrement sélectionné préallablement.
La méthode que j'ai employé est la suivante :
En 1 : j'ai d'abord développé dans un module, une fonction RECHERCHEID qui
est celle-ci :
Public openEnr
Function RechercheID(ReqSQL As String, NomChamp As String, Valeur As String)
'--
Dim rs As New ADODB.Recordset
'--
'--
rs.Open ReqSQL, CN, adOpenKeyset, adLockBatchOptimistic
rs.MoveFirst
For i = 1 To rs.RecordCount
If Val(rs(NomChamp).Value) <> Val(Valeur) Then
rs.MoveNext
Else
Exit For
End If
Next i
rs.Close
'--
'--
'Renvoi du N° d'enregistrement dans la Fonction "RechercheID"
RechercheID = i
End Function
Puis en 2 : sur l'évènement "Sur double-clique" de la zone de liste j'ai mis
:
Private Sub lstUser_DblClick(Cancel As Integer)
'--Recherche un utilisateur pour modification
'--
If Me.lstUser.ListCount = 0 Then
MsgBox "La liste des utilisateurs est vide." & vbCr & vbLf & "Aucune
modification n'est donc à apporter !", vbCritical + vbOKOnly, "Liste vide..."
End If
If Me.lstUser.ListCount <> 0 Then
DoCmd.OpenForm "Frm-Modif-lstUser"
'Utilisation d'une fonction personnellement programmée servant à
retrouver le N°
'd'un enregistrement (N° Ligne dans une Table) à partir de la clé
primaire
openEnr = RechercheID("SELECT * FROM UTILISATEUR", "PK_User",
lstUser.Value)
DoCmd.GoToRecord acDataForm, "Frm-Modif-lstUser", acGoTo, openEnr
End If
End Sub
Mon soucis est qu'Access n'accède pas à l'enregistrement voulu. Lorsque le
formulaire s'ouvre, après le double-clique, il se positionne toujours sur le
premier enregistrement ! Comment faire ?
Merci pour vos réponses
Cordialement
Rouge_XIII
NB : le PK_User est un champ "texte". Le soucis ne viendrait-il pas d'ici ?
Bonsoir Eric,
En suivant tes conseils, j'ai modifier mon code pour que ma fonction
RECHERCHEID(...) mette bien en valeur la recherche souhaité ! Celle ci
fonctionne maintenant correctement !
Mon nouveau soucis se situe, à présent, sur l'évènement double-clique qui
contient le code VBA suivant :
DoCmd.OpenForm "Frm-Modif-lstUser"
openEnr = RechercheID("SELECT * FROM UTILISATEUR", Me.lstUser.Value)
DoCmd.GoToRecord acDataForm, "Frm-Modif-lstUser", acGoTo, openEnr
la variables openEnr me renvoi bien la valeur de l'élément sélectionné dans
ma zone de liste (confimé grace à l'ajout de MsgBox (openEnr)...) Mais lors
de l'ouverture du formulaire de modification... celui ci n'arrive pas a
atteindre l'enregistrement spécifié !
Y'aurait-il un autre moyen pour que lors de l'ouverture de mon formulaire de
modification il se positionne sur l'enregistrement voulu ?
Merci
Cordialement.
Rouge_XIII
Bonsoir Eric,
En suivant tes conseils, j'ai modifier mon code pour que ma fonction
RECHERCHEID(...) mette bien en valeur la recherche souhaité ! Celle ci
fonctionne maintenant correctement !
Mon nouveau soucis se situe, à présent, sur l'évènement double-clique qui
contient le code VBA suivant :
DoCmd.OpenForm "Frm-Modif-lstUser"
openEnr = RechercheID("SELECT * FROM UTILISATEUR", Me.lstUser.Value)
DoCmd.GoToRecord acDataForm, "Frm-Modif-lstUser", acGoTo, openEnr
la variables openEnr me renvoi bien la valeur de l'élément sélectionné dans
ma zone de liste (confimé grace à l'ajout de MsgBox (openEnr)...) Mais lors
de l'ouverture du formulaire de modification... celui ci n'arrive pas a
atteindre l'enregistrement spécifié !
Y'aurait-il un autre moyen pour que lors de l'ouverture de mon formulaire de
modification il se positionne sur l'enregistrement voulu ?
Merci
Cordialement.
Rouge_XIII
Bonsoir Eric,
En suivant tes conseils, j'ai modifier mon code pour que ma fonction
RECHERCHEID(...) mette bien en valeur la recherche souhaité ! Celle ci
fonctionne maintenant correctement !
Mon nouveau soucis se situe, à présent, sur l'évènement double-clique qui
contient le code VBA suivant :
DoCmd.OpenForm "Frm-Modif-lstUser"
openEnr = RechercheID("SELECT * FROM UTILISATEUR", Me.lstUser.Value)
DoCmd.GoToRecord acDataForm, "Frm-Modif-lstUser", acGoTo, openEnr
la variables openEnr me renvoi bien la valeur de l'élément sélectionné dans
ma zone de liste (confimé grace à l'ajout de MsgBox (openEnr)...) Mais lors
de l'ouverture du formulaire de modification... celui ci n'arrive pas a
atteindre l'enregistrement spécifié !
Y'aurait-il un autre moyen pour que lors de l'ouverture de mon formulaire de
modification il se positionne sur l'enregistrement voulu ?
Merci
Cordialement.
Rouge_XIII
J'ai essayé ta solution qui pourrait fonctionner si je n'avais pas une
invitation dans une boîte de dialogue qui me demande l'enregistrement
rechercher.
En effet, si je cherche le PK_User qui contient par ex : test. Une boite de
dialogue s'ouvre et je dois "entrer une valeur de paramètre" (donc saisir
test pour que dès l'ouverture de mon forumulaire on se positionne sur test.
J'ai essayé ta solution qui pourrait fonctionner si je n'avais pas une
invitation dans une boîte de dialogue qui me demande l'enregistrement
rechercher.
En effet, si je cherche le PK_User qui contient par ex : test. Une boite de
dialogue s'ouvre et je dois "entrer une valeur de paramètre" (donc saisir
test pour que dès l'ouverture de mon forumulaire on se positionne sur test.
J'ai essayé ta solution qui pourrait fonctionner si je n'avais pas une
invitation dans une boîte de dialogue qui me demande l'enregistrement
rechercher.
En effet, si je cherche le PK_User qui contient par ex : test. Une boite de
dialogue s'ouvre et je dois "entrer une valeur de paramètre" (donc saisir
test pour que dès l'ouverture de mon forumulaire on se positionne sur test.
Voici ce que j'ai en détail :
Formulaire "Frm-Gest-User" contient :
-> une zone de liste seule avec en src : SELECT * FROM UTILISATEUR WHERE
FK_Type_User<>"Administrateur"; (le * correspondant à PK_NomUser, Password,
FK_Type_User); Nbre colonnes : 3; Largeurs des colonnes : 7cm;0cm;2cm (je
masque donc le password qui ne me regarde pas)
sur cette zone de liste un "Evènement" sur "double clic" ayant le code
suivant :
DoCmd.OpenForm "Frm-Modif-lstUser", , , "PK_User='" & Me.lstUser.Value & "'"
qui me renvois sur le formulaire Frm-Modif-lstUser et qui doit "normalement"
ce positionner sur l'enregistrement sélectionné dans la zone de liste.
Le forlumaire : "Frm-Modif-lstUser" est basé sur la requête suivante :
SELECT * FROM UTILISATEUR WHERE FK_Type_User<>"Administrateur";
j'y ai inséré dans le corp, le "PK_NomUser" et le "FK_Type_User" et "une
zone de liste modifiable" crée avec la boite à outils pour avec en src :
SELECT * FROM TYPE_UTILISATEUR ORDER BY PK_Type_User pour changer le statut
de l'utilisateur.
Mon soucis : le code que tu m'as fournis plus haut me renvoi une boite de
dialogue avec "Entrer une valeur de ce paramètre" avec PK_NomUser et une zone
de text qui attend une valeur saisie. Si je saisie le nom recherché ca
fonctionne ! Hors je ne voudrai pas le saisir puisqu'il est selectionné
précédemment dans la "zone de liste" !
Que faire ?
Merci encore.
Cdt
Rouge_XIII
Voici ce que j'ai en détail :
Formulaire "Frm-Gest-User" contient :
-> une zone de liste seule avec en src : SELECT * FROM UTILISATEUR WHERE
FK_Type_User<>"Administrateur"; (le * correspondant à PK_NomUser, Password,
FK_Type_User); Nbre colonnes : 3; Largeurs des colonnes : 7cm;0cm;2cm (je
masque donc le password qui ne me regarde pas)
sur cette zone de liste un "Evènement" sur "double clic" ayant le code
suivant :
DoCmd.OpenForm "Frm-Modif-lstUser", , , "PK_User='" & Me.lstUser.Value & "'"
qui me renvois sur le formulaire Frm-Modif-lstUser et qui doit "normalement"
ce positionner sur l'enregistrement sélectionné dans la zone de liste.
Le forlumaire : "Frm-Modif-lstUser" est basé sur la requête suivante :
SELECT * FROM UTILISATEUR WHERE FK_Type_User<>"Administrateur";
j'y ai inséré dans le corp, le "PK_NomUser" et le "FK_Type_User" et "une
zone de liste modifiable" crée avec la boite à outils pour avec en src :
SELECT * FROM TYPE_UTILISATEUR ORDER BY PK_Type_User pour changer le statut
de l'utilisateur.
Mon soucis : le code que tu m'as fournis plus haut me renvoi une boite de
dialogue avec "Entrer une valeur de ce paramètre" avec PK_NomUser et une zone
de text qui attend une valeur saisie. Si je saisie le nom recherché ca
fonctionne ! Hors je ne voudrai pas le saisir puisqu'il est selectionné
précédemment dans la "zone de liste" !
Que faire ?
Merci encore.
Cdt
Rouge_XIII
Voici ce que j'ai en détail :
Formulaire "Frm-Gest-User" contient :
-> une zone de liste seule avec en src : SELECT * FROM UTILISATEUR WHERE
FK_Type_User<>"Administrateur"; (le * correspondant à PK_NomUser, Password,
FK_Type_User); Nbre colonnes : 3; Largeurs des colonnes : 7cm;0cm;2cm (je
masque donc le password qui ne me regarde pas)
sur cette zone de liste un "Evènement" sur "double clic" ayant le code
suivant :
DoCmd.OpenForm "Frm-Modif-lstUser", , , "PK_User='" & Me.lstUser.Value & "'"
qui me renvois sur le formulaire Frm-Modif-lstUser et qui doit "normalement"
ce positionner sur l'enregistrement sélectionné dans la zone de liste.
Le forlumaire : "Frm-Modif-lstUser" est basé sur la requête suivante :
SELECT * FROM UTILISATEUR WHERE FK_Type_User<>"Administrateur";
j'y ai inséré dans le corp, le "PK_NomUser" et le "FK_Type_User" et "une
zone de liste modifiable" crée avec la boite à outils pour avec en src :
SELECT * FROM TYPE_UTILISATEUR ORDER BY PK_Type_User pour changer le statut
de l'utilisateur.
Mon soucis : le code que tu m'as fournis plus haut me renvoi une boite de
dialogue avec "Entrer une valeur de ce paramètre" avec PK_NomUser et une zone
de text qui attend une valeur saisie. Si je saisie le nom recherché ca
fonctionne ! Hors je ne voudrai pas le saisir puisqu'il est selectionné
précédemment dans la "zone de liste" !
Que faire ?
Merci encore.
Cdt
Rouge_XIII