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 20/10/2011, 14h18   #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 Filtrer un vrai faux

Bonjour à tous,

Est-il possible de filtrer un formulaire suivant l'état d'une case à cocher.
Je m'explique : je ne veux faire afficher que les lignes dont la case est cochée.

Merci de vos réponses.
frabeau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 14h25   #2
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,

Code :
1
2
3
 
Me.Filter = "[test]=true"
Me.FilterOn = True
Avec test = nom de votre case à cocher.

Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 14h36   #3
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
Le type de filtre que je demande doit s'imbriquer avec d'autre filtres.
A quel endroit je dois le positionner dans le code ?

Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub CmdFiltre_Click()
f = "[Qté]<>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
frabeau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 15h45   #4
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
Je vois que vous avez suivi mes préconisations d'initialisation du filtre ...

Si les critères se cumulent :

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
Private Sub CmdFiltre_Click()
f = "[Qté]<>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
 
f = f & " AND [test]=true"
 
Me.Filter = f
Me.FilterOn = True
 
end Sub
Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 08h13   #5
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
Je ne dois pas être doué, mais cela ne fonctionne pas.
J'ai ajouté une case à cocher dans mon entête de formulaire.
Sil est est = -1 (cochée), alors je souhaite que cela filtre tous les enregistrement dont la case à cochée nommée "réservétotal" est = -1, sinon il doit tout affiché. Et cela en tenant compte des autres filtres.
frabeau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 08h34   #6
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,

Vous avez une ou deux cases à cocher ?

Si il n'y en a qu'une nommée "réservétotal" pour chaque enregistrement, alors :

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
 
Private Sub CmdFiltre_Click()
f = "[Qté]<>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
 
f = f & " AND [réservétotal]=true"
 
Me.Filter = f
Me.FilterOn = True
 
end Sub
sinon si il y a une case à cocher que je nomme "test", qui si elle est cochée permet le filtrage par le critère case à cocher "réservétotal" des enregistrements, alors :

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
 
Private Sub CmdFiltre_Click()
f = "[Qté]<>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
 
If [test]=true then
f = f & " AND [réservétotal]=true"
End IF
 
Me.Filter = f
Me.FilterOn = True
 
end Sub
Bcdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 09h06   #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
Je suis dans le deuxième cas.
En lançant le code, il ne reconnait pas [réservétotal].
Est-ce les crochets qui posent problèmes ?
frabeau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 09h31   #8
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
Le filtre se fait sur les données de la table : la case à cocher "réservétotal" doit avoir comme "source contrôle" le champ "réservétotal" pour que cela fonctionne. Si le champ de votre table ne se nomme pas "réservétotal", il faut changer le code avec le nom de ce champ.

Plus simplement le filtre se fait sur la "source contrôle" de la case à cocher et non sur son nom.

Code :
f = f & " AND [SourceControledeRéservétotal]=true"
BCdt
fbtsra est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 10h18   #9
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
Effectivement je le faisait sur le nom de la case à cocher au lieu de la sourcecontrôle.
Merci, cela fonctionne.
Une autre question sur ce même formulaire : existe-t-il un code permettant de lancer l'impression d'un etat correspondant aux données filtrées dans le formulaire ?
frabeau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 11h57   #10
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
Oui :

Code :
DoCmd.OpenReport "Nomdel'état", , , Forms![Nomduformulaire].Filter
Bcdt
fbtsra 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 16h31.


 
 
 
 
Partenaires

Hébergement Web