Access 2010 Filtre sur formulaire et récuperer le filtre dans une table
Le
acn
Bonjour,
Je voudrais récupérer le résultat d'un filtre sur formulaire réalisé avec un bouton "Recherche" et copier le résultat dans une autre table.
Le filtre sur la table Naissances fonctionne très bien, mais je ne sais pas recopier son résultat dans une table nommée Temp_Naissances.
Voici le code du bouton "Recherche"
Private Sub CmdFiltre_Click()
On Error GoTo Err_CmdFiltre_Click
Dim f As String
f = ""
'recherche nom
If Not IsNull(Me.RNom) And Me.RNom <> "" Then
f = "Nom LIKE ""*" & Me.RNom & "*"""
End If
'recherche prenom
If Not IsNull(Me.RPrenom) And Me.RPrenom <> "" Then
If f <> "" Then
f = f & " AND Prenom LIKE ""*" & Me.RPrenom & "*"""
Else
f = "Prenom LIKE ""*" & Me.RPrenom & "*"""
End If
End If
'recherche nom mère
If Not IsNull(Me.RNomM) And Me.RNomM <> "" Then
If f <> "" Then
f = f & " AND Prenom LIKE ""*" & Me.RPrenom & "*"""
f = f & " AND NomM LIKE ""*" & Me.RNomM & "*"""
Else
f = "NomM LIKE ""*" & Me.RNomM & "*"""
End If
End If
'recherche commune
If Not IsNull(Me.RLieu) And Me.RLieu <> "" Then
If f <> "" Then
f = f & " AND Prenom LIKE ""*" & Me.RPrenom & "*"""
f = f & " AND NomM LIKE ""*" & Me.RNomM & "*"""
f = f & " AND Lieu LIKE ""*" & Me.RLieu & "*"""
Else
f = "Lieu LIKE ""*" & Me.RLieu & "*"""
End If
End If
Me.Filter = f
Me.FilterOn = True
Exit_CmdFiltre_Click:
Exit Sub
Err_CmdFiltre_Click:
MsgBox Err.Description
Resume Exit_CmdFiltre_Click
End Sub
Je voudrais récupérer le résultat d'un filtre sur formulaire réalisé avec un bouton "Recherche" et copier le résultat dans une autre table.
Le filtre sur la table Naissances fonctionne très bien, mais je ne sais pas recopier son résultat dans une table nommée Temp_Naissances.
Voici le code du bouton "Recherche"
Private Sub CmdFiltre_Click()
On Error GoTo Err_CmdFiltre_Click
Dim f As String
f = ""
'recherche nom
If Not IsNull(Me.RNom) And Me.RNom <> "" Then
f = "Nom LIKE ""*" & Me.RNom & "*"""
End If
'recherche prenom
If Not IsNull(Me.RPrenom) And Me.RPrenom <> "" Then
If f <> "" Then
f = f & " AND Prenom LIKE ""*" & Me.RPrenom & "*"""
Else
f = "Prenom LIKE ""*" & Me.RPrenom & "*"""
End If
End If
'recherche nom mère
If Not IsNull(Me.RNomM) And Me.RNomM <> "" Then
If f <> "" Then
f = f & " AND Prenom LIKE ""*" & Me.RPrenom & "*"""
f = f & " AND NomM LIKE ""*" & Me.RNomM & "*"""
Else
f = "NomM LIKE ""*" & Me.RNomM & "*"""
End If
End If
'recherche commune
If Not IsNull(Me.RLieu) And Me.RLieu <> "" Then
If f <> "" Then
f = f & " AND Prenom LIKE ""*" & Me.RPrenom & "*"""
f = f & " AND NomM LIKE ""*" & Me.RNomM & "*"""
f = f & " AND Lieu LIKE ""*" & Me.RLieu & "*"""
Else
f = "Lieu LIKE ""*" & Me.RLieu & "*"""
End If
End If
Me.Filter = f
Me.FilterOn = True
Exit_CmdFiltre_Click:
Exit Sub
Err_CmdFiltre_Click:
MsgBox Err.Description
Resume Exit_CmdFiltre_Click
End Sub

Poser une question


acn wrote:
<snip>
Crée une requête basée sur la même source que ton formulaire.
Admettons que ton formulaire se nomme "frmSelection"
Puis, tu transforme cette requête en requête de création de table
Il te reste à renseigner le filtre de cette requête de cette manière:
Forms!frmSelection.Filtre
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Bonjour,
Merci pour cette réponse.
Mais je ne voudrais pas avoir une fenêtre "Entrer une valeur du paramètre qui s'affiche sur chaque filtre.
Mon formulaire est basé sur les données de la table "Naissances" et a 4 champs indépendants RNom... (voir code). J'ai juste à remplir le ou les champs et clicker sur le bouton "Recherche" pour réaliser le filtre. Reste à copier les données de ce filtre dans ma table "Temp_Naissances".
Merci
acn wrote:
Je me demande si tu as lu (ou compris) ce que je t'ai expliqué :-/
Tu dis avoir un formulaire avec un filtre...
et tu souhaites envoyer les enregistrements filtré dans une table.
- fais ce que j'ai expliqué et tu auras ce résultat !
A moins que tu appelles "filtre" qque chose qui n'en est pas un...
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Bonjour,
Je ne suis pas un expert en Access.
J'ai bien compris pour créer la requète dont voici le code SQL
SELECT Naissances.Nom, Naissances.Prenom, Naissances.Date, Naissances.PNomP, Naissances.NomM, Naissances.PNomM, Naissances.Lieu, Naissances.Paroisse, Naissances.Canton, Naissances.AN, Naissances.MOIS, Naissances.JOUR, Naissances.Reference, Naissances.Observations, Naissances.INSEE, Naissances.SIGNET INTO Temp_Naissances
FROM Naissances
WHERE (((Naissances.Nom)=[Forms]![Choix_Naissance].[Filtre]) AND ((Naissances.Prenom)=[Forms]![Choix_Naissance].[Filtre]));
Si je remplace Filtre par un nom et que j'exécute la requète cela fonctionne à condition que je remplice les champ sur les boites d'interrogations.
Je ne comprend pas comment utiliser cette requète dans le formulaire sans les boites d'interrogations.
Merci de votreattention à mon problème.
Je devais dormir et penser à autre chose, lorsque j'ai écris cela ;-/
Crée un bouton sur ton formulaire et colle le code ci-dessous
dans l'événement "sur clic" de ce bouton.
La table T_Temp se créera tout seul et y copiera automatiquement
tous les enregistrements disponibles dans le formulaire, que
ces enregistrements soient filtrés ou non...
Après le clic, les enregistrements sont disponibles dans la table
T_Temp et seront remplacé au prochain clic...
Essaie :
'----------------------------------------------
Dim db As DAO.Database
Dim sFld As String, sQry As String
Dim sF As String, sSrc As String
Dim l As Integer
Dim f As Field
Set db = CurrentDb
'
'/ SQL de création de la table temporaire
If InStr(Me.RecordSource, "Select") Then
'source chaine sql
sF = Me.RecordSource
sSrc = Mid(sF, InStr(1, sF, "From") + 4)
sSrc = Trim(Replace(sSrc, ";", ""))
sF = Replace(sF, sSrc & ".", "")
l = InStr(sF, "From") - 1
sFld = Mid(sF, 7, l - 7)
sQry = "Select Top 1 " & sFld & " Into T_Temp " & Mid(sF, l)
Else
'source est une table
With Me.RecordsetClone
For Each f In .Fields
If Len(sFld) = 0 Then
sFld = f.Name
Else
sFld = sFld & ", " & f.Name
End If
Next f
End With
sQry = "Select TOP 1 " & sFld & " Into T_Temp From " _
& Me.RecordSource & ";"
End If
'/ Création de la table temporaire
With DoCmd
.SetWarnings False
.RunSQL sQry
.SetWarnings True
End With
'// Vider la table temporaire
db.Execute "Delete * From T_Temp"
sQry = ""
'
'// Si le formulaire n'est pas vide
If Me.RecordsetClone.RecordCount > 0 Then
With Me.RecordsetClone
'// Boucler sur les enregistrements du formulaire
Do Until .EOF
'// Créer la requête SQL
sQry = "Insert Into T_Temp (" & sFld & ") Values ("
For Each f In .Fields
If f.Type = dbText Then
sQry = sQry & Chr(34) & f.Value & Chr(34) & ","
Else
sQry = sQry & f.Value & ","
End If
Next f
sQry = Left(sQry, Len(sQry) - 1) & ");"
.MoveNext
db.Execute sQry
Loop
End With
End If
'// Libérer
Set db = Nothing
'-----------------------------------------------------------------
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)