IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

erreur d'execution 2185 lors de l'execution d'une sub vba


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre chevronné Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Par défaut
    Bonjour!
    Premièrement ces bizarre tu dit :
    Sur l’événement de clique j'ai une procédure associé:
    et ta procédure porte ce nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub txtNumProd_Change()
    nous devrions voir quelques chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Membre éclairé Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        txtNumProd.Enabled = True
        txtNomProd.Enabled = True
        txtNomProducteur.Enabled = True
    Mais ça me renvoi la meme erreur

  4. #4
    Invité
    Invité(e)
    Par défaut
    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

  5. #5
    Membre éclairé Avatar de jubourbon
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 540
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  6. #6
    Membre éprouvé
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 97
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    Labor omnia vincit improbus (Un travail opiniâtre vient à bout de tout)


    Vous vous posez une question? Quelqu'un se l'est certainement posée avant vous!
    Avant de poster, n'oubliez pas de consulter les FAQ Access et VBA ainsi que les tutoriels.
    Utilisez le champ de recherche sans modération pour fouiller les forums.

  7. #7
    Membre chevronné Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Par défaut
    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

Discussions similaires

  1. [LibreOffice][Base de données] Erreur sur les dates lors de l'execution d'un script BASIC.
    Par Al PiGiNo dans le forum OpenOffice & LibreOffice
    Réponses: 4
    Dernier message: 05/11/2014, 09h37
  2. Erreur java.io.EOFException lors de l'execution
    Par kevin254kl dans le forum Java EE
    Réponses: 6
    Dernier message: 16/10/2014, 16h33
  3. [XL-2010] Erreur lors de l'appel d'une fonction VBA à partir d'Excel
    Par Romain92 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/09/2014, 11h21
  4. Réponses: 1
    Dernier message: 23/07/2014, 14h33
  5. Erreur sur certains ordis lors de l'execution
    Par Nix6800 dans le forum VB.NET
    Réponses: 7
    Dernier message: 06/07/2009, 22h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo