Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Appeler une procedure qui se trouve dans un module à prtir d'un autre module pour eviter les taches repetitives

3 réponses
Avatar
francisco
Bonjour tout le monde
Execusez moi je repose d'une autre manière ma question car j'ai du mal à
expliquer clairement ce que je veux faire j'espere que sous cette angle je
sois plus clair
Comment faire pour appeler une requete qui se trouve dans un module distinct
à partir d'un autre module .Le module ou se trouve la requête Rsql
s'appelle ModRequête et la procedure Sub Requête () .
L'endroit à partir duquel je dois appeler cette requête est Le module
ModConnexion et la procedure se denomme Sub Connexion ()
Mon objectif final est de pouvoir isoler ma requete Rsql dans un autre
module de manière à pouvoir l'utiliser dans plusieurs procedures en meme
temps sans etre tout le temps entrain de la reecrire.
Vous trouverez en dessous le code
Amicalement Francisco
Merci pour votre aide
________________________________________
ModRequête
'_________________________________________
Public Rsql As String
__________________________________________
Sub requête()
Rsql = "Select Ventes1999.CodeProduct, Ventes1999.LibelleCodeProduct,
Ventes1999.CodeConditionnement,Ventes1999.CodeCouleur," _
& " Ventes1999.Grammage, Ventes1999.PM, Ventes1999.Volume,
Ventes1999.AverageExMill ," _
& " Ventes1999.VariablesCosts, Ventes1999.FixedCosts,
Ventes1999.TonnesHeures FROM Ventes1999 " _
& "WHERE ((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "' and
(Ventes1999.CodeConditionnement)= '" & CritereConditionnement & "' and
(Ventes1999.PM) = '" & CriterePM & "'and Ventes1999.CodeCouleur= '" &
CritereCouleur & "'and Ventes1999.Volume >" & Replace(CritereVolume, ",",
".") & " );"

End Sub
'_______________________________________________
ModConnexion
'______________________________________________
ce code provient d'un module appelé ModConnexion
Sub Connexion()
Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim rst1 As New ADODB.Recordset
Dim i As Integer
Dim Rsql As String


CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value
CritereConditionnement = FrmSaisie.CboListeConditionnement.Value
CriterePM = FrmSaisie.CboListePM.Value
CritereCouleur = FrmSaisie.CboListeCouleur.Value
CritereVolume = FrmSaisie.CboListeVolume.Value
___________________________________
'Que doids je mettre ici à la place de Rsql
__________________________________
Rsql = "Select Ventes1999.CodeProduct,
Ventes1999.LibelleCodeProduct,
Ventes1999.CodeConditionnement,Ventes1999.CodeCouleur," _
& " Ventes1999.Grammage, Ventes1999.PM, Ventes1999.Volume,
Ventes1999.AverageExMill ," _
& " Ventes1999.VariablesCosts, Ventes1999.FixedCosts,
Ventes1999.TonnesHeures FROM Ventes1999 " _
& "WHERE ((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "' and
(Ventes1999.CodeConditionnement)= '" & CritereConditionnement & "' and
(Ventes1999.PM) = '" & CriterePM & "'and Ventes1999.CodeCouleur= '" &
CritereCouleur & "'and Ventes1999.Volume >" & Replace(CritereVolume, ",",
".") & " );"


'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
c:\psm_analyse_formulaire.mdb ;"
'------------------------------------------------------------
'Alimentation CODEPRODUCT
'------------------------------------------------------------

rst.Open Rsql, cnt

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

3 réponses

Avatar
E KERGRESSE
Salut Francisco,

Je ne réalise pas souvent de requêtes sur des bases de données, je ne
pourrai donc pas t'aider sur l'ensemble de ton code, mais quelques remarques
sur ce que j'ai vu.

L'organisation en module n'a pas beaucoup d'importance dès lors que tes
variables utilisées de module en module sont déclarées public comme tu l'as
fait ici pour Rsql.

Par contre tu ne peux pas déclarer la même variable Rsql dans ta procédure
Sub Connexion() en Dim Rsql car c'est c'est cette dernière qui contiendra le
résultat de ta requête, comme tu as limité la portée de la variable en la
déclarant dans la procédure, tu perds son contenu quand la procédure est
finie.

Il te suffit donc de ne pas déclarer Rsql dans Sub Connexion().

Cordialement.





"francisco" a écrit dans le message de news:
c6t5jf$4c1$
Bonjour tout le monde
Execusez moi je repose d'une autre manière ma question car j'ai du mal à
expliquer clairement ce que je veux faire j'espere que sous cette angle je
sois plus clair
Comment faire pour appeler une requete qui se trouve dans un module
distinct

à partir d'un autre module .Le module ou se trouve la requête Rsql
s'appelle ModRequête et la procedure Sub Requête () .
L'endroit à partir duquel je dois appeler cette requête est Le module
ModConnexion et la procedure se denomme Sub Connexion ()
Mon objectif final est de pouvoir isoler ma requete Rsql dans un autre
module de manière à pouvoir l'utiliser dans plusieurs procedures en meme
temps sans etre tout le temps entrain de la reecrire.
Vous trouverez en dessous le code
Amicalement Francisco
Merci pour votre aide
________________________________________
ModRequête
'_________________________________________
Public Rsql As String
__________________________________________
Sub requête()
Rsql = "Select Ventes1999.CodeProduct, Ventes1999.LibelleCodeProduct,
Ventes1999.CodeConditionnement,Ventes1999.CodeCouleur," _
& " Ventes1999.Grammage, Ventes1999.PM, Ventes1999.Volume,
Ventes1999.AverageExMill ," _
& " Ventes1999.VariablesCosts, Ventes1999.FixedCosts,
Ventes1999.TonnesHeures FROM Ventes1999 " _
& "WHERE ((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "'
and

(Ventes1999.CodeConditionnement)= '" & CritereConditionnement & "' and
(Ventes1999.PM) = '" & CriterePM & "'and Ventes1999.CodeCouleur= '" &
CritereCouleur & "'and Ventes1999.Volume >" & Replace(CritereVolume, ",",
".") & " );"

End Sub
'_______________________________________________
ModConnexion
'______________________________________________
ce code provient d'un module appelé ModConnexion
Sub Connexion()
Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim rst1 As New ADODB.Recordset
Dim i As Integer
Dim Rsql As String


CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value
CritereConditionnement = FrmSaisie.CboListeConditionnement.Value
CriterePM = FrmSaisie.CboListePM.Value
CritereCouleur = FrmSaisie.CboListeCouleur.Value
CritereVolume = FrmSaisie.CboListeVolume.Value
___________________________________
'Que doids je mettre ici à la place de Rsql
__________________________________
Rsql = "Select Ventes1999.CodeProduct,
Ventes1999.LibelleCodeProduct,
Ventes1999.CodeConditionnement,Ventes1999.CodeCouleur," _
& " Ventes1999.Grammage, Ventes1999.PM, Ventes1999.Volume,
Ventes1999.AverageExMill ," _
& " Ventes1999.VariablesCosts, Ventes1999.FixedCosts,
Ventes1999.TonnesHeures FROM Ventes1999 " _
& "WHERE ((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "'
and

(Ventes1999.CodeConditionnement)= '" & CritereConditionnement & "' and
(Ventes1999.PM) = '" & CriterePM & "'and Ventes1999.CodeCouleur= '" &
CritereCouleur & "'and Ventes1999.Volume >" & Replace(CritereVolume, ",",
".") & " );"


'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source > c:psm_analyse_formulaire.mdb ;"
'------------------------------------------------------------
'Alimentation CODEPRODUCT
'------------------------------------------------------------

rst.Open Rsql, cnt

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
Thierry Euzenot
Heu deux solutions à mon avis :

1) Dans ta procédure Sub Connexion() tu fais tout simplement un Call
Requête(arg1, arg2, arg3, etc.)
Où arg1, arg2, arg3, etc. sont les arguments qui te servent à définir ta
requête.

2) Ta procédure Requête() ressemble plus à une fonction qu'à une procédure
non ?
Heu là par contre les fonctions et moi on est plutôt fachés je pourrais pas
t'expliquer :o(

J'espère avoir répondu à ta question ^^


"francisco" a écrit dans le message de
news:c6t5jf$4c1$
Bonjour tout le monde
Execusez moi je repose d'une autre manière ma question car j'ai du mal à
expliquer clairement ce que je veux faire j'espere que sous cette angle je
sois plus clair
Comment faire pour appeler une requete qui se trouve dans un module
distinct

à partir d'un autre module .Le module ou se trouve la requête Rsql
s'appelle ModRequête et la procedure Sub Requête () .
L'endroit à partir duquel je dois appeler cette requête est Le module
ModConnexion et la procedure se denomme Sub Connexion ()
Mon objectif final est de pouvoir isoler ma requete Rsql dans un autre
module de manière à pouvoir l'utiliser dans plusieurs procedures en meme
temps sans etre tout le temps entrain de la reecrire.
Vous trouverez en dessous le code
Amicalement Francisco
Merci pour votre aide
________________________________________
ModRequête
'_________________________________________
Public Rsql As String
__________________________________________
Sub requête()
Rsql = "Select Ventes1999.CodeProduct, Ventes1999.LibelleCodeProduct,
Ventes1999.CodeConditionnement,Ventes1999.CodeCouleur," _
& " Ventes1999.Grammage, Ventes1999.PM, Ventes1999.Volume,
Ventes1999.AverageExMill ," _
& " Ventes1999.VariablesCosts, Ventes1999.FixedCosts,
Ventes1999.TonnesHeures FROM Ventes1999 " _
& "WHERE ((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "'
and

(Ventes1999.CodeConditionnement)= '" & CritereConditionnement & "' and
(Ventes1999.PM) = '" & CriterePM & "'and Ventes1999.CodeCouleur= '" &
CritereCouleur & "'and Ventes1999.Volume >" & Replace(CritereVolume, ",",
".") & " );"

End Sub
'_______________________________________________
ModConnexion
'______________________________________________
ce code provient d'un module appelé ModConnexion
Sub Connexion()
Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim rst1 As New ADODB.Recordset
Dim i As Integer
Dim Rsql As String


CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value
CritereConditionnement = FrmSaisie.CboListeConditionnement.Value
CriterePM = FrmSaisie.CboListePM.Value
CritereCouleur = FrmSaisie.CboListeCouleur.Value
CritereVolume = FrmSaisie.CboListeVolume.Value
___________________________________
'Que doids je mettre ici à la place de Rsql
__________________________________
Rsql = "Select Ventes1999.CodeProduct,
Ventes1999.LibelleCodeProduct,
Ventes1999.CodeConditionnement,Ventes1999.CodeCouleur," _
& " Ventes1999.Grammage, Ventes1999.PM, Ventes1999.Volume,
Ventes1999.AverageExMill ," _
& " Ventes1999.VariablesCosts, Ventes1999.FixedCosts,
Ventes1999.TonnesHeures FROM Ventes1999 " _
& "WHERE ((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "'
and

(Ventes1999.CodeConditionnement)= '" & CritereConditionnement & "' and
(Ventes1999.PM) = '" & CriterePM & "'and Ventes1999.CodeCouleur= '" &
CritereCouleur & "'and Ventes1999.Volume >" & Replace(CritereVolume, ",",
".") & " );"


'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source > c:psm_analyse_formulaire.mdb ;"
'------------------------------------------------------------
'Alimentation CODEPRODUCT
'------------------------------------------------------------

rst.Open Rsql, cnt

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 Thierry et Kergresse pour vos reponses

"Thierry Euzenot" a écrit dans le message de news:

Heu deux solutions à mon avis :

1) Dans ta procédure Sub Connexion() tu fais tout simplement un Call
Requête(arg1, arg2, arg3, etc.)
Où arg1, arg2, arg3, etc. sont les arguments qui te servent à définir ta
requête.

2) Ta procédure Requête() ressemble plus à une fonction qu'à une procédure
non ?
Heu là par contre les fonctions et moi on est plutôt fachés je pourrais
pas

t'expliquer :o(

J'espère avoir répondu à ta question ^^


"francisco" a écrit dans le message de
news:c6t5jf$4c1$
Bonjour tout le monde
Execusez moi je repose d'une autre manière ma question car j'ai du mal à
expliquer clairement ce que je veux faire j'espere que sous cette angle
je


sois plus clair
Comment faire pour appeler une requete qui se trouve dans un module
distinct

à partir d'un autre module .Le module ou se trouve la requête Rsql
s'appelle ModRequête et la procedure Sub Requête () .
L'endroit à partir duquel je dois appeler cette requête est Le module
ModConnexion et la procedure se denomme Sub Connexion ()
Mon objectif final est de pouvoir isoler ma requete Rsql dans un autre
module de manière à pouvoir l'utiliser dans plusieurs procedures en meme
temps sans etre tout le temps entrain de la reecrire.
Vous trouverez en dessous le code
Amicalement Francisco
Merci pour votre aide
________________________________________
ModRequête
'_________________________________________
Public Rsql As String
__________________________________________
Sub requête()
Rsql = "Select Ventes1999.CodeProduct, Ventes1999.LibelleCodeProduct,
Ventes1999.CodeConditionnement,Ventes1999.CodeCouleur," _
& " Ventes1999.Grammage, Ventes1999.PM, Ventes1999.Volume,
Ventes1999.AverageExMill ," _
& " Ventes1999.VariablesCosts, Ventes1999.FixedCosts,
Ventes1999.TonnesHeures FROM Ventes1999 " _
& "WHERE ((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "'
and

(Ventes1999.CodeConditionnement)= '" & CritereConditionnement & "' and
(Ventes1999.PM) = '" & CriterePM & "'and Ventes1999.CodeCouleur= '" &
CritereCouleur & "'and Ventes1999.Volume >" & Replace(CritereVolume,
",",


".") & " );"

End Sub
'_______________________________________________
ModConnexion
'______________________________________________
ce code provient d'un module appelé ModConnexion
Sub Connexion()
Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim rst1 As New ADODB.Recordset
Dim i As Integer
Dim Rsql As String


CritereCodeProduct = FrmSaisie.CboListeCodeProduct.Value
CritereConditionnement = FrmSaisie.CboListeConditionnement.Value
CriterePM = FrmSaisie.CboListePM.Value
CritereCouleur = FrmSaisie.CboListeCouleur.Value
CritereVolume = FrmSaisie.CboListeVolume.Value
___________________________________
'Que doids je mettre ici à la place de Rsql
__________________________________
Rsql = "Select Ventes1999.CodeProduct,
Ventes1999.LibelleCodeProduct,
Ventes1999.CodeConditionnement,Ventes1999.CodeCouleur," _
& " Ventes1999.Grammage, Ventes1999.PM, Ventes1999.Volume,
Ventes1999.AverageExMill ," _
& " Ventes1999.VariablesCosts, Ventes1999.FixedCosts,
Ventes1999.TonnesHeures FROM Ventes1999 " _
& "WHERE ((Ventes1999.LibelleCodeProduct)= '" & CritereCodeProduct & "'
and

(Ventes1999.CodeConditionnement)= '" & CritereConditionnement & "' and
(Ventes1999.PM) = '" & CriterePM & "'and Ventes1999.CodeCouleur= '" &
CritereCouleur & "'and Ventes1999.Volume >" & Replace(CritereVolume,
",",


".") & " );"


'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source > > c:psm_analyse_formulaire.mdb ;"
'------------------------------------------------------------
'Alimentation CODEPRODUCT
'------------------------------------------------------------

rst.Open Rsql, cnt

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