Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/10/2011, 16h03   #1
Candidat au titre de Membre du Club
 
Homme frank
Inscription : juillet 2011
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme frank
Localisation : France, Vendée (Pays de la Loire)

Informations forums :
Inscription : juillet 2011
Messages : 40
Points : 13
Points : 13
Par défaut Filtre avec groupe option

Bonjour,

J'ai créer un code sur activation d'un bouton me permettant de filtrer divers champs d'un formulaire.
J'ai également crée un groupe d'option filtrant également d'autres champs du même formulaire.
Sauf qu'en filtrant par le groupe d'option et par le bouton, les filtres ne fonctionne pas (c'est soi l'un ou soit l'autre).
Comment peut-on conbiner les 2?

Code du bouton :
Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Private Sub CmdFiltre_Click()
f = ""
IF NOT IsNull(Me.Rart) AND Me.Rart <> "" Then
f = "art6 LIKE ""*" & Me.Rart & "*"""
End IF
IF NOT IsNull(Me.Rcde) AND Me.Rcde <> "" Then
IF f <> "" Then
f = f & " AND commande = """ & Me.Rcde & """"
Else
f = "commande = """ & Me.Rcde & """"
End IF
End IF
IF NOT IsNull(Me.Rclt) AND Me.Rclt <> "" Then
IF f <> "" Then
f = f & " AND Client LIKE ""*" & Me.Rclt & "*"""
Else
f = "Client LIKE ""*" & Me.Rclt & "*"""
End IF
End IF
IF NOT IsNull(Me.Rdate) AND Me.Rdate <> "" Then
IF f <> "" Then
f = f & " AND [date liv]=#" & Me.Rdate & "#"
Else
f = "[date liv]=#" & Me.Rdate & "#"
End IF
End IF
Me.Filter = f
Me.FilterOn = True
End Sub

Code du groupe d'option :
Code sql :
1
2
3
4
5
6
7
8
9
Private Sub Cadre57_AfterUpdate()
IF Cadre57 = 1 Then
Me.Filter = "Type='SAV'"
Me.FilterOn = True
Else
Me.Filter = "Type='1ère monte'"
Me.FilterOn = True
End IF
End Sub
frabeau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 16h20   #2
Membre régulier
 
Inscription : février 2010
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 100
Points : 92
Points : 92
Bonjour,

Est-ce que ça marcherait en faisant passer f en variable globale et en l'utilisant ensuite dans le code de ton groupe d'option ?

Genre :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Private Sub Cadre57_AfterUpdate()
IF Cadre57 = 1 Then
   IF f <> "" Then
      f = f & "AND Type='SAV'"
   Else
      f = "Type = 'SAV'"
Else
   'idem que ci-dessus
End IF
Me.Filter = f
Me.FilterOn = True
End Sub
ça fonctionnerait ?
Un problème surviendrait peut-être pour la remise à 0 du filtre, je pense (Me.Filter = "") ; peut-être un point à travailler.
Beub' est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 16h21   #3
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
Bonjour,

Avec (si tous les filtres se cumulent, sinon changez le critère AND) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Private Sub CmdFiltre_Click()
f = ""
IF NOT IsNull(Me.Rart) AND Me.Rart <> "" Then
f = "art6 LIKE ""*" & Me.Rart & "*"""
End IF
IF NOT IsNull(Me.Rcde) AND Me.Rcde <> "" Then
IF f <> "" Then
f = f & " AND commande = """ & Me.Rcde & """"
Else
f = "commande = """ & Me.Rcde & """"
End IF
End IF
IF NOT IsNull(Me.Rclt) AND Me.Rclt <> "" Then
IF f <> "" Then
f = f & " AND Client LIKE ""*" & Me.Rclt & "*"""
Else
f = "Client LIKE ""*" & Me.Rclt & "*"""
End IF
End IF
IF NOT IsNull(Me.Rdate) AND Me.Rdate <> "" Then
IF f <> "" Then
f = f & " AND [date liv]=#" & Me.Rdate & "#"
Else
f = "[date liv]=#" & Me.Rdate & "#"
End IF
End IF
 
IF Cadre57 = 1 Then
Me.Filter = f  & " AND Type='SAV'"
Else
Me.Filter = f  & " AND Type='1ère monte'"
End IF
 
Me.Filter = f
Me.FilterOn = True
End Sub
et

Code :
1
2
3
Private Sub Cadre57_AfterUpdate()
CmdFiltre_Click
End Sub
Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 16h30   #4
Membre régulier
 
Inscription : février 2010
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 100
Points : 92
Points : 92
Précision (avec tout mon respect ) :
Le code de fbtsra ne fonctionnera pas si f = "" jusqu'à la ligne 29. En gros, si tous les champs sont nuls et que l'utilisateur clique uniquement sur le cadre, ça ne fonctionnera pas puisque le filtre sera juste "AND ....".

Si tu veux utiliser la méthode de fbstra, n'oublie pas de gérer les filtres vides !

Cordialement,
Beub'.
Beub' est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 16h53   #5
Membre confirmé
 
Homme
Chercheur
Inscription : juin 2011
Messages : 150
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Tarn (Midi Pyrénées)

Informations professionnelles :
Activité : Chercheur
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : juin 2011
Messages : 150
Points : 231
Points : 231
La remarque de Beub' est justifiée. J'ai mixé avec mon fonctionnement : pour simplifier j'initialise mes filtres avec une clause toujours vrai type un champ NumAuto <> 0 ce qui permet d'avoir par exemple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub CmdFiltre_Click()
f = "[NumAuto]<>0"
IF NOT IsNull(Me.Rart) AND Me.Rart <> "" Then
f = f  & " AND art6 LIKE ""*" & Me.Rart & "*"""
End IF
IF NOT IsNull(Me.Rcde) AND Me.Rcde <> "" Then
f = f & " AND commande = """ & Me.Rcde & """"
End IF
IF NOT IsNull(Me.Rclt) AND Me.Rclt <> "" Then
f = f & " AND Client LIKE ""*" & Me.Rclt & "*"""
End IF
IF NOT IsNull(Me.Rdate) AND Me.Rdate <> "" Then
f = f & " AND [date liv]=#" & Me.Rdate & "#"
End IF
IF Cadre57 = 1 Then
f = f  & " AND Type='SAV'"
Else
f = f  & " AND Type='1ère monte'"
End IF
 
Me.Filter = f
Me.FilterOn = True
End Sub
C'est plus aéré ...

Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 08h56   #6
Candidat au titre de Membre du Club
 
Homme frank
Inscription : juillet 2011
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme frank
Localisation : France, Vendée (Pays de la Loire)

Informations forums :
Inscription : juillet 2011
Messages : 40
Points : 13
Points : 13
Bonjour à tous et merci pour vos réponses.
A quoi doit faire référence le champ [NUmAuto] qui n'existe pas dans mon formulaire ?

Cdlt
frabeau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 09h00   #7
Candidat au titre de Membre du Club
 
Homme frank
Inscription : juillet 2011
Messages : 40
Détails du profil
Informations personnelles :
Nom : Homme frank
Localisation : France, Vendée (Pays de la Loire)

Informations forums :
Inscription : juillet 2011
Messages : 40
Points : 13
Points : 13
Ok, je viens de comprendre.
Ca marche.

MErci à tous
frabeau est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h47.


 
 
 
 
Partenaires

Hébergement Web