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 30/11/2010, 13h23   #1
Membre du Club
 
Inscription : juin 2007
Messages : 185
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 185
Points : 43
Points : 43
Par défaut modification de critère en vba

Bonjour à tous,

je suis actuellement en train de travailler sur mon formulaire de recherche (sur la base de celui de caféine).

J'ai créé une requête en SQL qui correspondrait au résultat que j'attends :

Code :
1
2
SELECT rqy_rechercheprospectirp.N°, ... FROM rqy_rechercheprospectirp
WHERE ((([T_entreprise]![])<>0) AND (([T_Ciblage]![ACTIVITE]) Like "*industrie*") AND ((nz([rqy_rechercheprospectirp]![CA_mini]))<=1000) AND ((nz([rqy_rechercheprospectirp]![CA_maxi]))>=1000)) OR ((([T_Ciblage]![ACTIVITE]) Like "*industrie*") AND ((IsNull([rqy_rechercheprospectirp]![CA_mini]))<>False) AND ((IsNull([rqy_rechercheprospectirp]![CA_maxi]))<>False));
Voilà mon bout de code que je n'arrive pas à modifier :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sql = "SELECT N°,... FROM rqy_rechercheprospectirp where T_entreprise!n° <> 0 "
 
    If Me.txtsecteur.Value <> "" Then
    Sql = Sql & "AND T_Ciblage!ACTIVITE like " & Chr(34) & Chr(42) & _
    Me.txtsecteur & Chr(42) & Chr(34) & " "
    End If
 
 If Me.txtCA.Value <> 0 Then
Sql = Sql & " AND nz(rqy_rechercheprospectirp!CA_mini) <= " & Me.txtCA & " and isnull(rqy_rechercheprospectirp!CA_mini) and nz(rqy_rechercheprospectirp!CA_maxi) >= " & Me.txtCA & " and isnull(rqy_rechercheprospectirp!CA_maxi)"
End If
 
SQLWhere = Trim(Right(Sql, Len(Sql) - InStr(Sql, "Where ") - Len("Where ") + 1))
 
Sql = Sql & ";"
CurrentDb.QueryDefs("qrytempirp").Sql = Sql
Me.lblStats.Caption = DCount("*", "rqy_rechercheprospectirp", SQLWhere) & " / " & DCount("*", "rqy_rechercheprospectirp")
Me.lstresults.RowSource = Sql
Me.lstresults.Requery
Voilà le requête en SQL du code ci-dessus :

Code :
1
2
SELECT N°,...FROM rqy_rechercheprospectirp
WHERE T_entreprise!n°<>0 And T_Ciblage!ACTIVITE Like "*industrie*" And nz(rqy_rechercheprospectirp!CA_mini)<=1000 And isnull(rqy_rechercheprospectirp!CA_mini) And nz(rqy_rechercheprospectirp!CA_maxi)>=1000 And isnull(rqy_rechercheprospectirp!CA_maxi);
txtsecteur = Industrie
txtCA = 1000

Merci d'avance pour votre aide
Mamanhou
MAMANHOU est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 18h52   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
Hello,

attention, ici tu as seulement des AND dans ton critere.

A quel niveau as-tu exactement besoin d'aide ?
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 10h40   #3
Membre du Club
 
Inscription : juin 2007
Messages : 185
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 185
Points : 43
Points : 43
Bonjour,

Merci pour votre réponse

J'ai modifié mon code en rajoutant des critères et en changeant des AND par des OR :

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Private Sub RefreshQuery()
'fonction de recherche par critère
Dim Sql As String
Dim SQLWhere As String
 
On Error GoTo Err_RefreshQuery_Click
 
 Sql = "SELECT N°,... FROM rqy_rechercheprospectirp where T_entreprise!n° <> 0 "
 
    If Me.txtsecteur.Value <> "" Then
    Sql = Sql & "AND T_Ciblage!ACTIVITE like " & Chr(34) & Chr(42) & _
    Me.txtsecteur & Chr(42) & Chr(34) & " "
    End If
 
    If Me.Txtrégion.Value <> "" Then
    Sql = Sql & "AND T_Ciblage!region like " & Chr(34) & Chr(42) & _
    Me.Txtrégion & Chr(42) & Chr(34) & " "
    End If
 
    If Me.txtdepartement.Value <> "" Then
    Sql = Sql & "AND T_Ciblage!departement like " & Chr(34) & Chr(42) & _
    Me.txtdepartement & Chr(42) & Chr(34) & " "
    End If
    If Me.txtCA.Value <> 0 Then
    Sql = Sql & " AND(nz(rqy_rechercheprospectirp!CA_mini) <= " & Me.txtCA & " or isnull(rqy_rechercheprospectirp!CA_mini)) and (nz(rqy_rechercheprospectirp!CA_maxi) >= " & Me.txtCA & " or isnull(rqy_rechercheprospectirp!CA_maxi))"
    End If
 
    If Me.txtEF.Value <> 0 Then
    Sql = Sql & " AND(nz(rqy_rechercheprospectirp!EFF_mini) <= " & Me.txtEF & " or isnull(rqy_rechercheprospectirp!EFF_mini)) and (nz(rqy_rechercheprospectirp!EFF_maxi) >= " & Me.txtEF & " or isnull(rqy_rechercheprospectirp!EFF_maxi))"
    End If
 
    If Me.TxtRN.Value <> 0 Then
    Sql = Sql & " AND(nz(rqy_rechercheprospectirp!RN_mini) <= " & Me.TxtRN & " or isnull(rqy_rechercheprospectirp!RN_mini)) and (nz(rqy_rechercheprospectirp!RN_maxi) >= " & Me.TxtRN & " or isnull(rqy_rechercheprospectirp!RN_maxi))"
    End If
 
    If Me.TxtFP.Value <> 0 Then
    Sql = Sql & " AND(nz(rqy_rechercheprospectirp!FONDSPROPRESMINI) <= " & Me.TxtFP & " or isnull(rqy_rechercheprospectirp!FONDSPROPRESMini)) and (nz(rqy_rechercheprospectirp!FONDSPROPRESMAXI) >= " & Me.TxtFP & " or isnull(rqy_rechercheprospectirp!FONDSPROPRESMaxi))"
    End If
 
SQLWhere = Trim(Right(Sql, Len(Sql) - InStr(Sql, "Where ") - Len("Where ") + 1))
 
Debug.Print Sql
Sql = Sql & ";"
CurrentDb.QueryDefs("qrytempirp").Sql = Sql
Me.lblStats.Caption = DCount("*", "rqy_rechercheprospectirp", SQLWhere) & " / " & DCount("*", "rqy_rechercheprospectirp")
Me.lstresults.RowSource = Sql
Me.lstresults.Requery
 
Exit_RefreshQuery_Click:
    Exit Sub
Err_RefreshQuery_Click:
    MsgBox err.Description
    Resume Exit_RefreshQuery_Click
End Sub
Mon code marche si je ne demande pas trop de critère ... Sinon il me dit que les ressources ne sont pas suffisantes. Y a t-il moyen de simplifier mon code ?

Merci d'avance
Mamanhou
MAMANHOU est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h51.


 
 
 
 
Partenaires

Hébergement Web