OVH Cloud OVH Cloud

Erreur de compilation Type d'argument ByRef incompatible

5 réponses
Avatar
francisco
Bonjour tout le monde
J'ai déclaré une requête dans un module standard;
et un module ModExecuterRequete ou j'execute la requête. J'ai l'erreur
suivante erreur de compilation Type d'argument Byref incompatible à ce
niveau
rst.Open Rsql(CritereCodeProduct), cnt, adOpenStatic
Merci pour vos reponses Amicalement Francisco
-------------------------------------
ModDeclarationVariale
------------------------------------
Public Function Rsql(CritereCodeProduct As String)
Rsql = "Select Ventes1999.CodeProduct FROM Ventes1999 WHERE
((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "') ;"
End Function

----------------------------------------
ModExecuterRequete
----------------------------------------
Sub EtablirConnexion(OuvrirFichier)

Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim i As Integer

Dim CritereCodeProduct As String

CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value
'----------------------------------------------------
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
c:\psm_analyse_formulaire.mdb ;"
rst.Open Rsql(CritereCodeProduct), cnt, adOpenStatic

Columns("A").Clear
Range("A4") = "Type de produit"
Range("A4").Font.Bold = True
i = 4
While Not rst.EOF
i = i + 1
Sheets("Feuil1").Range("A" & i).Value = rst!CodeProduct
rst.MoveNext
Wend

rst.Close
Set rst = Nothing
End Sub

5 réponses

Avatar
francisco
Merci MichDenis avec ByVal cela marche à merveille mais j'ai encore une
erreur qui n'a rien à voir avec ByVal pour cette raison execuse moi de te
solliciter encore une fois.Au niveau de mon second recordset au niveau de
ALIMENTATION LIBELLE CODE PRODUCT Sheets("Feuil1").Range("B" & i).Value rst1!LibelleCodeProduct je suis confronté à l'erreur d'execution suivante
impossible de trouver l'object dans la collection correspondant à la
reference ordinale demandé. Qu'est ce que cela veut dire ? Est ce que tu
sais d'ou peut venir mon erreur ?

En tout cas un grand merci pour toutes dtes explications et execuse moi de
te solliciter encore une fois mais j'ai tellement envie que cela marche

Sub EtablirConnexion(OuvrirFichier)

Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim rst1 As New ADODB.Recordset

Dim i As Integer

Dim CritereCodeProduct
CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value

'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source c:psm_analyse_formulaire.mdb ;"
'------------------------------------------------------------
'Alimentation CODEPRODUCT
'------------------------------------------------------------
rst.Open Rsql(CritereCodeProduct), cnt, adOpenStatic

Columns("A").Clear
Range("A4") = "Type de produit"
Range("A4").Font.Bold = True
i = 4
While Not rst.EOF
i = i + 1
Sheets("Feuil1").Range("A" & i).Value = rst!CodeProduct
rst.MoveNext
Wend

rst.Close
Set rst = Nothing

'-----------------------------------------
'ALIMENTATION DE LIBELLE CODE PRODUCT
'-----------------------------------------

rst1.Open Rsql(CritereCodeProduct), cnt, adOpenStatic

Columns("B").Clear
Range("B4") = "Libellé"
Range("B4").Font.Bold = True
i = 4
While Not rst1.EOF
i = i + 1
Sheets("Feuil1").Range("B" & i).Value = rst1!LibelleCodeProduct
rst1.MoveNext
Wend

rst1.Close
Set rst1 = Nothing
End Sub
"michdenis" a écrit dans le message de
news:eI$
à titre de complément :

Il soit y avoir quelque chose qui cloche dans la façon d'appeler la
fonction.


Voici 2 exemples :
A ) Cette ligne de code va fonctionner très bien
sans besoin d'ajouter "ByVal" à la déclaration de la fonction
'----------------------------------
Dim CritereCodeProduct as string
CritereCodeProduct = "toto"
MsgBox Rsql(CritereCodeProduct)
'----------------------------------

B ) Si tu appelles ta fonctionne de cette façon, tu vas avoir besoin de
l'expression "ByVal" car avant l'appel, je n'ai

pas défini la valeur de la variable "CritereCodeProduct" et elle est donc
vide


MsgBox Rsql(CritereCodeProduct)

L'argument de la fonction attend une soit une variable dont la valeur est
de type "String" ou soit la valeur sans

l'usage d'une variable comme ceci
MsgBox Rsql("toto")

Si tu utilises une variable pour définir l'argument, cette variable doit
avoir été renseigné avant de la passer à la

fonction comme dans mon premier exemple...sinon comme dans mon dernier
exemple... tu dois passer une "chaîne de

caractère" comme argument de la fonction et cette chaîne doit être entre
guillemet.


Dans le cas qui te concerne, ma suggestion d'ajouter "ByVal" va peut être
te permettre d'appeler la fonction mais peut

être que le résultat attendu ne sera pas du rendez-vous.


Salutations!



Bonjour Francisco,

J'ai seulement ajouté "ByVal" dans la déclaration de la fonction.

Quel est la vaeur de ton critère "CritereCodeProduct" ?

Public Function Rsql(ByVal CritereCodeProduct As String)
Rsql = "Select Ventes1999.CodeProduct FROM Ventes1999 WHERE
((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "') ;"
End Function


Salutations!



"francisco" a écrit dans le message de
news:c8o4rf$98n$

Bonjour tout le monde
J'ai déclaré une requête dans un module standard;
et un module ModExecuterRequete ou j'execute la requête. J'ai l'erreur
suivante erreur de compilation Type d'argument Byref incompatible à ce
niveau
rst.Open Rsql(CritereCodeProduct), cnt, adOpenStatic
Merci pour vos reponses Amicalement Francisco
-------------------------------------
ModDeclarationVariale
------------------------------------
Public Function Rsql(CritereCodeProduct As String)
Rsql = "Select Ventes1999.CodeProduct FROM Ventes1999 WHERE
((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "') ;"
End Function

----------------------------------------
ModExecuterRequete
----------------------------------------
Sub EtablirConnexion(OuvrirFichier)

Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim i As Integer

Dim CritereCodeProduct As String

CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value
'----------------------------------------------------
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source > c:psm_analyse_formulaire.mdb ;"
rst.Open Rsql(CritereCodeProduct), cnt, adOpenStatic

Columns("A").Clear
Range("A4") = "Type de produit"
Range("A4").Font.Bold = True
i = 4
While Not rst.EOF
i = i + 1
Sheets("Feuil1").Range("A" & i).Value = rst!CodeProduct
rst.MoveNext
Wend

rst.Close
Set rst = Nothing
End Sub







Avatar
francisco
Merci pour tout MichDenis J'ai trouvé pour l'autre erreur
en tout cas merci pour tes explications et pour ton aide bonne soirée et
amuse toi bien

"francisco" a écrit dans le message de
news:c8o9q5$p6h$
Merci MichDenis avec ByVal cela marche à merveille mais j'ai encore une
erreur qui n'a rien à voir avec ByVal pour cette raison execuse moi de te
solliciter encore une fois.Au niveau de mon second recordset au niveau de
ALIMENTATION LIBELLE CODE PRODUCT Sheets("Feuil1").Range("B" & i).Value
rst1!LibelleCodeProduct je suis confronté à l'erreur d'execution suivante
impossible de trouver l'object dans la collection correspondant à la
reference ordinale demandé. Qu'est ce que cela veut dire ? Est ce que tu
sais d'ou peut venir mon erreur ?

En tout cas un grand merci pour toutes dtes explications et execuse moi de
te solliciter encore une fois mais j'ai tellement envie que cela marche

Sub EtablirConnexion(OuvrirFichier)

Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim rst1 As New ADODB.Recordset

Dim i As Integer

Dim CritereCodeProduct
CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value

'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source > c:psm_analyse_formulaire.mdb ;"
'------------------------------------------------------------
'Alimentation CODEPRODUCT
'------------------------------------------------------------
rst.Open Rsql(CritereCodeProduct), cnt, adOpenStatic

Columns("A").Clear
Range("A4") = "Type de produit"
Range("A4").Font.Bold = True
i = 4
While Not rst.EOF
i = i + 1
Sheets("Feuil1").Range("A" & i).Value = rst!CodeProduct
rst.MoveNext
Wend

rst.Close
Set rst = Nothing

'-----------------------------------------
'ALIMENTATION DE LIBELLE CODE PRODUCT
'-----------------------------------------

rst1.Open Rsql(CritereCodeProduct), cnt, adOpenStatic

Columns("B").Clear
Range("B4") = "Libellé"
Range("B4").Font.Bold = True
i = 4
While Not rst1.EOF
i = i + 1
Sheets("Feuil1").Range("B" & i).Value = rst1!LibelleCodeProduct
rst1.MoveNext
Wend

rst1.Close
Set rst1 = Nothing
End Sub
"michdenis" a écrit dans le message de
news:eI$
à titre de complément :

Il soit y avoir quelque chose qui cloche dans la façon d'appeler la
fonction.


Voici 2 exemples :
A ) Cette ligne de code va fonctionner très bien
sans besoin d'ajouter "ByVal" à la déclaration de la fonction
'----------------------------------
Dim CritereCodeProduct as string
CritereCodeProduct = "toto"
MsgBox Rsql(CritereCodeProduct)
'----------------------------------

B ) Si tu appelles ta fonctionne de cette façon, tu vas avoir besoin de
l'expression "ByVal" car avant l'appel, je n'ai

pas défini la valeur de la variable "CritereCodeProduct" et elle est
donc


vide

MsgBox Rsql(CritereCodeProduct)

L'argument de la fonction attend une soit une variable dont la valeur
est


de type "String" ou soit la valeur sans
l'usage d'une variable comme ceci
MsgBox Rsql("toto")

Si tu utilises une variable pour définir l'argument, cette variable doit
avoir été renseigné avant de la passer à la

fonction comme dans mon premier exemple...sinon comme dans mon dernier
exemple... tu dois passer une "chaîne de

caractère" comme argument de la fonction et cette chaîne doit être entre
guillemet.


Dans le cas qui te concerne, ma suggestion d'ajouter "ByVal" va peut
être


te permettre d'appeler la fonction mais peut
être que le résultat attendu ne sera pas du rendez-vous.


Salutations!



Bonjour Francisco,

J'ai seulement ajouté "ByVal" dans la déclaration de la fonction.

Quel est la vaeur de ton critère "CritereCodeProduct" ?

Public Function Rsql(ByVal CritereCodeProduct As String)
Rsql = "Select Ventes1999.CodeProduct FROM Ventes1999 WHERE
((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "') ;"
End Function


Salutations!



"francisco" a écrit dans le message de
news:c8o4rf$98n$

Bonjour tout le monde
J'ai déclaré une requête dans un module standard;
et un module ModExecuterRequete ou j'execute la requête. J'ai l'erreur
suivante erreur de compilation Type d'argument Byref incompatible à ce
niveau
rst.Open Rsql(CritereCodeProduct), cnt, adOpenStatic
Merci pour vos reponses Amicalement Francisco
-------------------------------------
ModDeclarationVariale
------------------------------------
Public Function Rsql(CritereCodeProduct As String)
Rsql = "Select Ventes1999.CodeProduct FROM Ventes1999 WHERE
((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "') ;"
End Function

----------------------------------------
ModExecuterRequete
----------------------------------------
Sub EtablirConnexion(OuvrirFichier)

Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim i As Integer

Dim CritereCodeProduct As String

CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value
'----------------------------------------------------
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source > > c:psm_analyse_formulaire.mdb ;"
rst.Open Rsql(CritereCodeProduct), cnt, adOpenStatic

Columns("A").Clear
Range("A4") = "Type de produit"
Range("A4").Font.Bold = True
i = 4
While Not rst.EOF
i = i + 1
Sheets("Feuil1").Range("A" & i).Value = rst!CodeProduct
rst.MoveNext
Wend

rst.Close
Set rst = Nothing
End Sub











Avatar
michdenis
Bonjour Francisco,

J'ai seulement ajouté "ByVal" dans la déclaration de la fonction.

Quel est la vaeur de ton critère "CritereCodeProduct" ?

Public Function Rsql(ByVal CritereCodeProduct As String)
Rsql = "Select Ventes1999.CodeProduct FROM Ventes1999 WHERE
((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "') ;"
End Function


Salutations!



"francisco" a écrit dans le message de news:c8o4rf$98n$
Bonjour tout le monde
J'ai déclaré une requête dans un module standard;
et un module ModExecuterRequete ou j'execute la requête. J'ai l'erreur
suivante erreur de compilation Type d'argument Byref incompatible à ce
niveau
rst.Open Rsql(CritereCodeProduct), cnt, adOpenStatic
Merci pour vos reponses Amicalement Francisco
-------------------------------------
ModDeclarationVariale
------------------------------------
Public Function Rsql(CritereCodeProduct As String)
Rsql = "Select Ventes1999.CodeProduct FROM Ventes1999 WHERE
((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "') ;"
End Function

----------------------------------------
ModExecuterRequete
----------------------------------------
Sub EtablirConnexion(OuvrirFichier)

Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim i As Integer

Dim CritereCodeProduct As String

CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value
'----------------------------------------------------
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source c:psm_analyse_formulaire.mdb ;"
rst.Open Rsql(CritereCodeProduct), cnt, adOpenStatic

Columns("A").Clear
Range("A4") = "Type de produit"
Range("A4").Font.Bold = True
i = 4
While Not rst.EOF
i = i + 1
Sheets("Feuil1").Range("A" & i).Value = rst!CodeProduct
rst.MoveNext
Wend

rst.Close
Set rst = Nothing
End Sub
Avatar
michdenis
à titre de complément :

Il soit y avoir quelque chose qui cloche dans la façon d'appeler la fonction.

Voici 2 exemples :
A ) Cette ligne de code va fonctionner très bien
sans besoin d'ajouter "ByVal" à la déclaration de la fonction
'----------------------------------
Dim CritereCodeProduct as string
CritereCodeProduct = "toto"
MsgBox Rsql(CritereCodeProduct)
'----------------------------------

B ) Si tu appelles ta fonctionne de cette façon, tu vas avoir besoin de l'expression "ByVal" car avant l'appel, je n'ai
pas défini la valeur de la variable "CritereCodeProduct" et elle est donc vide

MsgBox Rsql(CritereCodeProduct)

L'argument de la fonction attend une soit une variable dont la valeur est de type "String" ou soit la valeur sans
l'usage d'une variable comme ceci
MsgBox Rsql("toto")

Si tu utilises une variable pour définir l'argument, cette variable doit avoir été renseigné avant de la passer à la
fonction comme dans mon premier exemple...sinon comme dans mon dernier exemple... tu dois passer une "chaîne de
caractère" comme argument de la fonction et cette chaîne doit être entre guillemet.

Dans le cas qui te concerne, ma suggestion d'ajouter "ByVal" va peut être te permettre d'appeler la fonction mais peut
être que le résultat attendu ne sera pas du rendez-vous.


Salutations!



Bonjour Francisco,

J'ai seulement ajouté "ByVal" dans la déclaration de la fonction.

Quel est la vaeur de ton critère "CritereCodeProduct" ?

Public Function Rsql(ByVal CritereCodeProduct As String)
Rsql = "Select Ventes1999.CodeProduct FROM Ventes1999 WHERE
((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "') ;"
End Function


Salutations!



"francisco" a écrit dans le message de news:c8o4rf$98n$
Bonjour tout le monde
J'ai déclaré une requête dans un module standard;
et un module ModExecuterRequete ou j'execute la requête. J'ai l'erreur
suivante erreur de compilation Type d'argument Byref incompatible à ce
niveau
rst.Open Rsql(CritereCodeProduct), cnt, adOpenStatic
Merci pour vos reponses Amicalement Francisco
-------------------------------------
ModDeclarationVariale
------------------------------------
Public Function Rsql(CritereCodeProduct As String)
Rsql = "Select Ventes1999.CodeProduct FROM Ventes1999 WHERE
((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "') ;"
End Function

----------------------------------------
ModExecuterRequete
----------------------------------------
Sub EtablirConnexion(OuvrirFichier)

Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim i As Integer

Dim CritereCodeProduct As String

CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value
'----------------------------------------------------
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source c:psm_analyse_formulaire.mdb ;"
rst.Open Rsql(CritereCodeProduct), cnt, adOpenStatic

Columns("A").Clear
Range("A4") = "Type de produit"
Range("A4").Font.Bold = True
i = 4
While Not rst.EOF
i = i + 1
Sheets("Feuil1").Range("A" & i).Value = rst!CodeProduct
rst.MoveNext
Wend

rst.Close
Set rst = Nothing
End Sub
Avatar
michdenis
Bonjour Francisco,

Si tu veux boucler sur un champ particulier du recordset pour extraire seulement les données une à la suite des autres,
tu peux procéder comme suit :

J'ai supposé que "CodeProduct" est le nom du champ de ton recordset
Dans l'exemple suivant, tu peux remplaceer "CodeProduct" par
son "Index" dans le recordset - Sa position par rapport à l'ensemble du recordset
'--------------------
Dim K as long
K = Rst.RecordCount
For i = 0 To K
Sheets("Feuil1").Range("A" & i).Value = Rst.Fields("CodeProduct")
Rst.MoveNext
Next
'--------------------


Si tu veux boucler pour trouver le nom des champs de ton recordset, tu peux procéder ainsi:
'-----------------------
Dim i as integer
Do
Sheets("Feuil1").Range("A" & i +1).Value = Rst.Fields(i).Name
i = i + 1
Loop Until i = Rst.Fields.Count
'-----------------------


Salutations!



"francisco" a écrit dans le message de news:c8o9q5$p6h$
Merci MichDenis avec ByVal cela marche à merveille mais j'ai encore une
erreur qui n'a rien à voir avec ByVal pour cette raison execuse moi de te
solliciter encore une fois.Au niveau de mon second recordset au niveau de
ALIMENTATION LIBELLE CODE PRODUCT Sheets("Feuil1").Range("B" & i).Value rst1!LibelleCodeProduct je suis confronté à l'erreur d'execution suivante
impossible de trouver l'object dans la collection correspondant à la
reference ordinale demandé. Qu'est ce que cela veut dire ? Est ce que tu
sais d'ou peut venir mon erreur ?

En tout cas un grand merci pour toutes dtes explications et execuse moi de
te solliciter encore une fois mais j'ai tellement envie que cela marche

Sub EtablirConnexion(OuvrirFichier)

Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim rst1 As New ADODB.Recordset

Dim i As Integer

Dim CritereCodeProduct
CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value

'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source c:psm_analyse_formulaire.mdb ;"
'------------------------------------------------------------
'Alimentation CODEPRODUCT
'------------------------------------------------------------
rst.Open Rsql(CritereCodeProduct), cnt, adOpenStatic

Columns("A").Clear
Range("A4") = "Type de produit"
Range("A4").Font.Bold = True
i = 4
While Not rst.EOF
i = i + 1
Sheets("Feuil1").Range("A" & i).Value = rst!CodeProduct
rst.MoveNext
Wend

rst.Close
Set rst = Nothing

'-----------------------------------------
'ALIMENTATION DE LIBELLE CODE PRODUCT
'-----------------------------------------

rst1.Open Rsql(CritereCodeProduct), cnt, adOpenStatic

Columns("B").Clear
Range("B4") = "Libellé"
Range("B4").Font.Bold = True
i = 4
While Not rst1.EOF
i = i + 1
Sheets("Feuil1").Range("B" & i).Value = rst1!LibelleCodeProduct
rst1.MoveNext
Wend

rst1.Close
Set rst1 = Nothing
End Sub
"michdenis" a écrit dans le message de
news:eI$
à titre de complément :

Il soit y avoir quelque chose qui cloche dans la façon d'appeler la
fonction.


Voici 2 exemples :
A ) Cette ligne de code va fonctionner très bien
sans besoin d'ajouter "ByVal" à la déclaration de la fonction
'----------------------------------
Dim CritereCodeProduct as string
CritereCodeProduct = "toto"
MsgBox Rsql(CritereCodeProduct)
'----------------------------------

B ) Si tu appelles ta fonctionne de cette façon, tu vas avoir besoin de
l'expression "ByVal" car avant l'appel, je n'ai

pas défini la valeur de la variable "CritereCodeProduct" et elle est donc
vide


MsgBox Rsql(CritereCodeProduct)

L'argument de la fonction attend une soit une variable dont la valeur est
de type "String" ou soit la valeur sans

l'usage d'une variable comme ceci
MsgBox Rsql("toto")

Si tu utilises une variable pour définir l'argument, cette variable doit
avoir été renseigné avant de la passer à la

fonction comme dans mon premier exemple...sinon comme dans mon dernier
exemple... tu dois passer une "chaîne de

caractère" comme argument de la fonction et cette chaîne doit être entre
guillemet.


Dans le cas qui te concerne, ma suggestion d'ajouter "ByVal" va peut être
te permettre d'appeler la fonction mais peut

être que le résultat attendu ne sera pas du rendez-vous.


Salutations!



Bonjour Francisco,

J'ai seulement ajouté "ByVal" dans la déclaration de la fonction.

Quel est la vaeur de ton critère "CritereCodeProduct" ?

Public Function Rsql(ByVal CritereCodeProduct As String)
Rsql = "Select Ventes1999.CodeProduct FROM Ventes1999 WHERE
((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "') ;"
End Function


Salutations!



"francisco" a écrit dans le message de
news:c8o4rf$98n$

Bonjour tout le monde
J'ai déclaré une requête dans un module standard;
et un module ModExecuterRequete ou j'execute la requête. J'ai l'erreur
suivante erreur de compilation Type d'argument Byref incompatible à ce
niveau
rst.Open Rsql(CritereCodeProduct), cnt, adOpenStatic
Merci pour vos reponses Amicalement Francisco
-------------------------------------
ModDeclarationVariale
------------------------------------
Public Function Rsql(CritereCodeProduct As String)
Rsql = "Select Ventes1999.CodeProduct FROM Ventes1999 WHERE
((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "') ;"
End Function

----------------------------------------
ModExecuterRequete
----------------------------------------
Sub EtablirConnexion(OuvrirFichier)

Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim i As Integer

Dim CritereCodeProduct As String

CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value
'----------------------------------------------------
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source > c:psm_analyse_formulaire.mdb ;"
rst.Open Rsql(CritereCodeProduct), cnt, adOpenStatic

Columns("A").Clear
Range("A4") = "Type de produit"
Range("A4").Font.Bold = True
i = 4
While Not rst.EOF
i = i + 1
Sheets("Feuil1").Range("A" & i).Value = rst!CodeProduct
rst.MoveNext
Wend

rst.Close
Set rst = Nothing
End Sub