Citation:
Envoyé par Sclarckone
En effet le 'xlsx' n'existait pas du "temps" de Jet 4.0. Essaie:
Code :
.Provider = "Microsoft.ACE.OLEDB.14.0"
Et si ça ne marche pas tu peux essayer celui d'Excel 2007:
Code :
.Provider = "Microsoft.ACE.OLEDB.12.0"
|
Bonjour,
Je travaille avec EXCEL 2007, j'ai recopié le code ci-dessus de cette
discussion pour récupérer des données depuis un classeur (.XLS) fermé...
A la compilation, j'ai un message d'erreur:
Type défini par l'utilisateur non défini!
Voici le code:
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
Sub extractionValeurCelluleClasseurFerme()
Dim Source As OLEDBDB.Connection
Dim Rst As OLEDBDB.Recordset
Dim ADOCommand As OLEDB.Command
Dim Fichier As String, Cellule As String, Feuille As String
'Adresse de la cellule contenant la donnée à récupérer
Cellule = "CS5:CS5"
'Pour une plage de cellules, utilisez:
'Cellule = "A4:C10"
Feuille = "normal$" 'n'oubliez pas d'ajouter $ au nom de la feuille.
'Chemin complet du classeur fermé
Fichier = "nom_classeur.XLS"
Set Source = New OLEDB.Connection
Source.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=No;"";"
Set ADOCommand = New OLEDB.Command
With ADOCommand
.ActiveConnection = Source
.CommandText = "SELECT * FROM [" & Feuille & Cellule & "]"
End With
Set Rst = New OLEDB.Recordset
Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
Set Rst = Source.Execute("[" & Feuille & Cellule & "]")
Range("A2").CopyFromRecordset Rst
Rst.Close
Source.Close
Set Source = Nothing
Set Rst = Nothing
Set ADOCommand = Nothing
End Sub |
Merci d'avance de votre aide c'est urgent!