OVH Cloud OVH Cloud

Problème de macro

13 réponses
Avatar
Guillaume
Bonjour, j'ai un message d'erreur quand j'exécute cette macro.

Message d'erreur :
Erreur de compilation
Membre de méthode ou de données introuvable

Pouvez-vous me dire pourquoi ?

Guillaume

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT num_fournisseur, nom_fournisseur, pays_fournisseur,
origine_tissu FROM Req principal where Req principal!num_fournisseur <> 0"

If Not Me.chkTypeProduit Then
SQL = SQL & "And Req principal!type_produit = '" & Me.cmbRechTypeProduit
& "' "
End If


SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Wehre ") - Len("Where ") +
1))

SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "Req principal", SQLWhere) & " / " &
DCount("*", "Req Principal")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery


End Sub

10 réponses

1 2
Avatar
Gafish
Bonjour,

Quelle ligne est surlignée après affichage du message d'erreur ?

Arnaud

"Guillaume" a écrit dans le message de
news:
Bonjour, j'ai un message d'erreur quand j'exécute cette macro.

Message d'erreur :
Erreur de compilation
Membre de méthode ou de données introuvable

Pouvez-vous me dire pourquoi ?

Guillaume

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT num_fournisseur, nom_fournisseur, pays_fournisseur,
origine_tissu FROM Req principal where Req principal!num_fournisseur <> 0"

If Not Me.chkTypeProduit Then
SQL = SQL & "And Req principal!type_produit = '" &
Me.cmbRechTypeProduit

& "' "
End If


SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Wehre ") - Len("Where ")
+

1))

SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "Req principal", SQLWhere) & " / " &
DCount("*", "Req Principal")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery


End Sub





Avatar
Guillaume
C'est cette ligne là : Me.lstResults.RowSource = SQL

Guillaume



"Gafish" a écrit dans le message de news:
e6sx#
Bonjour,

Quelle ligne est surlignée après affichage du message d'erreur ?

Arnaud

"Guillaume" a écrit dans le message de
news:
Bonjour, j'ai un message d'erreur quand j'exécute cette macro.

Message d'erreur :
Erreur de compilation
Membre de méthode ou de données introuvable

Pouvez-vous me dire pourquoi ?

Guillaume

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT num_fournisseur, nom_fournisseur, pays_fournisseur,
origine_tissu FROM Req principal where Req principal!num_fournisseur <>
0"



If Not Me.chkTypeProduit Then
SQL = SQL & "And Req principal!type_produit = '" &
Me.cmbRechTypeProduit

& "' "
End If


SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Wehre ") - Len("Where
")


+
1))

SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "Req principal", SQLWhere) & " / " &
DCount("*", "Req Principal")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery


End Sub









Avatar
Raymond [mvp]
Bonjour.

il y a cette erreur : "Wehre " et Req principal

je pense Where et mets des [ ] dans les noms avec espaces [Req principal]
et même tache de les éviter.
sans avoir vérifié le reste.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guillaume" a écrit dans le message de
news:%
C'est cette ligne là : Me.lstResults.RowSource = SQL

Guillaume



"Gafish" a écrit dans le message de news:
e6sx#
Bonjour,

Quelle ligne est surlignée après affichage du message d'erreur ?

Arnaud




Avatar
Eric
Bonjour,

Sans garantie mais tu devrais corriger ton sql comme suit :
Mettre entre des crochets droits le nom de ta requête et utiliser le
séparateur. et non ! pour les champs de la requête. Ca donnerait :

SQL = "SELECT num_fournisseur, nom_fournisseur, pays_fournisseur,
origine_tissu FROM [Req principal] where [Req principal].num_fournisseur
<> 0"

puis un espace au moment de la concatenation:
If Not Me.chkTypeProduit Then
SQL = SQL & " And [Req principal].type_produit = '" &
Me.cmbRechTypeProduit & "' "
End If

Enfin, inversion des caractères dans ta fonction Instr
SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Wehre ") -
Len("Where ") + 1))


Mettre :
SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") -
Len("Where ") + 1))


Ps: je suppose que Me.cmbRechTypeProduit est alphanumérique car tu mets
des ', si non , enlèves les.

A+
Eric


"Guillaume" écrivait
news::

Bonjour, j'ai un message d'erreur quand j'exécute cette macro.

Message d'erreur :
Erreur de compilation
Membre de méthode ou de données introuvable

Pouvez-vous me dire pourquoi ?

Guillaume

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT num_fournisseur, nom_fournisseur, pays_fournisseur,
origine_tissu FROM Req principal where Req principal!num_fournisseur
<> 0"

If Not Me.chkTypeProduit Then
SQL = SQL & "And Req principal!type_produit = '" &
Me.cmbRechTypeProduit
& "' "
End If


SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Wehre ") -
Len("Where ") + 1))

SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "Req principal", SQLWhere) & " / " &
DCount("*", "Req Principal")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery


End Sub






Avatar
Gafish
Ton problème vient à mon avis de ta requete que tu nommes SQL.
Tu indiques :
Req principal!num_fournisseur
or je pense que Req principal est le nom de ta table, et entre le nom d'une
table et le nom d'un champ ce n'est pas un point d'exclamation mais un
point.
Tu as d'ailleurs la même chose dans le if qui suit.


"Guillaume" a écrit dans le message de
news:%
C'est cette ligne là : Me.lstResults.RowSource = SQL

Guillaume



"Gafish" a écrit dans le message de news:
e6sx#
Bonjour,

Quelle ligne est surlignée après affichage du message d'erreur ?

Arnaud

"Guillaume" a écrit dans le message de
news:
Bonjour, j'ai un message d'erreur quand j'exécute cette macro.

Message d'erreur :
Erreur de compilation
Membre de méthode ou de données introuvable

Pouvez-vous me dire pourquoi ?

Guillaume

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT num_fournisseur, nom_fournisseur, pays_fournisseur,
origine_tissu FROM Req principal where Req principal!num_fournisseur
<>



0"

If Not Me.chkTypeProduit Then
SQL = SQL & "And Req principal!type_produit = '" &
Me.cmbRechTypeProduit

& "' "
End If


SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Wehre ") -
Len("Where



")
+
1))

SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "Req principal", SQLWhere) & " / " &
DCount("*", "Req Principal")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery


End Sub













Avatar
Gafish
As tu essayé, par exemple via un msgbox de voir la "tete" de ta requête
avant le rowsource ? Ne te manque-t-il pas un espace entre la fin de SQL et
le "and " que tu ajoutes ensuite ?

"Guillaume" a écrit dans le message de
news:
Voici maintenant ma nouvelle macro :

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT num_fournisseur, nom_fournisseur, pays_fournisseur,
origine_tissu FROM [Req principal] where [Req principal].num_fournisseur <>
0"


If Not Me.chkTypeProduit Then
SQL = SQL & "And [Req principal].type_produit = '" & Me.cmbRechTypeProduit
& "' "
End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") +
1))


SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "[Req principal]", SQLWhere) & " / " &
DCount("*", "[Req Principal]")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery


End Sub


Toujours le même problème,
- une ligne soulignée en jaune : Private Sub RefreshQuery()
- une partie de ligne soulignée en bleue (ici en gras) :
Me.lstResults.RowSource = SQL

Peut-être un problème de référence dans Visual Basic Editor

Guillaume





"Raymond [mvp]" a écrit dans le message de
news: #
Bonjour.

il y a cette erreur : "Wehre " et Req principal

je pense Where et mets des [ ] dans les noms avec espaces [Req principal]
et même tache de les éviter.
sans avoir vérifié le reste.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


Avatar
Raymond [mvp]
If Not Me.chkTypeProduit Then
SQL = SQL & "And [Req principal].type_produit = '" & Me.cmbRechTypeProduit
& "' "
End If

mettre un espace avant le And

pourquoi fais-tu un dcount pour compter ta liste ? le listcount te le donne
?
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guillaume" a écrit dans le message de
news:
Voici maintenant ma nouvelle macro :

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT num_fournisseur, nom_fournisseur, pays_fournisseur,
origine_tissu FROM [Req principal] where [Req principal].num_fournisseur <>
0"


If Not Me.chkTypeProduit Then
SQL = SQL & "And [Req principal].type_produit = '" & Me.cmbRechTypeProduit
& "' "
End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") +
1))


SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "[Req principal]", SQLWhere) & " / " &
DCount("*", "[Req Principal]")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery


End Sub


Toujours le même problème,
- une ligne soulignée en jaune : Private Sub RefreshQuery()
- une partie de ligne soulignée en bleue (ici en gras) :
Me.lstResults.RowSource = SQL

Peut-être un problème de référence dans Visual Basic Editor

Guillaume
Avatar
Guillaume
Toujours le même problème qu'avant.
Je commence à despérer !!!

Je sais plus quoi faire.

Guillaume


"Raymond [mvp]" a écrit dans le message de
news:
If Not Me.chkTypeProduit Then
SQL = SQL & "And [Req principal].type_produit = '" &
Me.cmbRechTypeProduit

& "' "
End If

mettre un espace avant le And

pourquoi fais-tu un dcount pour compter ta liste ? le listcount te le
donne

?
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guillaume" a écrit dans le message de
news:
Voici maintenant ma nouvelle macro :

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT num_fournisseur, nom_fournisseur, pays_fournisseur,
origine_tissu FROM [Req principal] where [Req principal].num_fournisseur
<>

0"


If Not Me.chkTypeProduit Then
SQL = SQL & "And [Req principal].type_produit = '" &
Me.cmbRechTypeProduit

& "' "
End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ")
+

1))


SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "[Req principal]", SQLWhere) & " / " &
DCount("*", "[Req Principal]")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery


End Sub


Toujours le même problème,
- une ligne soulignée en jaune : Private Sub RefreshQuery()
- une partie de ligne soulignée en bleue (ici en gras) :
Me.lstResults.RowSource = SQL

Peut-être un problème de référence dans Visual Basic Editor

Guillaume





Avatar
Eric
re,

Dans ton code
sous la ligne SQL=SQL & ";"

mets : Debug.Print SQL : Stop
et copies le sql en clair affiché dans la fenêtre de debogage ici.
(Idem pour le SQLWhere)

A+
Eric


"Guillaume" écrivait
news::

Toujours le même problème qu'avant.
Je commence à despérer !!!

Je sais plus quoi faire.

Guillaume


"Raymond [mvp]" a écrit dans le message
de news:
If Not Me.chkTypeProduit Then
SQL = SQL & "And [Req principal].type_produit = '" &
Me.cmbRechTypeProduit

& "' "
End If

mettre un espace avant le And

pourquoi fais-tu un dcount pour compter ta liste ? le listcount te le
donne

?
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guillaume" a écrit dans le message de
news:
Voici maintenant ma nouvelle macro :

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT num_fournisseur, nom_fournisseur, pays_fournisseur,
origine_tissu FROM [Req principal] where [Req
principal].num_fournisseur
<>

0"


If Not Me.chkTypeProduit Then
SQL = SQL & "And [Req principal].type_produit = '" &
Me.cmbRechTypeProduit

& "' "
End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") -
Len("Where ")
+

1))


SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "[Req principal]", SQLWhere) & " /
" & DCount("*", "[Req Principal]")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery


End Sub


Toujours le même problème,
- une ligne soulignée en jaune : Private Sub RefreshQuery()
- une partie de ligne soulignée en bleue (ici en gras) :
Me.lstResults.RowSource = SQL

Peut-être un problème de référence dans Visual Basic Editor

Guillaume










Avatar
Guillaume
Pas de fenêtre de débogage qui apparait
Guillaume

PS : J'essaye de prendre exemple par rapport à cet exemple là :
http://cafeine.developpez.com/access/recherche/



"Eric" a écrit dans le message de news:

re,

Dans ton code
sous la ligne SQL=SQL & ";"

mets : Debug.Print SQL : Stop
et copies le sql en clair affiché dans la fenêtre de debogage ici.
(Idem pour le SQLWhere)

A+
Eric


"Guillaume" écrivait
news::

Toujours le même problème qu'avant.
Je commence à despérer !!!

Je sais plus quoi faire.

Guillaume


"Raymond [mvp]" a écrit dans le message
de news:
If Not Me.chkTypeProduit Then
SQL = SQL & "And [Req principal].type_produit = '" &
Me.cmbRechTypeProduit

& "' "
End If

mettre un espace avant le And

pourquoi fais-tu un dcount pour compter ta liste ? le listcount te le
donne

?
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Guillaume" a écrit dans le message de
news:
Voici maintenant ma nouvelle macro :

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT num_fournisseur, nom_fournisseur, pays_fournisseur,
origine_tissu FROM [Req principal] where [Req
principal].num_fournisseur
<>

0"


If Not Me.chkTypeProduit Then
SQL = SQL & "And [Req principal].type_produit = '" &
Me.cmbRechTypeProduit

& "' "
End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") -
Len("Where ")
+

1))


SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "[Req principal]", SQLWhere) & " /
" & DCount("*", "[Req Principal]")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery


End Sub


Toujours le même problème,
- une ligne soulignée en jaune : Private Sub RefreshQuery()
- une partie de ligne soulignée en bleue (ici en gras) :
Me.lstResults.RowSource = SQL

Peut-être un problème de référence dans Visual Basic Editor

Guillaume













1 2