Bonjour,
J'essaie de lire certains d'un classeur fermé avec le code suivant.
Sa fonctionne très bien dans VBA, sa prend tout le contenu et la copie dans ma cellule AO10.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 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 'Adresse de la cellule contenant la donnée à récupérer 'Cellule = "B4:B4" 'Pour une plage de cellules, utilisez: Cellule = "G10:G15" Feuille = "Données$" 'n'oubliez pas d'ajouter $ au nom de la feuille. 'Chemin complet du classeur fermé Fichier = "C:\Documents and Settings\moi\Bureau\dossier\fichier.xls" Set Source = New ADODB.Connection Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=No;"";" 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 & "]") Range("AO10").CopyFromRecordset Rst Rst.Close Source.Close Set Source = Nothing Set Rst = Nothing Set ADOCommand = Nothing
Je veux pouvoir l'appeler via ma feuille excel, j'ai donc crée une fonction.
Le code est identique mais quand j'essaie de l'appeler en écrivant =LireCellule()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Private Function LireCellules() 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 'Adresse de la cellule contenant la donnée à récupérer 'Cellule = "B4:B4" 'Pour une plage de cellules, utilisez: Cellule = "G10:G15" Feuille = "Données$" 'n'oubliez pas d'ajouter $ au nom de la feuille. 'Chemin complet du classeur fermé Fichier = "C:\Documents and Settings\u3346\Bureau\Horaire Variable\Hor_Variable_JH_2010-05.xls" Set Source = New ADODB.Connection Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=No;"";" 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 & "]") Range("AO10").CopyFromRecordset Rst Rst.Close Source.Close Set Source = Nothing Set Rst = Nothing Set ADOCommand = Nothing End Function
Dans une cellule quelconque, sa me ressort l'erreur ::
La méthode CopyFromRecordset de l'objet Range a échoué
Quelqu'un aurait une idée du "pourquoi" ?
Je vous remercit !![]()
Partager