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
Partager