Bonjour,
J'ai réalisé une macro qui récupère des données selon des conditions particulière dans un fichier en balayant une plage de cellule et qui les importe dans un autre fichier excel.(cette macro ne fonctionne que si le fichier source est ouvert).
le fichier source étant fermé je me suis renseigné sur comment importer des données d'un fichier fermé notamment grâce au tuto de silkyroad
j'ai essayé d'intégrer ma macro de récup de données à la macro pour lire les données d'un fichier fermé mais je n'y arrive pas.
Quelqu'un a t'il une idée sur comment faire pour intégrer ma première macro à la macro de lecture d'un fichier fermé ?
Merci pour les réponses
Voici la macro de récupération de données
Voici la macro pour récupérer des données dans un fichier fermé
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 '----------------------------macro récup des données-----------------' Dim i As Integer 'variable de balayage Colonnes Dans le fichier source Dim j As Integer 'variable de balayage lignes Dans le fichier source Dim CAE As String 'contient la CAE du fichier source Dim n As Integer 'position de l'underscore dans la CAE Dim k As Integer 'variable d'incrémentation pour écrire les CAEs dans le fichier de destination Sub recuperation_données() ' '-----------------------feuille 1------------------------------------' ' k = 3 'démarrage de l'inscription des données dans source.xlsx à la ligne 3 * For i = 14 To 21 'balayage colonnes * For j = 38 To 190 'balayage lignes * CAE = Workbooks("source.xlsx").Sheets("ND").Cells(j, i) ' n = InStr(CAE, Chr(95)) 'recherche de "_ (underscore)" If (n <> 0) Then 's'il y a un underscore alors la donnée du classeur FTA est copié dans le classeur "destination" Workbooks("destination.xlsm").Sheets("Feuil1").Cells(k, 2) = CAE k = k + 1 End If Next j Next i End Sub
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 = "B20:B20" Feuille = "ND$" 'n'oubliez pas d'ajouter $ au nom de la feuille. 'Chemin complet du classeur fermé Fichier = "C:\Users\duheml\Documents\Test_destination_source\source.xlsx" Set Source = New ADODB.Connection Source.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & Fichier & ";Extended Properties=""Excel 12.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("A2").CopyFromRecordset Rst Rst.Close Source.Close Set Source = Nothing Set Rst = Nothing Set ADOCommand = Nothing End Sub
Partager