Problème de connexion d'excel

Résolu
CherN -  
 allan -
Bonjour,

Un peu bloqué depuis 24H sur l’établissement d'une connexion vers Excel a partir d'un macro tournant dans Access.
Au fait , je dois lire dans un fichier excel fermé pour remplir une table dans Access mais il se trouve que la connexion échoue à chaque fois. Vu les messages d’erreurs obtenus , il s'agirait d'une incompatibilité de versions.
Ps : je travail sur Office 365, les modules Microsoft sont activés. et il y'a aussi un problème de syntaxe sur ConnectionString.
Merci d'avance !

VOici mon code :

Sub TestConnection_V1()

Dim Cn As ADODB.Connection
Dim Fichier As String

'Définit le classeur fermé servant de base de données

Set Cn = New ADODB.Connection

'--- Connexion ---
With Cn
.Provider = "Microsoft.Jet.OLEDB.12.0"
.ConnectionString = "Data Source='c:\\Users\\test1.xlsx';Extended Properties=Excel 12.0 Xml;Readonly=False;";
.Open
End With

'
'
'... la requête ...
'

'--- Fermeture connexion ---
Cn.Close
Set Cn = Nothing

End Sub

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    essayez comme ceci:

    'http://silkyroad.developpez.com/VBA/ClasseursFermes/
    Sub RequeteClasseurFerme_Excel2007()
        Dim Cn As ADODB.Connection
        Dim Fichier As String
        Dim NomFeuille As String, texte_SQL As String
        Dim Rst As ADODB.Recordset
        
        'Définit le classeur fermé servant de base de données
        Fichier = "c:\Users\test1.xlsx"
        'Nom de la feuille dans le classeur fermé
        NomFeuille = "Feuil1"
        
        Set Cn = New ADODB.Connection
        
        '--- Connexion ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
                & Fichier & ";Extended Properties=""Excel 12.0;READONLY=FALSE;"""
            .Open
        End With
        '-----------------'
    '... la requête ...
    '
    
    '--- Fermeture connexion ---
    Cn.Close
    Set Cn = Nothing
    
    End Sub
    
    0
    1. allan
       
      erreur de compilation à la première ligne
      0
  2. CherN
     
    Merci de ta réponse, j'ai pas essayé car mon code fonctionne. Je l'i lu ton code mais il parait par rapport à ce que j'ai fait.
    Je le partage quand mm car ça peut servir.
    Ce code fonctionne sur Access 2013, il est composé de deux partie. Un procédure qui appelle une fonction :


    Option Compare Database

    Sub Connexion()

    Dim cn As New ADODB.Connection
    Dim cn2 As New ADODB.Connection
    Dim Bool As Boolean
    Dim Source As String
    Dim Cible As String
    Dim Comment As String
    Dim Action As String

    'MsgBox MaBase ' a supp

    Set cn = ConnectionClasseur(ChemFich) ' J'appelle ma fonxrion qui me renvoie l'objet connection PS : En paramettre le chemin de mon fichier

    Dim sSQL As String
    Dim rst As New ADODB.Recordset

    sSQL = "SELECT * FROM [" & "Feuil1" & "$]" ' Nos requetes seront effectué sur la feuille 1 du claeeur en lecture
    rst.Open sSQL, cn

    While Not rst.EOF
    'Affiche le contenu du premier champ

    ' Ici je pourrais affecté des vairiable par 10
    Action = rst.Fields(0) ' Ceci affecte la valeur de la Cellule A1 à Action. On pouvait opter pour un affichagecomme suit : MsgBox rst.Fields(0)
    Source = rst.Fields(1) ' Cellule SOurce

    ' ici je mettrai mes condition de vérif est ce je vais insérer ou pas
    ' INSTRUCTIONS A ADAPTER

    Bool = SelctInTo_Tab.Selection(Source, Cible) ' C'est une fonction se trouvant sur un autre module qui renvoie u boolean

    If Bool = True Then

    Call Insert_IN_Table1.InserInToTab(Action, Source, Cible, Comment)

    Else

    '''' On fait rien on passe à la ligne suivante :)

    End If

    ''''''''''''''''''''''''''' Fin insersion '''''''''''''''''''''''''''''''

    rst.MoveNext ' en fction de mes varibles je decide du Move de combien
    Wend

    cn.Close

    Set cn = Nothing
    End Sub

    Function ConnectionClasseur(sFichierExcel As String) As ADODB.Connection
    Dim cn As New ADODB.Connection

    Set cn = New ADODB.Connection
    cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sFichierExcel & ";Extended Properties=Excel 12.0 Xml; Persist Security info=False"
    cn.Open
    Set ConnectionClasseur = cn

    'Extended Properties=Excel 12.0 Xml;HDR=YES;

    End Function

    0