Probleme de variable VB Access

Probleme de variable VB Access - VB/VBA/VBS - Programmation

Marsh Posté le 13-12-2007 à 22:54:31    

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
 
'
 

Reply

Marsh Posté le 13-12-2007 à 22:54:31   

Reply

Marsh Posté le 14-12-2007 à 09:23:46    

id est un objet (TextBox), donc tu ne peux pas le remplir avec la propriété .Text
Veux-tu affecter l'objet ou bien la valeur de la propriété .Text ?

Reply

Marsh Posté le 14-12-2007 à 11:08:23    

tegu a écrit :

id est un objet (TextBox), donc tu ne peux pas le remplir avec la propriété .Text
Veux-tu affecter l'objet ou bien la valeur de la propriété .Text ?


 
J'aimerais lui affecter la valeur de la TextBox, c'est a dire si je rentre 24 dans la textbox, je ca me rentre 24 dans ma requete.

Reply

Marsh Posté le 14-12-2007 à 13:37:49    

Tu dois donc déclarer id de type String, pas TextBox.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed