Problème de connexion d'excel

Résolu/Fermé
CherN - Modifié par CherN le 11/02/2016 à 12:04
 allan - 23 juin 2016 à 11:03
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
A voir également:

2 réponses

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
11 févr. 2016 à 15:29
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
erreur de compilation à la première ligne
0
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