Bonjour,

Je souhaiterai copier un cellule ou une plage de cellule definie d'un classeur fermé, dans la page actuelle à l'aide d'un bouton macro.
J'ai déjà le code suivant qui fonctionne mais copie toute les données du classeur source et je voudrais pouvoir choisir qu'une seule cellule.
Je suis débutant dans ce domaine, merci pour votre aide.

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Sub importer()
 Dim Source As Object
 Dim Rst As Object
 Dim ADOCommand As Object
 Dim Chemin As String, Cellule As String, Feuille As String
 Dim Cellule2 As String, Fichier As String
 
'------------------------------------------------------------------------
'---------Importation Données depuis Classeur Fermé------------
'------------------------------------------------------------------------
 
 'Plage variable des cellules contenant les données à récupérer dans le classeur fermé
 'Variabilité de la plage obtenue par une commande Concatener dans la feuille actuelle
 Cellule = Range("L35:L35")
 
   'Pour une plage de cellules, utilisez: Cellule = "A4:C10" et une simple cellule : cellule = "A4"
 
 'Nom de la feuille ou onglet variable ciblé dans le classeur fermé
 'Variabilité de la feuille obtenue par une commande Concatener dans la feuille actuelle
 Feuille = "B1150$"
   'N'oubliez pas d'ajouter $ au nom de la feuille.
   'Pour une feuille connue, utilisez : Feuille = "Exemple$"
 
 'Chemin complet et variable du classeur fermé
 'Variabilité obtenue par une commande Concatener dans la feuille actuelle
 Chemin = Range("M04").Value
   'Pour un chemin unique défini, utilisez : Chemin = "C:\Utilisateur\Bureau\Test.xls"
 
 'Instance LateBinding pour connexion au classeur fermé sans activation préalable
 'de Microsoft ActiveX Data Objects 2.0 Library
 Set Source = CreateObject("ADODB.Connection")
    Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & Chemin & _
        ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1;"";" '
 
 Set ADOCommand = CreateObject("ADODB.Command")
 With ADOCommand
   .ActiveConnection = Source
   .CommandText = "SELECT * FROM [" & Feuille & Cellule & "]"
 End With
 
 Set Rst = CreateObject("ADODB.Recordset")
 Rst.Open ADOCommand, , 1, 3
   '1 = adOpenKeyset, 3 = adLockOptimistic
 
'Copie le contenu des cellules dans le classeur ouvert (actuel)
 Set Rst = Source.Execute("[" & Feuille & Cellule & "]")
 
 Range("M18").CopyFromRecordset Rst
   'Pour une plage de cellule connue, utilisez : Range("A4:C10").CopyFromRecordset Rst
 
 Rst.Close
 Source.Close
 Set Source = Nothing
 Set Rst = Nothing
 Set ADOCommand = Nothing
 
End Sub