Bonjour,
j'ai trouvé dans vos liens une partie de la réponse que je cherchais:
Pour lire les données d'une feuille fermée, j'ai trouve ceci:
************
***************
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 Sub extractionValeurCelluleClasseurFerme() 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 = "B6:N247" 'Pour une plage de cellules, utilisez: 'Cellule = "A4:C10" Feuille = "UN$" ''n'oubliez pas d'ajouter $ au nom de la feuille. 'Chemin complet du classeur fermé Fichier = "D:\Excel avec copie\ben01.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("B6").CopyFromRecordset Rst Rst.Close Source.Close Set Source = Nothing Set Rst = Nothing Set ADOCommand = Nothing End Sub
Le code marche impec. Or je voudrais (si possible)
(1) pouvoir sélectionner un plage nommée (par ex. Application.Goto Reference:="Tout_base"
Selection.Copy)
(2) Passer le nom du fichier (ben01.xls) dont je suis sûr en variable en récupérant la path du fichier qui lance la macro (ben01_principal) (ils seront surment dans le même répertoire mais je ne sais pas lequel - en principe-)
(3) je voudrais un coller avec liaison pour pouvoir lancer le moins souvent possible la macro de mise à jour des données.
Merci à l'avance
Partager