Pbm d'envoi de donnees access dans un fichier excel

Résolu
Messages postés
17
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
29 octobre 2004
-
Messages postés
17
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
29 octobre 2004
-
Salut a tous!
Voila le probleme: Je veux recuperer les donnees d'une requete que j'execute dans vb sur ma base, et les envoyer sur une feuille excess preformattee...
Voila le code qui pose probleme

Dim i As Date
Dim ligne As Long
Dim MonFichier As String

MonFichier = "BudapestTest.xls"
Set MonXL = CreateObject("Excel.Application")
MonXL.Visible = True
MonXL.UserControl = True
MonXL.Workbooks.Open FileName:="E:\Documents and Settings\adlepine\My Documents" & MonFichier
MonXL.Range("B7").Value = StartDate

'Si on a coche Downtime, Envoi des resultat en colonne D7
If CheckDowntime = -1 Then
ligne = 7 'Entree des donnees
For i = StartDate To EndDate

Dim Enreg As Recordset
DoCmd.RunSQL ("Select Count(StatusID) As Downt INTO NouvelleRequete FROM tbl_test_Mc_Status WHERE TimeStamp LIKE """ & i & "*"" AND (StatusID=14 OR StatusID=15 OR StatusID=16 OR StatusID=17 OR StatusID=19)")
DoCmd.OpenTable "NouvelleRequete"

Set DBA = CurentDb
Set Enreg = DBA.OpenRecordset("SELECT Downt FROM NouvelleRequete")
Enreg.MoveFirst

MonXL.Cells(ligne, 7).Value = Enreg!Downt
ligne = ligne + 1
Next i
End If

La, on me dit pbm de Type avec DBA, mais qud je declare DBA comme DataBase, On me dit que le type n'existe pas....
Une idée?

18 réponses

Messages postés
17
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
29 octobre 2004

OK, Merci a tous, j'ai trouve une soluc qui fonctionne.... JE vous donne le code au cas ou:

Dim i As Date
Dim ligne As Long
Dim MonFichier As String

'open the Excel file
MonFichier = "BudapestTest.xls"
Set MonXL = CreateObject("Excel.Application")
MonXL.Visible = True
MonXL.UserControl = True
MonXL.Workbooks.Open FileName:="M:\Engineering\Support_Budapest" & MonFichier
'get the date in XL file
MonXL.Range("B7").Value = StartDate

'If Downtime is checked, get the result in row D in Budapest.XLS
If CheckDowntime = -1 Then
ligne = 7
Dim DBA As Database Set DBA OpenDatabase("M:\Engineering\Support_Budapest\Tx_Bud.mdb", ReadOnly True)
Dim Enreg As DAO.Recordset

'Get Downtimes daily
For i = StartDate To EndDate
Set Enreg = DBA.OpenRecordset("Select Count(StatusID) As Downt FROM tbl_test_Mc_Status WHERE TimeStamp LIKE """ & i & "*"" AND (StatusID=14 OR StatusID=15 OR StatusID=16 OR StatusID=17 OR StatusID=19)", dbOpenDynaset)
Enreg.MoveFirst
MonXL.Cells(ligne, 4).Value = Enreg!Downt
Enreg.Close
ligne = ligne + 1
Next i
DBA.Close

Salut, et encore merci a jrivet et liquide! 8-)
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,

as tu ajouter a ton projet la reference qui te permet d utiliser le type de variable DataBase (une reference DAO il me semble).

-------------------------------------------------
Essai ca sinon on trouvera autre chose
-------------------------------------------------

:big)
Messages postés
17
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
29 octobre 2004

Heu.... Je suis plutôt debutant en la matiere... Comment qu'on fait?
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,

Menu Projet ... References.

Et dedans tu selecciones Microsoft DAO X.X Object Library.

Voila,`@+
-------------------------------------------------
Essai ca sinon on trouvera autre chose
-------------------------------------------------

:big)
Messages postés
17
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
29 octobre 2004

OK,Merci, J'ai trouve, mais y'a un nouveau pbm: y me dit "Object required" sur cette ligne:
Set DBA = CurentDb

Un autre soluc
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,

C est Coi curentDB , c est de quel Type et tu l a defini ou ? (pas dans le code que tu as file en tout cas...)

@+
-------------------------------------------------
Essai ca sinon on trouvera autre chose
-------------------------------------------------

:big)
Messages postés
17
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
29 octobre 2004

En fait, je voulais récuperer la base dans laquelle le code fonctionne.... Mais, ca marche peut etre pas comme ca?

:big)
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
re,

Essai
set DBA = "LeCheminDeTaBAse".

Salut
-------------------------------------------------
Essai ca sinon on trouvera autre chose
-------------------------------------------------

:big)
Messages postés
17
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
29 octobre 2004

Salut!
Bon maintenant, il me remet le "type mismatch" sur la ligne:
Set DBA = "Chemin_de_ma_base.mdb"

J'vais le tuer ce computer........ >:)

Si vous avez des idees......
Messages postés
17
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
29 octobre 2004

OK, en fait faut faire:
set DBA = OpenDatabase("Chemin")

Mais il me met une erreur de type sur la ligne suivante du recordset:
Set Enreg = DBA.OpenRecordset("SELECT Downt FROM NouvelleRequete")

La, je vois pas.......
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

salut
le mieux c'est de faire un openrecordset tout seul, puis bien apres lui affecté des requetes avec l'instruction "open" si je ne me trompe : Enreg.open "requete", dba

Puis, il faut savoir si "enreg est du type : dim enreg as recordset

Puis finallement donne le bout de ton code avec toutes les variables, de facon a voir comment tu as déclaré tout ca.

Bonne prog, poele_a_frire@hotmail.com
liquide
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
qu est ce qui te met comme erreur ?

-------------------------------------------------
Essai ca sinon on trouvera autre chose
-------------------------------------------------

:big)
Messages postés
17
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
29 octobre 2004

Je vous donne le code:

Dim i As Date
Dim ligne As Long
Dim MonFichier As String

MonFichier = "BudapestTest.xls"
Set MonXL = CreateObject("Excel.Application")
MonXL.Visible = True
MonXL.UserControl = True
MonXL.Workbooks.Open FileName:="E:\Documents and Settings\adlepine\My Documents" & MonFichier
MonXL.Range("B7").Value = StartDate

'Si on a coche Downtime, Envoi des resultat en colonne D7
If CheckDowntime = -1 Then
ligne = 7
For i = StartDate To EndDate
Dim DBA As Database
Dim Enreg As Recordset
DoCmd.RunSQL ("Select Count(StatusID) As Downt INTO NouvelleRequete FROM tbl_test_Mc_Status WHERE TimeStamp LIKE """ & i & "*"" AND (StatusID=14 OR StatusID=15 OR StatusID=16 OR StatusID=17 OR StatusID=19)")
DoCmd.OpenTable "NouvelleRequete"

Set DBA = OpenDatabase("M:\Engineering\Support_Budapest\Tx_Bud.mdb")
Set Enreg = DBA.OpenRecordset("SELECT Downt FROM NouvelleRequete")
Enreg.MoveFirst

MonXL.Cells(ligne, 7).Value = Enreg!Downt
ligne = ligne + 1
Next i
End If

En ce qui concerne l'erreur, il me met:
"Type Mismatch"
J'comprend pas......
Messages postés
17
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
29 octobre 2004

liquide,
Si je tente ton truc de separer le openrecordset, il me met: "Object variable or With block variable not set"

????????????????????????????????????????????????????
Messages postés
1016
Date d'inscription
samedi 22 mars 2003
Statut
Membre
Dernière intervention
24 juin 2008

ah ok j'avais pas capter que tu etais en dao, dsl

Bonne prog, poele_a_frire@hotmail.com
liquide
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
re,

j vois pas pourcoi ca chie car j ai essayer et moi ca marche nickel.

...
-------------------------------------------------
Essai ca sinon on trouvera autre chose
-------------------------------------------------

:big)
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
SAlut,

Content que tu aies trouve, mais c est coi alors qui faisait que ton programe plantait ?

@+
-------------------------------------------------
Essai ca sinon on trouvera autre chose
-------------------------------------------------

:big)
Messages postés
17
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
29 octobre 2004

En fait je sais pas, alors j'ai simplifier en virant la création de table NouvelleRequete et en executant directement la requte dans le recordset... Ca marche, c ca qui compte!
Merci encore pour ton aide!