Copier des plages de données depuis des classeurs fermés

jim7963

XLDnaute Junior
Bonjour à tous,

je fais appelle de nouveau à vous car je suis face à un gros problème que mon faible niveau ne me permet pas de résoudre. J'ai eu beau chercher ici et sur d'autres forums je n'arrive pas à construire la macro que je souhaite.

Je vous explique: j'ai un classeur excel qui me sert à établir des budgets. Dans ce classeur, je dois intégrer le CA quotidien de l'année précédente qui servira de base de calcul.
Evidemment quand j'exporte ces données depuis un logiciel externe cela ne s'intégre pas directement dans mon classeur excel (ce serait trop beau). Ces données sont exportées dans un classeur excel différent.
Il y a un fichier par mois et par rayon (ce qui représente environ dans les 500 fichiers au final, vous comprendrez la lourdeur que cela représente de faire des copier-coller manuels, avec les riques d'erreur que cela peut engendrer).

La racine du chemin de ces fichiers est la même que celle du fichier de budget (on peut donc utiliser le ThisWorkbook.Path), après ils sont répartis dans des sous-dossiers de la façon suivante:
\Exports\"Nom du rayon"\"Nom du rayon" + "Mois" .xls (exemple de chemin: \Exports\Epicerie\Epicerie Janvier.xls)

Les données à récupérer dans ces fichiers se trouvent sur la plage I2 jusqu'à l'avant dernière ligne de la colonne I.

Dans mon tableau de budgets, j'ai une feuille par mois et sur chaque feuille apparait l'ensemble des rayons.

Ce que je souhaite faire c'est copier la plage de cellules de données de tous les fichiers et faire un collage des valeurs dans mon fichier de budget dans la colonne "Base CA" de chaque rayon pour les 12 mois de l'année, le tout sans avoir à ouvrir mes nombreux fichiers de données.

Je vous joins en exemple un de mes fichiers de budget (j'en ai 6 en tout) ainsi qu'un exemple de fichier de données.

J'espère avoir été suffisament clair dans mon exposé, sinon n'hésitez pas à m'interpeler.

J'espère que vous pourrez m'aider à réoudre ce problème.

Merci par avance pour tout.
 

Pièces jointes

  • Test Budgets jours ELDPH.xlsm
    243.7 KB · Affichages: 30
  • Epicerie Janvier.xls
    28 KB · Affichages: 34

jim7963

XLDnaute Junior
Re : Copier des plages de données depuis des classeurs fermés

Bon en continuant de fouiller sur le net et en faisant quelques adaptations j'ai le code suivant:

Code:
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
Cellule = "I2:I41"
Feuille = "A$"
Fichier = ThisWorkbook.Path & "\Exports\Epicerie\Epicerie Janvier.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 & "]")
Sheets(2).Range("D12").CopyFromRecordset Rst
Rst.Close
Source.Close
Set Source = Nothing
Set Rst = Nothing
Set ADOCommand = Nothing
End Sub

C'est un début mais c'est encore loin du résultat que je souhaite obtenir car avec cette solution je ne récupère les données que d'un seul fichier.
 

jim7963

XLDnaute Junior
Re : Copier des plages de données depuis des classeurs fermés

Please help!!!

Personne n'a d'idée pour modifier ce code afin d'arriver à au résultat que je souhaite? A savoir récupérer les données de tous mes fichiers et les placer dans les colonnes souhaitées.
 

Discussions similaires

Réponses
46
Affichages
867
Réponses
45
Affichages
1 K

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote