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 11/10/2011, 17h27   #1
Membre régulier
 
Avatar de jubourbon
 
Homme
Inscription : octobre 2008
Messages : 349
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2008
Messages : 349
Points : 96
Points : 96
Par défaut erreur d'execution 2185 lors de l'execution d'une sub vba

Bonjour,

J'ai un formulaire avec une listebox affichant le resultat d'une requete. Je souhaite filtrer les résultat depuis le formulaire. Pour cela j'ai créé 3 textbox ou l'utilisateur peut saisir du texte pour filtrer.
Ensuite l'utilisateur clique sur un bouton.
Sur l’événement de clique j'ai une procédure associé:
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
 
Private Sub txtNumProd_Change()
    Dim sReq As String
    sReq = "SELECT Produits.nom, Produits.Description, Fournisseurs.nom "
    sReq = sReq & "FROM Fournisseurs INNER JOIN Produits ON Fournisseurs.IDFournisseur=Produits.IDFournisseurs "
 
    If (txtNumProd <> "") Then
        sReq = sReq & " Where Produits.nom like '" & txtNumProd.Text & "' "
    Else
        sReq = sReq & " Where true=true "
    End If
 
    If (txtNomProd <> "") Then
       sReq = sReq & " AND Produits.Description like '%" & txtNomProd.Text & "%' "
    Else
        sReq = sReq & " AND true=true "
    End If
 
    If (txtNomProducteur <> "") Then
        sReq = sReq & " AND Fournisseurs.nom like '" & txtNomProd.Text & "' "
    Else
        sReq = sReq & " AND true=true "
    End If
 
    sReq = sReq & "ORDER BY Produits.MaterialNumberLong;"
    sReq = sReq & " "
 
    lstResult.RowSource = sReq
    lstResult.Requery
 
    If (lstResult.ListCount) > 0 Then
        lstResult.Selected(0) = False
    End If
End Sub
J'ai précédé le nom de mes textbox par txt et le nom de ma listbox par lst

Quand le code s’exécute il me renvoi l'erreur suivante:
"erreur d’exécution 2185" impossible de faire référence à une propriété ou de la définir pour un contrôle si ce dernier n'est pas activé

Je ne comprend pas ce message, tous mes contrôles existe, le nom est le bon.

Bref je suis preneur de tous conseils, même si je m'y prend mal et que quelqu'un a une autre solution.

Par avance merci pour votre aide.
jubourbon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 04h27   #2
Membre actif
 
Avatar de robyseb
 
Homme Sébastien
Développeur indépendant
Inscription : juillet 2011
Messages : 178
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : Canada

Informations professionnelles :
Activité : Développeur indépendant

Informations forums :
Inscription : juillet 2011
Messages : 178
Points : 193
Points : 193
Bonjour!
Premièrement ces bizarre tu dit :
Citation:
Sur l’événement de clique j'ai une procédure associé:
et ta procédure porte ce nom :
Code :
Private Sub txtNumProd_Change()
nous devrions voir quelques chose comme :
Code :
Private Sub txtNumProd_Click()
Ensuite ton erreur semble venir du fait que un de tes contrôle ne soit pas activé lors du déroulement de ton code alors vérifie ca ... avec la fonction d'un contrôle tu peut l'activer au moment opportun

cordialement
robyseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 09h28   #3
Membre régulier
 
Avatar de jubourbon
 
Homme
Inscription : octobre 2008
Messages : 349
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2008
Messages : 349
Points : 96
Points : 96
Bonjour,

Oui le nom de la procédure et du au fait que j'ai changé l'association de l’événement et de la procédure, mais cela n'a pas d'incidence sur l’exécution du code.

J'ai ajouté au debut de ma procedure:
Code :
1
2
3
4
 
    txtNumProd.Enabled = True
    txtNomProd.Enabled = True
    txtNomProducteur.Enabled = True
Mais ça me renvoi la meme erreur
jubourbon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 13h08   #4
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 945
Points : 30 945
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Lorsque tu écris txtNumProd , c'est comme si tu écrivais txtNumProd.Value car c'est la propriété par défaut d'une zone de texte.

Hors sur un évènement change il faut utiliser la propriété text.

Donc essayes :

à la place de
De plus, laisses le mot Me, comme quoi le code est dans le formulaire, c'est (je trouve) plus clair dans du code.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 14h17   #5
Membre régulier
 
Avatar de jubourbon
 
Homme
Inscription : octobre 2008
Messages : 349
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2008
Messages : 349
Points : 96
Points : 96
J'ai remis ma fonction attaché à l’événement changement de valeur du txtNumProd.

Merci pour les conseils de bonne pratique je les également appliqués.

Lorsque le code s’exécute et qu'il arrive sur les autres textbox du formulaire (ceux qui n'ont pas déclenché) et qui sont vide (rien n'est saisi dedans) il me renvoi toujours la même erreur

Voici mon code à présent:
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
 
Private Sub txtNumProd_Change()
    Dim sReq As String
    sReq = "SELECT Produits.nom, Produits.Description, Fournisseurs.nom "
    sReq = sReq & "FROM Fournisseurs INNER JOIN Produits ON Fournisseurs.IDFournisseur=Produits.IDFournisseurs "
 
    If (Me.txtNumProd.Text <> "") Then
        sReq = sReq & " Where Produits.nom like '" & txtNumProd.Text & "' "
    Else
        sReq = sReq & " Where true=true "
    End If
 
    If (Me.txtNomProd.Text <> "") Then
       sReq = sReq & " AND Produits.Description like '*" & txtNomProd.Text & "*' "
    Else
        sReq = sReq & " AND true=true "
    End If
 
    If (Me.txtNomProducteur.Text <> "") Then
        sReq = sReq & " AND Fournisseurs.nom like '" & txtNomProd.Text & "' "
    Else
        sReq = sReq & " AND true=true "
    End If
 
    sReq = sReq & "ORDER BY Produits.MaterialNumberLong;"
    sReq = sReq & " "
 
    lstResult.RowSource = sReq
    lstResult.Requery
 
    If (lstResult.ListCount) > 0 Then
        lstResult.Selected(0) = False
    End If
End Sub
jubourbon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 14h52   #6
Membre du Club
 
Homme Cédric MERSCH
Ordonnanceur
Inscription : novembre 2009
Messages : 48
Détails du profil
Informations personnelles :
Nom : Homme Cédric MERSCH
Localisation : France

Informations professionnelles :
Activité : Ordonnanceur
Secteur : Industrie

Informations forums :
Inscription : novembre 2009
Messages : 48
Points : 46
Points : 46
Bonjour à tous,

Pour ma part, dans un cas similaire, j'utilise la méthode BuildCriteria sur un formulaire afichant ma requête afin de construire mon filtre à partir d'un text box.
Code :
1
2
Me.Filter = BuildCriteria("[MonChamp]", dbText, txtNumProd & "*")
    Me.FilterOn = True
Peut-être une piste à explorer en remplacant Me.filter par ta variable string sReq...

Amicalement.
mc.schmer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 15h08   #7
Membre actif
 
Avatar de robyseb
 
Homme Sébastien
Développeur indépendant
Inscription : juillet 2011
Messages : 178
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : Canada

Informations professionnelles :
Activité : Développeur indépendant

Informations forums :
Inscription : juillet 2011
Messages : 178
Points : 193
Points : 193
Salut est-ce que tes textbox sont visible ? si non ca ne fonctionne pas

ces la même chose que enabled soit merci pour le me. et l'indication du .value phillipe c'est bon à savoir
robyseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 15h33   #8
Membre régulier
 
Avatar de jubourbon
 
Homme
Inscription : octobre 2008
Messages : 349
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2008
Messages : 349
Points : 96
Points : 96
Merci à tous,

Tous est visible, mais dans le code c'est le 3eme txtbox qui pose problème et renvoi tjs la même erreur. Je m'arrache les cheveux

mc.schmer peux tu me donner un exemple de BuildCriteria utilisé avec une listbox?
jubourbon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 15h40   #9
Membre du Club
 
Homme Cédric MERSCH
Ordonnanceur
Inscription : novembre 2009
Messages : 48
Détails du profil
Informations personnelles :
Nom : Homme Cédric MERSCH
Localisation : France

Informations professionnelles :
Activité : Ordonnanceur
Secteur : Industrie

Informations forums :
Inscription : novembre 2009
Messages : 48
Points : 46
Points : 46
@ jubourbon

Je vais proceder à quelques test et je reviens vers toi...
mc.schmer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 17h01   #10
Membre du Club
 
Homme Cédric MERSCH
Ordonnanceur
Inscription : novembre 2009
Messages : 48
Détails du profil
Informations personnelles :
Nom : Homme Cédric MERSCH
Localisation : France

Informations professionnelles :
Activité : Ordonnanceur
Secteur : Industrie

Informations forums :
Inscription : novembre 2009
Messages : 48
Points : 46
Points : 46
Re,

Bon voila, les tests ne sont pas concluants...
à titre indicatif, voila pourquoi :
Considerons un textbox nommé "txt_filtre", une variable string "str_filtre" pour récupérer le résutat de BuidCriteria, une variable string str_sql servant à construire ton instruction SQL et la méthode BuildCriteria suivante:
Code :
1
2
3
4
5
6
7
Dim str_filtre As String
Dim str_sql As String
Dim str_src As String
 
str_filtre = BuildCriteria("[MonChamp]", dbText, txt_filtre)
str_sql = "SELECT [MonChamp] FROM MaTable WHERE "
str_src = str_sql & str_filtre
Si on tape "A" dans le textbox, str_filtre nous renvoi
Donc
Code :
str_src = "SELECT [MonChamp] FROM MaTable WHERE [MonChamp]="A""
Au final, je ne pense pas que cette méthode puisse t'apporter quoi que ce soit d'interessant ormis le verouillage de ta condition WHERE.

Désolé pour la fausse piste. Mea culpa
mc.schmer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 17h16   #11
Membre régulier
 
Avatar de jubourbon
 
Homme
Inscription : octobre 2008
Messages : 349
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2008
Messages : 349
Points : 96
Points : 96
Citation:
Envoyé par mc.schmer Voir le message
Désolé pour la fausse piste. Mea culpa
Pas de soucis, c'est super sympa d'avoir pris le temps de tester.

En revanche mon problème d'erreur est toujours présent. Quelqu'un a une piste?
jubourbon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 22h34   #12
Membre du Club
 
Homme Cédric MERSCH
Ordonnanceur
Inscription : novembre 2009
Messages : 48
Détails du profil
Informations personnelles :
Nom : Homme Cédric MERSCH
Localisation : France

Informations professionnelles :
Activité : Ordonnanceur
Secteur : Industrie

Informations forums :
Inscription : novembre 2009
Messages : 48
Points : 46
Points : 46
Quelques petits trucs basiques:
As-tu simplement tenter d'effacer tes textbox en question pour mieux les recréer... S'il s'agissait d'un problème de paramétrage, il pourrait bien être résolu.
As-tu tenter de les renommer?
As-tu tenter de remplacer tes texbox par des inputbox? Si oui quel réaction?
mc.schmer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 02h26   #13
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 945
Points : 30 945
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

.text pour les zones de textes qui ont l'évènement Change (txtNumProd) dans ton cas et .value pour les autres.

A tester.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 11h45   #14
Membre régulier
 
Avatar de jubourbon
 
Homme
Inscription : octobre 2008
Messages : 349
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2008
Messages : 349
Points : 96
Points : 96
Citation:
Envoyé par mc.schmer Voir le message
Quelques petits trucs basiques:
As-tu simplement tenter d'effacer tes textbox en question pour mieux les recréer... S'il s'agissait d'un problème de paramétrage, il pourrait bien être résolu.
As-tu tenter de les renommer?
As-tu tenter de remplacer tes texbox par des inputbox? Si oui quel réaction?
Bonjour, j'ai tenter d'effacer et refaire, de le renommer, rien y fait. Quelque chose m’échappe.

J'ai trouvé une solution de contournement et créant des variable correspondant à chaque txtbox que je remplie lors du changement. Comme ca je suis sur que l'objet est actif et je requête ensuite avec ces variable.

Mais je trouve ça très surprenant, je viens du .Net et je suis un peu surpris du fonctionnement des form en vba.
jubourbon 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 04h29.


 
 
 
 
Partenaires

Hébergement Web