Bonjour à tous, j'espère que quelqu'un ici pourra me faire avancer sur mon problème.
J'utilise une macro qui me permet d'aller copier une feuille d'un fichier pour la coller dans un autre fichier sans ouvrir le premier fichier.
Mon problème est que ma macro fonctionne quand le fichier où je récupères mes données est enregistré sous format 97-2003 mais j'obtiens une erreur d'exécution '-2147217865 (80040e37)' lorsque ce fichier est en format 2007.
La macro fonctionne tout de même avec le format 2007, cependant seulement quand les deux fichiers sont ouverts.
Mon but est donc que cette macro fonctionne sous format 2007 avec la base de données fermée, je cherche et je cherche mais ne m'y connaissant pas énormément en VB, je dirais que je pédale dans la semoule =)
Merci d'avance de votre aide.
Voici la macro :
J'utilise une macro qui me permet d'aller copier une feuille d'un fichier pour la coller dans un autre fichier sans ouvrir le premier fichier.
Mon problème est que ma macro fonctionne quand le fichier où je récupères mes données est enregistré sous format 97-2003 mais j'obtiens une erreur d'exécution '-2147217865 (80040e37)' lorsque ce fichier est en format 2007.
La macro fonctionne tout de même avec le format 2007, cependant seulement quand les deux fichiers sont ouverts.
Mon but est donc que cette macro fonctionne sous format 2007 avec la base de données fermée, je cherche et je cherche mais ne m'y connaissant pas énormément en VB, je dirais que je pédale dans la semoule =)
Merci d'avance de votre aide.
Voici la macro :
Sub RequeteClasseurFerme()
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:\...........\1.xls"
'Nom de la feuille dans le classeur fermé
NomFeuille = "Feuil1"
Set Cn = New ADODB.Connection
'--- Connection ---
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & Fichier & _
";Extended Properties=Excel 8.0;"
.Open
End With
'-----------------
'Définit la requête.
'/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.
texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
Set Rst = New ADODB.Recordset
Set Rst = Cn.Execute(texte_SQL)
'Ecrit le résultat de la requête dans la cellule A2
Range("A2").CopyFromRecordset Rst
'--- Fermeture connexion ---
Cn.Close
Set Cn = Nothing
End Sub