Copier fichiers sources vers plusieurs feuilles d'un fichier principal

Bonjour à tous,

Après quelques recherches sur le forum, je n'ai rien trouvé satisfaisant ma demande donc je me permets de vous la soumettre ici.

Je dispose :

  • d'un fichier principal avec mes formules
  • de plusieurs fichiers "sources" avec mes données

L'action pour laquelle je souhaite créer une macro est celle de la copie des infos des sources vers le fichier principal.

Actuellement, je copie colle ces infos à la main : une feuille par fichier source dans le fichier principal.

Je répète cette opération de c/c à chaque mise à jour des sources.

Je souhaite donc pouvoir récupérer avec une macro les données des fichiers sources et les coller dans des feuilles dédiées.

Les contraintes :

  • les sources n'ont pas forcément le même nombre de colonnes et de lignes => il faut sélectionner toutes les données de la feuille de la source
  • dans la feuille cible, il faut supprimer les valeurs précédemment renseignées avant copie
  • le nom du fichier source est susceptible de changer donc plutôt que de l'avoir en dur dans le code, j'opterai pour une sélection manuelle (type GetOpenFilename)

Pour pouvoir gérer plusieurs sources, je pense qu'il faudra passer par une adaptation de la macro pour chacune (en avoir une pour chaque feuille en fait). Si vous avez une idée pour tout faire en une fois, je suis évidemment preneur !

Je vous joins un fichier d'exemple pour la forme mais il n'y a rien côté macro.

Merci d'avance.

Bonjour,

Voici un premier programme de compilation. Il s'agit ici d'importer dans des onglets différents et créés ls données de tous les fichiers d'un même répertoire. C'est un début.

Option Explicit

Sub collecter()
Dim wbk1 As Workbook, wbk2 As Workbook, ws1 As Worksheet
Dim MonRepertoire, Repertoire As FileDialog, monFichier$, derL%

    Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
    Application.FileDialog(msoFileDialogFolderPicker).Title = "Choix du répertoire de stockage des fichiers générés"
    Repertoire.Show
    If Repertoire.SelectedItems.Count = 0 Then Exit Sub
    MonRepertoire = Repertoire.SelectedItems(1) & "\"

    Set wbk1 = ThisWorkbook
    monFichier = Dir(MonRepertoire & "*.xlsx")

    Do While monFichier <> ""
        Set ws1 = wbk1.Sheets.Add(After:=wbk1.Sheets(wbk1.Sheets.Count))
        Set wbk2 = Workbooks.Open(MonRepertoire & monFichier)
        wbk2.ActiveSheet.UsedRange.Copy
        ws1.Paste
        Application.DisplayAlerts = False
            wbk2.Close False
        Application.DisplayAlerts = True
        monFichier = Dir
    Loop

End Sub

Il faudrait maintenant préciser le lien entre les onglets prédéfinis (que j'ai malheureusement supprimés) et les fichiers importés de façon à coller ces infos au bon endroit.

Autre solution plus conforme à ton souhait

Sub compil()
Dim ws As Worksheet, fichier As Variant, wb As Workbook
For Each ws In Worksheets
    If ws.Name <> "Calculs" Then
        ws.Select
        fichier = Application.GetOpenFilename("Fichiers (*.*), *.*")
        If fichier <> False Then
            Set wb = Workbooks.Open(fichier)
                ws.UsedRange.Offset(1, 0).ClearContents
                wb.ActiveSheet.UsedRange.Copy Destination:=ws.Range("A1")
            wb.Close
        End If
    End If
Next
Sheets("Calculs").Select
End Sub

Bonjour Steelson,

Ta deuxième réponse répond parfaitement à ma problématique.

En plus elle permet de gérer autant de fichiers source qu'on le souhaite, c'est top.

J'ai simplement ajusté l'identification de l'onglet de référence sur le CodeName plutôt que sur le Name mais c'est un détail.

Merci beaucoup pour ton aide et le temps consacré.

Rechercher des sujets similaires à "copier fichiers sources feuilles fichier principal"