Problème Microsoft Jet

Bonjour le Forum,

Je souhaiterais aller chercher des données dans un classeur fermé.

J'utilise Microsoft Jet.

J'ai coché la référence ActiveX data ... sur les deux classeurs.

J'ai l'erreur "MAJ impossible. La BDD ou l'objet est en lecture seule".

La case Lecture Seule dans les propriétés de Distance.xls n'est pas coché.

Voici le code actuel :

Private Exporter_Click()

    Dim Source As ADODB.Connection
    Dim Rst As ADODB.Recordset
    Dim ADOCommand As ADODB.Command
    Dim Fichier As String, Feuille As String

    'Adresse de la cellule contenant la donnée à récupérer
    'Arret = Range("A3") to Range("A" & .Range("A65356").End(xlUp).Row)
     Arret = "A3:A19"

    Feuille = CbxLigne.Value
    Fichier = "C:\Documents and Settings\stagiaire\Bureau\Distance.xls $"
    'Fichier = "C:\Documents and Settings\stagiaire\Bureau\[Distance.xls]"

    Set Source = New ADODB.Connection
    Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=No;"";"

    Set ADOCommand = New ADODB.Command
    With ADOCommand
        .ActiveConnection = Source
        '.CommandText = "SELECT * FROM [" & Feuille & Arret & "]"
        .CommandText = "SELECT * FROM [" & Fichier & "]"
    End With

    Set Rst = New ADODB.Recordset
    Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic

    Set Rst = Source.Execute("[" & Feuille & "]")

    Range("A3").CopyFromRecordset Rst

    Rst.Close
    Source.Close
    Set Source = Nothing
    Set Rst = Nothing
    Set ADOCommand = Nothing

 End Sub

J'ai pris la plage A3:A19 pour tester mais je l'utilise pas encore car déjà l'ouverture ne fonctionne pas.

Quelques conseils serait apprécié.

Merci à vous.

Salut Maxi,

Si ton but est d'aller chercher des données dans un classeur fermé - et non pas d'utiliser absolument Microsoft Jet - tu peux te baser sur le code ci-dessous :

Sub xxx()
Application.ScreenUpdating = False
Workbooks.Open Filename:="C:\Xxx\Yyy\Nom_du_Fichier.xls"
'Chercher les données voulues
ActiveWorkbook.Close
End Sub

Cordialement

Bonjour Le Forum,

@ Yvouille : Bonjour,

Merci de ta réponse, je teste ton code.

Est-il toujours possible d'associer le code à des requêtes SQL ou à des conditions liées à un switch .... case ?

Exemple : accéder à une feuille précise et à une plage donnée selon conditions.

Cordialement,

Maxi a écrit :

Est-il toujours possible d'associer le code à des requêtes SQL ou à des conditions liées à un switch .... case ?

Exemple : accéder à une feuille précise et à une plage donnée selon conditions.

Selon moi, oui. Il faudrait juste savoir précisément ce que tu désires faire.

Cordialement

Re,

Modification du message.

Merci beaucoup, ton code fonctionne.

J'arrive à copier les données souhaitées.

Avant de marquer Résolu, une dernière question.

Je dois cliquer sur la croix rouge de mon Userform pour que la copie s'effectue.

J'aimerais corriger ceci. Le Userform est en modal. Il doit bloquer je pense.

Je ne suis pas sûr de pouvoir te répondre. Mais en tout cas pas sans ton fichier.

Je te conseille alors de clore ce fil et d'en rouvrir un nouveau avec ta nouvelle question. Et, qui sait, c'est peut-être moi qui te répondra

NB : J'étais en train de chercher une réponse à tes premières questions effacées.

Cordialement.

Re,

Ok, je ferme le sujet.

Merci à toi pour ton code simple, bref et efficace.

Je cherchais compliquer alors que ... bref.

Désolé de t'avoir fait chercher pour rien, entre temps, j'ai trouvé la solution pour copier/exporter les données.

Merci encore.

Rechercher des sujets similaires à "probleme microsoft jet"