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

Connexion à une base access et renvoie de resultat sans utiliser copyfromrecordset

9 réponses
Avatar
francisco
Bonjour tout le monde

j'ai le code suivant qui me permet d'ouvrir une connexion vers une base
access
Cette procedure se trouve dans un userform. Comment dois je faire pour
que ma deuxième procedure marche et prenne en compte ma requête Rsql qui se
trouve dans un autre module et renvoie le resultat sur excel Que dois je
mettre à la place des points d'interrogations que vous trouverez dans le
code ci dessous. Pour essayer d'être plus clair j'ai mis la totalité de mon
code

'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir &
"' ;"
'------------------------------------------------------------
rst1.Open Rsql, cnt

'-------------------------------
While Not rst1.EOF
????????????
Wend

rst1.Close
Set rst1 = Nothing
------------------------------------------------------------------------
TOTALITE DU PROGRAMME
------------------------------------------------------------------------
Sub OuvrirFichier()

On Error Resume Next

MonFichier = Application.GetOpenFilename _
("Base access (*.mdb), *.mdb", , "Sélectionnez la base des
données à importer :")


ModRemplirFormulaire.RemplirFormulaire (MonFichier)
End Sub

La deuxième procedure se trouve dans un module appeler ModOuvrirConnexion

---------------------------------------------------------
MODOUVRIR CONNEXION
----------------------------------------------------------

Sub OuvrirConnexion(FichierOuvrir As String)
Dim cnt As New ADODB.Connection
Dim rst1 As New ADODB.Recordset

'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir &
"' ;"
'------------------------------------------------------------
rst1.Open Rsql, cnt

'-------------------------------
While Not rst1.EOF
????????????
Wend

rst1.Close
Set rst1 = Nothing

End Sub
Jai une troisième procedure ou se trouve le code suivant :
J'ai créé dans un module executer requête une requete sql nommé Rsql que
j'utilise dans ma procedure ouvrir connexion qui se trouve dans un autre
module ouvrir connexion
Sub ExecuterRequete()


'Définition des critères de la requête :
Dim CritereProduct
Dim CritereConditionnement
Dim CritereCouleur
Dim CriterePM
Dim CritereVolume


CritereProduct = FrmSaisie.CboListeCodeProduct.Value
CritereConditionnement = FrmSaisie.CboListeConditionnement.Value
CritereCouleur = FrmSaisie.CboListeCouleur.Value
CriterePM = FrmSaisie.CboListePM.Value
CritereVolume = FrmSaisie.CboListeVolume.Value


Rsql = "Select 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.CodeCouleur)='" & CritereCouleur
& "' And (Ventes1999.PM)= '" & CriterePM & "' And (Ventes1999.Volume)>" &
CritereVolume & ");"



End Sub

9 réponses

Avatar
michdenis
Bonjour Francisco,


Déclare dans le haut d'un module standard, une constante "RSQL" comme Public

Exemple :

'Évidemment tu définis la requête que tu désires.
Public Const Rsql = "Select * from Employés"

Tu peux définir quelques requêtes de cette façon, si le texte de la requête est toujours le même !!

Tu vas pouvoir appeler cette constante de tous les modules que tu désires.


Salutations!




"francisco" a écrit dans le message de news:c62mtg$quu$
Bonjour tout le monde

j'ai le code suivant qui me permet d'ouvrir une connexion vers une base
access
Cette procedure se trouve dans un userform. Comment dois je faire pour
que ma deuxième procedure marche et prenne en compte ma requête Rsql qui se
trouve dans un autre module et renvoie le resultat sur excel Que dois je
mettre à la place des points d'interrogations que vous trouverez dans le
code ci dessous. Pour essayer d'être plus clair j'ai mis la totalité de mon
code

'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir &
"' ;"
'------------------------------------------------------------
rst1.Open Rsql, cnt

'-------------------------------
While Not rst1.EOF
????????????
Wend

rst1.Close
Set rst1 = Nothing
------------------------------------------------------------------------
TOTALITE DU PROGRAMME
------------------------------------------------------------------------
Sub OuvrirFichier()

On Error Resume Next

MonFichier = Application.GetOpenFilename _
("Base access (*.mdb), *.mdb", , "Sélectionnez la base des
données à importer :")


ModRemplirFormulaire.RemplirFormulaire (MonFichier)
End Sub

La deuxième procedure se trouve dans un module appeler ModOuvrirConnexion

---------------------------------------------------------
MODOUVRIR CONNEXION
----------------------------------------------------------

Sub OuvrirConnexion(FichierOuvrir As String)
Dim cnt As New ADODB.Connection
Dim rst1 As New ADODB.Recordset

'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir &
"' ;"
'------------------------------------------------------------
rst1.Open Rsql, cnt

'-------------------------------
While Not rst1.EOF
????????????
Wend

rst1.Close
Set rst1 = Nothing

End Sub
Jai une troisième procedure ou se trouve le code suivant :
J'ai créé dans un module executer requête une requete sql nommé Rsql que
j'utilise dans ma procedure ouvrir connexion qui se trouve dans un autre
module ouvrir connexion
Sub ExecuterRequete()


'Définition des critères de la requête :
Dim CritereProduct
Dim CritereConditionnement
Dim CritereCouleur
Dim CriterePM
Dim CritereVolume


CritereProduct = FrmSaisie.CboListeCodeProduct.Value
CritereConditionnement = FrmSaisie.CboListeConditionnement.Value
CritereCouleur = FrmSaisie.CboListeCouleur.Value
CriterePM = FrmSaisie.CboListePM.Value
CritereVolume = FrmSaisie.CboListeVolume.Value


Rsql = "Select 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.CodeCouleur)='" & CritereCouleur
& "' And (Ventes1999.PM)= '" & CriterePM & "' And (Ventes1999.Volume)>" &
CritereVolume & ");"



End Sub
Avatar
francisco
Merci MichDenis pour ta reponse cela resoud une partie de mon probleme mais
je ne sais pas comment faire pour renvoyer ensuite le resultat sur excel en
sachant que toutes mes macros se trouvent sur excel en utilisant un
recordset mais sans que cela soit un copyfromrecordset Je ne sais pas me
servir d'un recordset qui pointe sur une base access mais dont la connexion
se fait sur excel et je n'arrive pas à renvoyer le resultat sur excel sans
que cela soit un copyfromrecordset
Est ce que tu aurais un exemple sous le coude qui aille avec une partie du
code que j'ai écrit cela serait tres gentil

Merci deja pour la reponse que tu m'as donné
Amicalement Francisco

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

Bonjour Francisco,


Déclare dans le haut d'un module standard, une constante "RSQL" comme
Public


Exemple :

'Évidemment tu définis la requête que tu désires.
Public Const Rsql = "Select * from Employés"

Tu peux définir quelques requêtes de cette façon, si le texte de la
requête est toujours le même !!


Tu vas pouvoir appeler cette constante de tous les modules que tu désires.


Salutations!




"francisco" a écrit dans le message de
news:c62mtg$quu$

Bonjour tout le monde

j'ai le code suivant qui me permet d'ouvrir une connexion vers une base
access
Cette procedure se trouve dans un userform. Comment dois je faire pour
que ma deuxième procedure marche et prenne en compte ma requête Rsql qui
se

trouve dans un autre module et renvoie le resultat sur excel Que dois je
mettre à la place des points d'interrogations que vous trouverez dans le
code ci dessous. Pour essayer d'être plus clair j'ai mis la totalité de
mon

code

'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir
&

"' ;"
'------------------------------------------------------------
rst1.Open Rsql, cnt

'-------------------------------
While Not rst1.EOF
????????????
Wend

rst1.Close
Set rst1 = Nothing
------------------------------------------------------------------------
TOTALITE DU PROGRAMME
------------------------------------------------------------------------
Sub OuvrirFichier()

On Error Resume Next

MonFichier = Application.GetOpenFilename _
("Base access (*.mdb), *.mdb", , "Sélectionnez la base des
données à importer :")


ModRemplirFormulaire.RemplirFormulaire (MonFichier)
End Sub

La deuxième procedure se trouve dans un module appeler ModOuvrirConnexion

---------------------------------------------------------
MODOUVRIR CONNEXION
----------------------------------------------------------

Sub OuvrirConnexion(FichierOuvrir As String)
Dim cnt As New ADODB.Connection
Dim rst1 As New ADODB.Recordset

'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir
&

"' ;"
'------------------------------------------------------------
rst1.Open Rsql, cnt

'-------------------------------
While Not rst1.EOF
????????????
Wend

rst1.Close
Set rst1 = Nothing

End Sub
Jai une troisième procedure ou se trouve le code suivant :
J'ai créé dans un module executer requête une requete sql nommé Rsql que
j'utilise dans ma procedure ouvrir connexion qui se trouve dans un autre
module ouvrir connexion
Sub ExecuterRequete()


'Définition des critères de la requête :
Dim CritereProduct
Dim CritereConditionnement
Dim CritereCouleur
Dim CriterePM
Dim CritereVolume


CritereProduct = FrmSaisie.CboListeCodeProduct.Value
CritereConditionnement = FrmSaisie.CboListeConditionnement.Value
CritereCouleur = FrmSaisie.CboListeCouleur.Value
CriterePM = FrmSaisie.CboListePM.Value
CritereVolume = FrmSaisie.CboListeVolume.Value


Rsql = "Select 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.CodeCouleur)='" &
CritereCouleur

& "' And (Ventes1999.PM)= '" & CriterePM & "' And (Ventes1999.Volume)>" &
CritereVolume & ");"



End Sub





Avatar
michdenis
Bonjour Francisco,

Comme je vois que tu utilises ADO,

Tu peux utiliser la méthode GetRows du RecordSet pour transformer ton recordset en Tableau(array).

Comme ceci :

'Copie le recordset dans un tableau
Tblo = rst.GetRows

Tu peux même limiter le nombre d'enregistrements que tu veux transférer à ton tableau en indiquant le nombre
d'enregistrement

comme ceci :

'Copie le recordset dans un tableau
Tblo = rst.GetRows(10) ' 10 pour les 10 premiers enregistrements.

Tblo est un Tableau(Array) à 2 dimensions représentant ton recordset.


Désires-tu autre chose ?


Salutations!



"francisco" a écrit dans le message de news:c62s1c$rgn$
Merci MichDenis pour ta reponse cela resoud une partie de mon probleme mais
je ne sais pas comment faire pour renvoyer ensuite le resultat sur excel en
sachant que toutes mes macros se trouvent sur excel en utilisant un
recordset mais sans que cela soit un copyfromrecordset Je ne sais pas me
servir d'un recordset qui pointe sur une base access mais dont la connexion
se fait sur excel et je n'arrive pas à renvoyer le resultat sur excel sans
que cela soit un copyfromrecordset
Est ce que tu aurais un exemple sous le coude qui aille avec une partie du
code que j'ai écrit cela serait tres gentil

Merci deja pour la reponse que tu m'as donné
Amicalement Francisco

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

Bonjour Francisco,


Déclare dans le haut d'un module standard, une constante "RSQL" comme
Public


Exemple :

'Évidemment tu définis la requête que tu désires.
Public Const Rsql = "Select * from Employés"

Tu peux définir quelques requêtes de cette façon, si le texte de la
requête est toujours le même !!


Tu vas pouvoir appeler cette constante de tous les modules que tu désires.


Salutations!




"francisco" a écrit dans le message de
news:c62mtg$quu$

Bonjour tout le monde

j'ai le code suivant qui me permet d'ouvrir une connexion vers une base
access
Cette procedure se trouve dans un userform. Comment dois je faire pour
que ma deuxième procedure marche et prenne en compte ma requête Rsql qui
se

trouve dans un autre module et renvoie le resultat sur excel Que dois je
mettre à la place des points d'interrogations que vous trouverez dans le
code ci dessous. Pour essayer d'être plus clair j'ai mis la totalité de
mon

code

'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir
&

"' ;"
'------------------------------------------------------------
rst1.Open Rsql, cnt

'-------------------------------
While Not rst1.EOF
????????????
Wend

rst1.Close
Set rst1 = Nothing
------------------------------------------------------------------------
TOTALITE DU PROGRAMME
------------------------------------------------------------------------
Sub OuvrirFichier()

On Error Resume Next

MonFichier = Application.GetOpenFilename _
("Base access (*.mdb), *.mdb", , "Sélectionnez la base des
données à importer :")


ModRemplirFormulaire.RemplirFormulaire (MonFichier)
End Sub

La deuxième procedure se trouve dans un module appeler ModOuvrirConnexion

---------------------------------------------------------
MODOUVRIR CONNEXION
----------------------------------------------------------

Sub OuvrirConnexion(FichierOuvrir As String)
Dim cnt As New ADODB.Connection
Dim rst1 As New ADODB.Recordset

'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir
&

"' ;"
'------------------------------------------------------------
rst1.Open Rsql, cnt

'-------------------------------
While Not rst1.EOF
????????????
Wend

rst1.Close
Set rst1 = Nothing

End Sub
Jai une troisième procedure ou se trouve le code suivant :
J'ai créé dans un module executer requête une requete sql nommé Rsql que
j'utilise dans ma procedure ouvrir connexion qui se trouve dans un autre
module ouvrir connexion
Sub ExecuterRequete()


'Définition des critères de la requête :
Dim CritereProduct
Dim CritereConditionnement
Dim CritereCouleur
Dim CriterePM
Dim CritereVolume


CritereProduct = FrmSaisie.CboListeCodeProduct.Value
CritereConditionnement = FrmSaisie.CboListeConditionnement.Value
CritereCouleur = FrmSaisie.CboListeCouleur.Value
CriterePM = FrmSaisie.CboListePM.Value
CritereVolume = FrmSaisie.CboListeVolume.Value


Rsql = "Select 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.CodeCouleur)='" &
CritereCouleur

& "' And (Ventes1999.PM)= '" & CriterePM & "' And (Ventes1999.Volume)>" &
CritereVolume & ");"



End Sub





Avatar
francisco
La methode de creer un tableau es interessante merci de me l'avoir fait
remarquer mais j'ai une autre question qui me trotte la tête
Execuse moi de te deranger encore une fois Michel mais j'ai utilisé ce code
que l'on m'a passé pour alimenter des combo Comment toi tu ferais pour
alimenter une feuille escel avec cela à la place d'alimenter des combo tu
trouveras le code en dessous

Merci pour tous Amicalement Francisco
Option Explicit
'cette procédure va récupérer la variable FichierOuvrir du formulaire
'donc c'est une proc qui attendra une variable de type string comme déclarée
ci-dessous
' FichierOuvrir = récupéré à travers la variable MonFichier du formulaire

Sub RemplirFormulaire(FichierOuvrir As String)

Dim cnt As New ADODB.Connection
Dim rst1 As New ADODB.Recordset
Dim rst2 As New ADODB.Recordset
Dim rst3 As New ADODB.Recordset
Dim rst4 As New ADODB.Recordset
Dim rst5 As New ADODB.Recordset

'variable declaré pour arrondir le champs volume
Dim cc

Dim ReqLibelleCodeProduct As String
Dim ReqCodeConditionnement As String
Dim ReqCodeCouleur As String
Dim ReqPM As String
Dim ReqVolume As String

'----pour remplir le premier combo
'le distinct évite les doublons
ReqLibelleCodeProduct = "Select distinct LibelleCodeProduct FROM Ventes1999
"
ReqCodeConditionnement = "Select distinct CodeConditionnement FROM
Ventes1999 "
ReqCodeCouleur = "Select distinct CodeCouleur FROM Ventes1999"
ReqPM = "select distinct PM FROM Ventes1999"
ReqVolume = "select distinct Volume From Ventes1999"



'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir &
"' ;"
'------------------------------------------------------------
rst1.Open ReqLibelleCodeProduct, cnt

'-------------------------------
While Not rst1.EOF
FrmSaisie.CboListeCodeProduct.AddItem (rst1!LibelleCodeProduct)
rst1.MoveNext
Wend

rst1.Close
Set rst1 = Nothing


'--------------------------------
'
'cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir
& "' ;"
rst2.Open ReqCodeConditionnement, cnt
While Not rst2.EOF
FrmSaisie.CboListeConditionnement.AddItem (rst2!CodeConditionnement)
rst2.MoveNext
Wend

rst2.Close
Set rst2 = Nothing

'---------------------------
'cnt.Close
'Set cnt = Nothing
'-------------------------------
'cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir
& "' ;"
rst3.Open ReqCodeCouleur, cnt
While Not rst3.EOF
If rst3!CodeCouleur = "0" Then
FrmSaisie.CboListeCouleur.AddItem ("BLANC")
Else
FrmSaisie.CboListeCouleur.AddItem ("COULEUR")
End If
rst3.MoveNext
Wend
rst3.Close
Set rst3 = Nothing


'---------------------------------------

'cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir
& "' ;"
rst4.Open ReqPM, cnt
While Not rst4.EOF
FrmSaisie.CboListePM.AddItem (rst4!PM)
rst4.MoveNext
Wend

rst4.Close
Set rst4 = Nothing


'------------------------------------------

'cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir
& "' ;"
rst5.Open ReqVolume, cnt
While Not rst5.EOF
cc = Format(rst5!Volume, "0.00")
FrmSaisie.CboListeVolume.AddItem (cc)
rst5.MoveNext

Wend

rst5.Close
Set rst5 = Nothing
' on ferme la connexion
cnt.Close
Set cnt = Nothing
End Sub


"michdenis" a écrit dans le message de news:
O$oRf#
Bonjour Francisco,

Comme je vois que tu utilises ADO,

Tu peux utiliser la méthode GetRows du RecordSet pour transformer ton
recordset en Tableau(array).


Comme ceci :

'Copie le recordset dans un tableau
Tblo = rst.GetRows

Tu peux même limiter le nombre d'enregistrements que tu veux transférer à
ton tableau en indiquant le nombre

d'enregistrement

comme ceci :

'Copie le recordset dans un tableau
Tblo = rst.GetRows(10) ' 10 pour les 10 premiers enregistrements.

Tblo est un Tableau(Array) à 2 dimensions représentant ton recordset.


Désires-tu autre chose ?


Salutations!



"francisco" a écrit dans le message de
news:c62s1c$rgn$

Merci MichDenis pour ta reponse cela resoud une partie de mon probleme
mais

je ne sais pas comment faire pour renvoyer ensuite le resultat sur excel
en

sachant que toutes mes macros se trouvent sur excel en utilisant un
recordset mais sans que cela soit un copyfromrecordset Je ne sais pas me
servir d'un recordset qui pointe sur une base access mais dont la
connexion

se fait sur excel et je n'arrive pas à renvoyer le resultat sur excel sans
que cela soit un copyfromrecordset
Est ce que tu aurais un exemple sous le coude qui aille avec une partie du
code que j'ai écrit cela serait tres gentil

Merci deja pour la reponse que tu m'as donné
Amicalement Francisco

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

Bonjour Francisco,


Déclare dans le haut d'un module standard, une constante "RSQL" comme
Public


Exemple :

'Évidemment tu définis la requête que tu désires.
Public Const Rsql = "Select * from Employés"

Tu peux définir quelques requêtes de cette façon, si le texte de la
requête est toujours le même !!


Tu vas pouvoir appeler cette constante de tous les modules que tu
désires.




Salutations!




"francisco" a écrit dans le message de
news:c62mtg$quu$

Bonjour tout le monde

j'ai le code suivant qui me permet d'ouvrir une connexion vers une base
access
Cette procedure se trouve dans un userform. Comment dois je faire
pour


que ma deuxième procedure marche et prenne en compte ma requête Rsql qui
se

trouve dans un autre module et renvoie le resultat sur excel Que dois je
mettre à la place des points d'interrogations que vous trouverez dans le
code ci dessous. Pour essayer d'être plus clair j'ai mis la totalité de
mon

code

'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" &
FichierOuvrir


&
"' ;"
'------------------------------------------------------------
rst1.Open Rsql, cnt

'-------------------------------
While Not rst1.EOF
????????????
Wend

rst1.Close
Set rst1 = Nothing
------------------------------------------------------------------------
TOTALITE DU PROGRAMME
------------------------------------------------------------------------
Sub OuvrirFichier()

On Error Resume Next

MonFichier = Application.GetOpenFilename _
("Base access (*.mdb), *.mdb", , "Sélectionnez la base des
données à importer :")


ModRemplirFormulaire.RemplirFormulaire (MonFichier)
End Sub

La deuxième procedure se trouve dans un module appeler
ModOuvrirConnexion



---------------------------------------------------------
MODOUVRIR CONNEXION
----------------------------------------------------------

Sub OuvrirConnexion(FichierOuvrir As String)
Dim cnt As New ADODB.Connection
Dim rst1 As New ADODB.Recordset

'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" &
FichierOuvrir


&
"' ;"
'------------------------------------------------------------
rst1.Open Rsql, cnt

'-------------------------------
While Not rst1.EOF
????????????
Wend

rst1.Close
Set rst1 = Nothing

End Sub
Jai une troisième procedure ou se trouve le code suivant :
J'ai créé dans un module executer requête une requete sql nommé Rsql que
j'utilise dans ma procedure ouvrir connexion qui se trouve dans un autre
module ouvrir connexion
Sub ExecuterRequete()


'Définition des critères de la requête :
Dim CritereProduct
Dim CritereConditionnement
Dim CritereCouleur
Dim CriterePM
Dim CritereVolume


CritereProduct = FrmSaisie.CboListeCodeProduct.Value
CritereConditionnement = FrmSaisie.CboListeConditionnement.Value
CritereCouleur = FrmSaisie.CboListeCouleur.Value
CriterePM = FrmSaisie.CboListePM.Value
CritereVolume = FrmSaisie.CboListeVolume.Value


Rsql = "Select 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.CodeCouleur)='" &
CritereCouleur

& "' And (Ventes1999.PM)= '" & CriterePM & "' And (Ventes1999.Volume)>"
&


CritereVolume & ");"



End Sub










Avatar
Denis Michon
Bonjour Francisco,

Tu devrais déterminer et énoncer clairement ce que tu veux faire.

Admettrons que tu ais exécuter ta requête et que tu ais obtenu ton RecordSet

à partir de là ... c'est quoi ton problème ?

à quelle place que tu veux copier les données du RecordSet ?

Est-ce que tu veux copier seulement certaines données du recordset ?


Moi, je ne comprends pas du tout à quel niveau se trouve ta difficulté.


Salutations!



"francisco" a écrit dans le message de news:c62ukb$1d0$
La methode de creer un tableau es interessante merci de me l'avoir fait
remarquer mais j'ai une autre question qui me trotte la tête
Execuse moi de te deranger encore une fois Michel mais j'ai utilisé ce code
que l'on m'a passé pour alimenter des combo Comment toi tu ferais pour
alimenter une feuille escel avec cela à la place d'alimenter des combo tu
trouveras le code en dessous

Merci pour tous Amicalement Francisco
Option Explicit
'cette procédure va récupérer la variable FichierOuvrir du formulaire
'donc c'est une proc qui attendra une variable de type string comme déclarée
ci-dessous
' FichierOuvrir = récupéré à travers la variable MonFichier du formulaire

Sub RemplirFormulaire(FichierOuvrir As String)

Dim cnt As New ADODB.Connection
Dim rst1 As New ADODB.Recordset
Dim rst2 As New ADODB.Recordset
Dim rst3 As New ADODB.Recordset
Dim rst4 As New ADODB.Recordset
Dim rst5 As New ADODB.Recordset

'variable declaré pour arrondir le champs volume
Dim cc

Dim ReqLibelleCodeProduct As String
Dim ReqCodeConditionnement As String
Dim ReqCodeCouleur As String
Dim ReqPM As String
Dim ReqVolume As String

'----pour remplir le premier combo
'le distinct évite les doublons
ReqLibelleCodeProduct = "Select distinct LibelleCodeProduct FROM Ventes1999
"
ReqCodeConditionnement = "Select distinct CodeConditionnement FROM
Ventes1999 "
ReqCodeCouleur = "Select distinct CodeCouleur FROM Ventes1999"
ReqPM = "select distinct PM FROM Ventes1999"
ReqVolume = "select distinct Volume From Ventes1999"



'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir &
"' ;"
'------------------------------------------------------------
rst1.Open ReqLibelleCodeProduct, cnt

'-------------------------------
While Not rst1.EOF
FrmSaisie.CboListeCodeProduct.AddItem (rst1!LibelleCodeProduct)
rst1.MoveNext
Wend

rst1.Close
Set rst1 = Nothing


'--------------------------------
'
'cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir
& "' ;"
rst2.Open ReqCodeConditionnement, cnt
While Not rst2.EOF
FrmSaisie.CboListeConditionnement.AddItem (rst2!CodeConditionnement)
rst2.MoveNext
Wend

rst2.Close
Set rst2 = Nothing

'---------------------------
'cnt.Close
'Set cnt = Nothing
'-------------------------------
'cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir
& "' ;"
rst3.Open ReqCodeCouleur, cnt
While Not rst3.EOF
If rst3!CodeCouleur = "0" Then
FrmSaisie.CboListeCouleur.AddItem ("BLANC")
Else
FrmSaisie.CboListeCouleur.AddItem ("COULEUR")
End If
rst3.MoveNext
Wend
rst3.Close
Set rst3 = Nothing


'---------------------------------------

'cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir
& "' ;"
rst4.Open ReqPM, cnt
While Not rst4.EOF
FrmSaisie.CboListePM.AddItem (rst4!PM)
rst4.MoveNext
Wend

rst4.Close
Set rst4 = Nothing


'------------------------------------------

'cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir
& "' ;"
rst5.Open ReqVolume, cnt
While Not rst5.EOF
cc = Format(rst5!Volume, "0.00")
FrmSaisie.CboListeVolume.AddItem (cc)
rst5.MoveNext

Wend

rst5.Close
Set rst5 = Nothing
' on ferme la connexion
cnt.Close
Set cnt = Nothing
End Sub


"michdenis" a écrit dans le message de news:
O$oRf#
Bonjour Francisco,

Comme je vois que tu utilises ADO,

Tu peux utiliser la méthode GetRows du RecordSet pour transformer ton
recordset en Tableau(array).


Comme ceci :

'Copie le recordset dans un tableau
Tblo = rst.GetRows

Tu peux même limiter le nombre d'enregistrements que tu veux transférer à
ton tableau en indiquant le nombre

d'enregistrement

comme ceci :

'Copie le recordset dans un tableau
Tblo = rst.GetRows(10) ' 10 pour les 10 premiers enregistrements.

Tblo est un Tableau(Array) à 2 dimensions représentant ton recordset.


Désires-tu autre chose ?


Salutations!



"francisco" a écrit dans le message de
news:c62s1c$rgn$

Merci MichDenis pour ta reponse cela resoud une partie de mon probleme
mais

je ne sais pas comment faire pour renvoyer ensuite le resultat sur excel
en

sachant que toutes mes macros se trouvent sur excel en utilisant un
recordset mais sans que cela soit un copyfromrecordset Je ne sais pas me
servir d'un recordset qui pointe sur une base access mais dont la
connexion

se fait sur excel et je n'arrive pas à renvoyer le resultat sur excel sans
que cela soit un copyfromrecordset
Est ce que tu aurais un exemple sous le coude qui aille avec une partie du
code que j'ai écrit cela serait tres gentil

Merci deja pour la reponse que tu m'as donné
Amicalement Francisco

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

Bonjour Francisco,


Déclare dans le haut d'un module standard, une constante "RSQL" comme
Public


Exemple :

'Évidemment tu définis la requête que tu désires.
Public Const Rsql = "Select * from Employés"

Tu peux définir quelques requêtes de cette façon, si le texte de la
requête est toujours le même !!


Tu vas pouvoir appeler cette constante de tous les modules que tu
désires.




Salutations!




"francisco" a écrit dans le message de
news:c62mtg$quu$

Bonjour tout le monde

j'ai le code suivant qui me permet d'ouvrir une connexion vers une base
access
Cette procedure se trouve dans un userform. Comment dois je faire
pour


que ma deuxième procedure marche et prenne en compte ma requête Rsql qui
se

trouve dans un autre module et renvoie le resultat sur excel Que dois je
mettre à la place des points d'interrogations que vous trouverez dans le
code ci dessous. Pour essayer d'être plus clair j'ai mis la totalité de
mon

code

'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" &
FichierOuvrir


&
"' ;"
'------------------------------------------------------------
rst1.Open Rsql, cnt

'-------------------------------
While Not rst1.EOF
????????????
Wend

rst1.Close
Set rst1 = Nothing
------------------------------------------------------------------------
TOTALITE DU PROGRAMME
------------------------------------------------------------------------
Sub OuvrirFichier()

On Error Resume Next

MonFichier = Application.GetOpenFilename _
("Base access (*.mdb), *.mdb", , "Sélectionnez la base des
données à importer :")


ModRemplirFormulaire.RemplirFormulaire (MonFichier)
End Sub

La deuxième procedure se trouve dans un module appeler
ModOuvrirConnexion



---------------------------------------------------------
MODOUVRIR CONNEXION
----------------------------------------------------------

Sub OuvrirConnexion(FichierOuvrir As String)
Dim cnt As New ADODB.Connection
Dim rst1 As New ADODB.Recordset

'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" &
FichierOuvrir


&
"' ;"
'------------------------------------------------------------
rst1.Open Rsql, cnt

'-------------------------------
While Not rst1.EOF
????????????
Wend

rst1.Close
Set rst1 = Nothing

End Sub
Jai une troisième procedure ou se trouve le code suivant :
J'ai créé dans un module executer requête une requete sql nommé Rsql que
j'utilise dans ma procedure ouvrir connexion qui se trouve dans un autre
module ouvrir connexion
Sub ExecuterRequete()


'Définition des critères de la requête :
Dim CritereProduct
Dim CritereConditionnement
Dim CritereCouleur
Dim CriterePM
Dim CritereVolume


CritereProduct = FrmSaisie.CboListeCodeProduct.Value
CritereConditionnement = FrmSaisie.CboListeConditionnement.Value
CritereCouleur = FrmSaisie.CboListeCouleur.Value
CriterePM = FrmSaisie.CboListePM.Value
CritereVolume = FrmSaisie.CboListeVolume.Value


Rsql = "Select 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.CodeCouleur)='" &
CritereCouleur

& "' And (Ventes1999.PM)= '" & CriterePM & "' And (Ventes1999.Volume)>"
&


CritereVolume & ");"



End Sub










Avatar
francisco
Salut Denis
Ce que je veux faire c'est copier le resultat de mon recordset sur une
feuille excel mais seulement une partie car je filtre mes données par une
requête mais je n'arrive pas à renvoyer mes données sur excel sans utiliser
un copyfromrecordset. Mon but premier serait d'apprendre à parcourir un
recordset et renvoyer son resultat sur une feuille excel ligne par ligne
sans utiliser copyfromrecordset pour apprendre comment fonctionne le
recordset . Tout en sachant que toutes mes macros sont sur excel et se
connecte à access
Le probleme si tu veux c'est que j'ai un niveau debutant intermediaire en
vba et que le code que tu as vu concernant les combo n'a pas été produit par
moi meme mais par un ami qui s'appelle Nordine Il ne reflete pas mon vrai
niveau c'est peut etre pour cela que je donne l'impression de poser des
questions betes ou que je suis ambigu malgre le code que j'ai mis en ligne.
Cette ami m'a dit que filtrer mes données qui sont sur access et assurer ma
connexion à une base access pour ensuite les renvoyer sur excel c'est
exactement le code qu'il m'a passé pour alimenter les combo à quelque chose
pret que je n'arrive pas à determiner mais qui doit etre simple

Merci en tout cas pour ton aide je sais que je dois etre plus clair et plus
precis et pour l'aide de MichDenis pour sa patience et pour l'autre
solution qu'il m'a proposé.


Bonjour Francisco,

Tu devrais déterminer et énoncer clairement ce que tu veux faire.

Admettrons que tu ais exécuter ta requête et que tu ais obtenu ton
RecordSet


à partir de là ... c'est quoi ton problème ?

à quelle place que tu veux copier les données du RecordSet ?

Est-ce que tu veux copier seulement certaines données du recordset ?


Moi, je ne comprends pas du tout à quel niveau se trouve ta difficulté.


Salutations!



"francisco" a écrit dans le message de
news:c62ukb$1d0$

La methode de creer un tableau es interessante merci de me l'avoir fait
remarquer mais j'ai une autre question qui me trotte la tête
Execuse moi de te deranger encore une fois Michel mais j'ai utilisé ce
code

que l'on m'a passé pour alimenter des combo Comment toi tu ferais pour
alimenter une feuille escel avec cela à la place d'alimenter des combo tu
trouveras le code en dessous

Merci pour tous Amicalement Francisco
Option Explicit
'cette procédure va récupérer la variable FichierOuvrir du formulaire
'donc c'est une proc qui attendra une variable de type string comme
déclarée

ci-dessous
' FichierOuvrir = récupéré à travers la variable MonFichier du formulaire

Sub RemplirFormulaire(FichierOuvrir As String)

Dim cnt As New ADODB.Connection
Dim rst1 As New ADODB.Recordset
Dim rst2 As New ADODB.Recordset
Dim rst3 As New ADODB.Recordset
Dim rst4 As New ADODB.Recordset
Dim rst5 As New ADODB.Recordset

'variable declaré pour arrondir le champs volume
Dim cc

Dim ReqLibelleCodeProduct As String
Dim ReqCodeConditionnement As String
Dim ReqCodeCouleur As String
Dim ReqPM As String
Dim ReqVolume As String

'----pour remplir le premier combo
'le distinct évite les doublons
ReqLibelleCodeProduct = "Select distinct LibelleCodeProduct FROM
Ventes1999

"
ReqCodeConditionnement = "Select distinct CodeConditionnement FROM
Ventes1999 "
ReqCodeCouleur = "Select distinct CodeCouleur FROM Ventes1999"
ReqPM = "select distinct PM FROM Ventes1999"
ReqVolume = "select distinct Volume From Ventes1999"



'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" & FichierOuvrir
&

"' ;"
'------------------------------------------------------------
rst1.Open ReqLibelleCodeProduct, cnt

'-------------------------------
While Not rst1.EOF
FrmSaisie.CboListeCodeProduct.AddItem (rst1!LibelleCodeProduct)
rst1.MoveNext
Wend

rst1.Close
Set rst1 = Nothing


'--------------------------------
'
'cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" &
FichierOuvrir

& "' ;"
rst2.Open ReqCodeConditionnement, cnt
While Not rst2.EOF
FrmSaisie.CboListeConditionnement.AddItem (rst2!CodeConditionnement)
rst2.MoveNext
Wend

rst2.Close
Set rst2 = Nothing

'---------------------------
'cnt.Close
'Set cnt = Nothing
'-------------------------------
'cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" &
FichierOuvrir

& "' ;"
rst3.Open ReqCodeCouleur, cnt
While Not rst3.EOF
If rst3!CodeCouleur = "0" Then
FrmSaisie.CboListeCouleur.AddItem ("BLANC")
Else
FrmSaisie.CboListeCouleur.AddItem ("COULEUR")
End If
rst3.MoveNext
Wend
rst3.Close
Set rst3 = Nothing


'---------------------------------------

'cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" &
FichierOuvrir

& "' ;"
rst4.Open ReqPM, cnt
While Not rst4.EOF
FrmSaisie.CboListePM.AddItem (rst4!PM)
rst4.MoveNext
Wend

rst4.Close
Set rst4 = Nothing


'------------------------------------------

'cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" &
FichierOuvrir

& "' ;"
rst5.Open ReqVolume, cnt
While Not rst5.EOF
cc = Format(rst5!Volume, "0.00")
FrmSaisie.CboListeVolume.AddItem (cc)
rst5.MoveNext

Wend

rst5.Close
Set rst5 = Nothing
' on ferme la connexion
cnt.Close
Set cnt = Nothing
End Sub


"michdenis" a écrit dans le message de news:
O$oRf#
Bonjour Francisco,

Comme je vois que tu utilises ADO,

Tu peux utiliser la méthode GetRows du RecordSet pour transformer ton
recordset en Tableau(array).


Comme ceci :

'Copie le recordset dans un tableau
Tblo = rst.GetRows

Tu peux même limiter le nombre d'enregistrements que tu veux transférer
à


ton tableau en indiquant le nombre
d'enregistrement

comme ceci :

'Copie le recordset dans un tableau
Tblo = rst.GetRows(10) ' 10 pour les 10 premiers enregistrements.

Tblo est un Tableau(Array) à 2 dimensions représentant ton recordset.


Désires-tu autre chose ?


Salutations!



"francisco" a écrit dans le message de
news:c62s1c$rgn$

Merci MichDenis pour ta reponse cela resoud une partie de mon probleme
mais

je ne sais pas comment faire pour renvoyer ensuite le resultat sur excel
en

sachant que toutes mes macros se trouvent sur excel en utilisant un
recordset mais sans que cela soit un copyfromrecordset Je ne sais pas me
servir d'un recordset qui pointe sur une base access mais dont la
connexion

se fait sur excel et je n'arrive pas à renvoyer le resultat sur excel
sans


que cela soit un copyfromrecordset
Est ce que tu aurais un exemple sous le coude qui aille avec une partie
du


code que j'ai écrit cela serait tres gentil

Merci deja pour la reponse que tu m'as donné
Amicalement Francisco

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

Bonjour Francisco,


Déclare dans le haut d'un module standard, une constante "RSQL" comme
Public


Exemple :

'Évidemment tu définis la requête que tu désires.
Public Const Rsql = "Select * from Employés"

Tu peux définir quelques requêtes de cette façon, si le texte de la
requête est toujours le même !!


Tu vas pouvoir appeler cette constante de tous les modules que tu
désires.




Salutations!




"francisco" a écrit dans le message de
news:c62mtg$quu$

Bonjour tout le monde

j'ai le code suivant qui me permet d'ouvrir une connexion vers une
base



access
Cette procedure se trouve dans un userform. Comment dois je faire
pour


que ma deuxième procedure marche et prenne en compte ma requête Rsql
qui



se
trouve dans un autre module et renvoie le resultat sur excel Que dois
je



mettre à la place des points d'interrogations que vous trouverez dans
le



code ci dessous. Pour essayer d'être plus clair j'ai mis la totalité
de



mon
code

'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" &
FichierOuvrir


&
"' ;"
'------------------------------------------------------------
rst1.Open Rsql, cnt

'-------------------------------
While Not rst1.EOF
????????????
Wend

rst1.Close
Set rst1 = Nothing


------------------------------------------------------------------------

TOTALITE DU PROGRAMME


------------------------------------------------------------------------

Sub OuvrirFichier()

On Error Resume Next

MonFichier = Application.GetOpenFilename _
("Base access (*.mdb), *.mdb", , "Sélectionnez la base
des



données à importer :")


ModRemplirFormulaire.RemplirFormulaire (MonFichier)
End Sub

La deuxième procedure se trouve dans un module appeler
ModOuvrirConnexion



---------------------------------------------------------
MODOUVRIR CONNEXION
----------------------------------------------------------

Sub OuvrirConnexion(FichierOuvrir As String)
Dim cnt As New ADODB.Connection
Dim rst1 As New ADODB.Recordset

'----------------------------------------------------
'à ouvrir une seule fois
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '" &
FichierOuvrir


&
"' ;"
'------------------------------------------------------------
rst1.Open Rsql, cnt

'-------------------------------
While Not rst1.EOF
????????????
Wend

rst1.Close
Set rst1 = Nothing

End Sub
Jai une troisième procedure ou se trouve le code suivant :
J'ai créé dans un module executer requête une requete sql nommé Rsql
que



j'utilise dans ma procedure ouvrir connexion qui se trouve dans un
autre



module ouvrir connexion
Sub ExecuterRequete()


'Définition des critères de la requête :
Dim CritereProduct
Dim CritereConditionnement
Dim CritereCouleur
Dim CriterePM
Dim CritereVolume


CritereProduct = FrmSaisie.CboListeCodeProduct.Value
CritereConditionnement = FrmSaisie.CboListeConditionnement.Value
CritereCouleur = FrmSaisie.CboListeCouleur.Value
CriterePM = FrmSaisie.CboListePM.Value
CritereVolume = FrmSaisie.CboListeVolume.Value


Rsql = "Select 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.CodeCouleur)='" &
CritereCouleur

& "' And (Ventes1999.PM)= '" & CriterePM & "' And
(Ventes1999.Volume)>"



&
CritereVolume & ");"



End Sub















Avatar
Pierre CFI [mvp]
bonjour franscico
je sais pas si j'ai tout compris
ton recordset rst est ouvert
tu veux écrire sur la feuille nommée data
dim F as range
dim i as integer, t as long
set F = worksheets("data").range("a1")
for i = 0 to rst.fields.count -1
F.offset(0,i) = rst(i).name
next
do until rst.eof
i = 0
for i = 0 to rst.fields.count -1
F.offset(t,i) = rst(i)
next
t=t+1
rst.movenext
loop
la suite, j'ai pas testé, mais çà doit etre bon
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site perso
http://access.cfi.free.fr



Avatar
francisco
Merci Pierre pour ta reponse ainsi qu'à MichDenis et à Denis Michon
Amicalement Francisco A +
"Pierre CFI [mvp]" a écrit dans le message de
news: u#
bonjour franscico
je sais pas si j'ai tout compris
ton recordset rst est ouvert
tu veux écrire sur la feuille nommée data
dim F as range
dim i as integer, t as long
set F = worksheets("data").range("a1")
for i = 0 to rst.fields.count -1
F.offset(0,i) = rst(i).name
next
do until rst.eof
i = 0
for i = 0 to rst.fields.count -1
F.offset(t,i) = rst(i)
next
t=t+1
rst.movenext
loop
la suite, j'ai pas testé, mais çà doit etre bon
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site perso
http://access.cfi.free.fr







Avatar
Pierre CFI [mvp]
il faut démarer t à 1 pour écrire en a2
t = 1
for i = 0 to rst.fields.count -1
F.offset(t,i) = rst(i)
next
t=t+1



--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"francisco" a écrit dans le message de news:c63e60$rdr$
Merci Pierre pour ta reponse ainsi qu'à MichDenis et à Denis Michon
Amicalement Francisco A +
"Pierre CFI [mvp]" a écrit dans le message de
news: u#
bonjour franscico
je sais pas si j'ai tout compris
ton recordset rst est ouvert
tu veux écrire sur la feuille nommée data
dim F as range
dim i as integer, t as long
set F = worksheets("data").range("a1")
for i = 0 to rst.fields.count -1
F.offset(0,i) = rst(i).name
next
do until rst.eof
i = 0
for i = 0 to rst.fields.count -1
F.offset(t,i) = rst(i)
next
t=t+1
rst.movenext
loop
la suite, j'ai pas testé, mais çà doit etre bon
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B
Site perso
http://access.cfi.free.fr