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.
Même problème, recherche, et finalement, solution
Bonjour,
Je comprendrai jamais comment Microsoft peut se permettre d'avoir des philosophies de développement différentes pour une même gamme de produits.
J'ai un recordset qui me renvoie un enregistrement unique, et à partir duquel je souhaite remplir une zone de texte (textbox).
Sur Excel 2003, maTextBox.Text = maValeur marche sans problème.
Après fouille intense pour Access, j'ai finalement trouvé la solution dans l'aide associée (touche F1 sur windows) de la propriété ... Text du textbox.
Ainsi, il est bien précisé dans l'aide d'Access que le contrôle doit être actif avant de pouvoir lire ou écrire sa valeur, ce qui signifie, en VBA, qu'il faut lui assigner le focus AVANT de le lire ou de le charger.
Ce qui, accessoirement, impacte l'écran visuel puisque sélectionne le textbox en question et l'affiche, ce qui est parfois extrêmement génant (je pense notamment au contrôle onglet, quand on charge un bon paquet de valeurs ...).
Cela étant, voici le code correct pour la solution:
Code:
1 2 3
|
maTextBox.SetFocus
maTextBox.Text = maValeur |
Clair qu'ils ont fait de gros efforts de cohérences et d'efficacité dans Visual Studio et SQL Server ...