Bonjour,
je suis actuellement sur un projet d'extraction de requette sql sur acces vers un tableur exel, pour cela j'utilise VB sous acces, donc pour le moment j'arrive a extraire ma requette, mais lorsque je veux mettre une variable a partir d'une textbox dans ma requete ca plante, voici mon code :
La ligne en rouge est désigné comme erronée (je signal juste que je susi débutant en VB), voici l'erreur indiquée :
"Erreur d'exécution '2185' :
Impossible de faire référenceà une propriété ou de la définir pour un contrôle si ce dernier n'est pas activé."
J'espere que vous pouvez m'aider c assé urgent .
---------------
Option Compare Database
Option Explicit
Dim Xlapp As Excel.Application
Dim XlBook As Excel.Workbook
Dim XlSheet As Excel.Worksheet
Public Sub ExporteVersExcel()
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Dim NomFeuille As String
Dim id As TextBox
id = formtest.text_id.Text
On Error GoTo Err_ExporteVersExcel
Set Xlapp = New Excel.Application
'Set Xlapp = GetObject(, "Excel.Application" )
'On Error GoTo oups:
On Error GoTo 0
Xlapp.Visible = True
NomFeuille = "Exportation des tables"
'NomFeuille = "Save" & DatePart("ww", Date)
Set XlBook = Xlapp.Workbooks.Open("d:\Nvx.xls" )
If FeuilleExiste(NomFeuille, XlBook.Name) Then
Set XlSheet = XlBook.Worksheets("S07" )
' efface les données
XlSheet.Cells.Clear
Else
' Ajouter nouvelle feuille en dernière position
Set XlSheet = XlBook.Worksheets.Add(, XlBook.Worksheets(XlBook.Worksheets.Count))
XlSheet.Name = NomFeuille
End If
Set Db = CurrentDb
' Copie dans feuille (nouvelle ou effacée)
'Set Rs = Db.OpenRecordset("T31_Cumul_Nvx_clients_par_BG", , dbOpenForwardOnly)
Set Rs = Db.OpenRecordset("SELECT * FROM test WHERE id = " & id & " ", , dbOpenForwardOnly)
XlSheet.Range("A2" ).CopyFromRecordset Rs
Set XlSheet = Nothing
' remise au début car le 'CopyFromRecordset' ne le fait pas
Rs.MoveFirst
'??? une 2ième foiS ??? XlSheet.Range("A1" ).CopyFromRecordset Rs
' Ferme les Var
'Rs.Close '(lancer d'un form déjà aménagé pour moi)
Set Rs = Nothing
'Db.Close '(lancer d'un form déjà aménagé pour moi)
Set Db = Nothing
Set XlSheet = Nothing
' Sauve le fichier
XlBook.Save
'XlBook.Close
Set XlBook = Nothing
Set Xlapp = Nothing
'lupin*****************
Exit_ExporteVersExcel:
'...
Exit Sub
Err_ExporteVersExcel:
'Err 429 : Un serveur OLE Automation ne peut pas créer d'objet
' -> Excel n'est PAS encore ouvert.
If Err = 429 Then
Set Xlapp = CreateObject("Excel.Application" )
Resume Next
End If
oups:
MsgBox Err.Number & " - " & Err.Description
Resume Exit_ExporteVersExcel
End Sub
'
Function FeuilleExiste(NomFeuille As String, Classeur As String) As Boolean
Dim Feuille As Object
FeuilleExiste = False
For Each Feuille In Xlapp.Worksheets
If (Feuille.Name = NomFeuille) Then
FeuilleExiste = True
End If
Next Feuille
End Function
'