Copier plages cellule fichiers sources vers fichiers dest
Bonjour,
Je bloque actuellement sur la récupération de données de deux fichiers sources vers mon fichier de destination qui s'avère être un fichier d'analyse.
J'ai déjà une macro me permettant de sélectionner et ouvrir les deux fichiers souhaités.
Maintenant, ce que je n'arrive pas a faire c'est sélectionner les informations qui m’intéresse dans ces deux fichiers et les copier dans mon fichier de destination.
Détails de mon besoin :
Mon fichier de destination se nomme Analyse, c'est depuis ce fichier à partir de la Feuil"Analyses" que je lance ma macro.
Elle permet de sélectionner et ouvrir les fichiers sources de mon choix, en l’occurrence :
- Source120112020
- Source220112020
Ces deux fichiers voient leurs nom évoluer quotidiennement en fonction de la date. Seule la racine Source1 et Source2 est fixe, la suite change chaque jour.
1 ère difficulté, comment réussir a activer ces fichiers une fois ouvert afin de venir copier la plage de cellule que j'ai besoin.
J'essaye de faire dire la chose suivante à ma macro sans succès => Activer le workbook qui commence par Source1*
Un début de code qui ne marche pas en dessous.
Set Wbk1 = ThisWorkbook
'
For Each wb In Workbooks
If UCase(wb.Name) Like "Source1*" Then wb.Select: Exit For
With ActiveSheet
Une fois mes 3 fichiers ouverts (Analyse, Source1*, Source2*), je souhaite :
1) Venir copier les cellules C7:I200 de la Feuil("Export_22112020") de classeur Source1 vers la Feuil "Variables1" de mon classeur Analyse (en démarrant par la cellule A12)
On note également que la Feuil du classeur Source1 à une partie de son nom variable selon la date, seule la racine "Export_" reste inchangée.
2) Venir copier les cellules des plages suivante => A7:B5000 puis G7:O5000 puis V7:Y5000 du fichier source2 depuis la Feuil "Base_de_données" vers mon classeur Analyse Feuil Variables2.
Ces 3 plages de cellule formeront dans la Feuil Variable2 du classeur Analyses un tableau, elles seront donc copiées successivement à la suite des autres sans laisser de colonnes vides.
3) Fermer les deux classeurs source une fois la copie réalisée.
Merci d'avance pour votre aide.
En PJ les 3 fichiers.
Cdt
Bonsoir à toutes et à tous,
Je relance le sujet, est-ce qu'une âme charitable aurait des élément de réponses quant à mon besoin ?
Encore désolé si je l'exprime avec maladresse (relativement débutant en VBA).
Merci d'avance et bonne fin de journée
Bonjour Spike, bonjour le forum,
Peut-être comme ça :
Sub Ouverture_fichiers_source2()
Dim CD As Workbook
Dim OD As Worksheet
Dim BSF As FileDialog
Dim FS As Byte
Dim CS() As Variant 'déclare la variable CS (tableau des Classeurs Sources)
Dim OS() As Variant 'déclare la variable OS (tableau des Onglets Sources)
Set CD = ThisWorkbook
Set OD = CD.Worksheets(1)
Set BSF = Application.FileDialog(msoFileDialogOpen)
BSF.AllowMultiSelect = True
BSF.Show
If BSF.SelectedItems.Count = 0 Then Exit Sub
For FS = 1 To BSF.SelectedItems.Count
ReDim Preserve CS(1 To FS) 'redimensionne le tableau des Classeurs Sources
ReDim Preserve OS(1 To FS) 'redimensionne le tableau des Onglets Sources
Application.Workbooks.Open (BSF.SelectedItems(FS))
Set CS(FS) = ActiveWorkbook 'définit le classeur source
Set OS(FS) = CS(FS).Worksheets(1) 'définit l'onglet source
CD.Activate 'inutile dans la boucle
OD.Activate 'inutile dans la boucle
Next
CS(1).Activate 'juste pour voir le resultat pas à pas...
CS(2).Activate'juste pour voir le resultat pas à pas...
End SubEnsuite tu pourras faire tes copier/coller juste en spécifiant l'onglet source OS(1) ou OS(2) et l'onglet destination OD du style :
OS(1).Range("A1:G15").Copy OD.Range("A1") 'juste un exemple...Bonjour ThauThème et merci pour ta réponse.
Ton code fonctionne à merveille, plus qu'à l'adapter à mon fichier.
Un grand merci !
Bonne journée à toi.