Bonjour à tous,
voici un morceau de code que j'utilisais jusqu'à présent et qui fonctionnait très bien. Il me permet de récupérer les données de plusieurs fichiers fermés excel au format xls.
Mon problème est qu'aujourd'hui, les données que je récupère ne sont plus dans des fichiers xls mais dans des fichiers xlsx.
Quand je modifie la ligne:
par
Il me met un message d'erreur à la ligne
Erreur d'execution '-2147467259 (80004005)':
La table externe n'est pas dans le format attendu.
Or d'après mes recherches ce code permet bien d'ouvrir les fichiers xlsx.
Quelqu'un saurait-il une solution à ce problème?
En vous remerciant par avance.
voici un morceau de code que j'utilisais jusqu'à présent et qui fonctionnait très bien. Il me permet de récupérer les données de plusieurs fichiers fermés excel au format xls.
Code:
Dim Source As ADODB.Connection
Dim Rst As ADODB.Recordset
Dim ADOCommand As ADODB.Command
Dim Fichier As String, Cellule As String, Feuille As String
Dim tabloEtats As Variant, tabloEtats2 As Variant, numEtat As Integer
Feuille = "A$"
Cellule = "A1:AA100"
tabloEtats = Array("Etat des charges mensuel", "Salaires cumulés", "Salaires mensuels", "Taxes sociales cumul", "Taxes sociales mensuelles", "Frais de perso Pilote")
For numEtat = LBound(tabloEtats) To UBound(tabloEtats)
Fichier = ThisWorkbook.Path & "\Données\" & tabloEtats(numEtat) & ".xls"
Sheets(tabloEtats(numEtat)).Cells.ClearContents
Set Source = New ADODB.Connection
With Source
.Provider = "Provider=Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Fichier & ";Extended Properties=""Excel 12.0;HDR=No;"""
.Open
End With
Set ADOCommand = New ADODB.Command
With ADOCommand
.ActiveConnection = Source
.CommandText = "SELECT * FROM [" & Feuille & Cellule & "]"
End With
Set Rst = New ADODB.Recordset
Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
Set Rst = Source.Execute("[" & Feuille & Cellule & "]")
Sheets(tabloEtats(numEtat)).Cells(1, 1).CopyFromRecordset Rst
Rst.Close
Source.Close
Set Source = Nothing
Set Rst = Nothing
Set ADOCommand = Nothing
Next numEtat
Mon problème est qu'aujourd'hui, les données que je récupère ne sont plus dans des fichiers xls mais dans des fichiers xlsx.
Quand je modifie la ligne:
Code:
Fichier = ThisWorkbook.Path & "\Données\" & tabloEtats(numEtat) & ".xls"
par
Code:
Fichier = ThisWorkbook.Path & "\Données\" & tabloEtats(numEtat) & ".xlsx"
Il me met un message d'erreur à la ligne
Code:
.open
Erreur d'execution '-2147467259 (80004005)':
La table externe n'est pas dans le format attendu.
Or d'après mes recherches ce code permet bien d'ouvrir les fichiers xlsx.
Quelqu'un saurait-il une solution à ce problème?
En vous remerciant par avance.