Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 [Macro] Importer des données de plusieurs fichiers dans un seul fichier/plusieurs onglets

dj-spirit

XLDnaute Nouveau
Bonjour à toutes et tous,

Ma problématique est la suivante :

Tous les jours je dépose x fichiers dans un dossier qui reprends des stats du 1er jours du mois à hier.

Ensuite dans chacun de ces fichiers je reprends les données de 2 colonnes (onglet machin) et je viens les coller dans l'onglet concerné de mon fichier "Réalisé" .
Dans le fichier de base de mes imports il n'y a pas de notion de date sauf dans l'en tête du fichiers , les jours sont numérote en 1 -2 -3 -4 -5 -6 -etc .

Mon fichier d’import là je l'ai appelé" import donnée 1"
Mon fichier de réalisé est appelé Réalisé.

Le but est que tous les matins une fois que nous avons déposé les fichiers ils viennent complètement automatiquement les cellules vides dans chacun des onglets par rapport au nom des fichiers enregistré et que le lundi cela reprennent les données non importés du week-end.

En fouillant avant de vous ecrire j'ai trouvé cela :

Code:
Option Explicit

Sub Importfiles()
Dim WbDest As Workbook, WbSource As Workbook
Dim WksNewSheet As Worksheet
Dim NomFichier As String, Chemin As String
Dim I As Long

  Set WbDest = ActiveWorkbook

  Chemin = "C:\PFT\Import\"
  NomFichier = Dir(Chemin & "*.xls") 'définit les fichiers à importer en l’occurence tous les fichiers excel se trouvant dans ce répertoire

  Do While NomFichier <> ""                     'démarre la boucle jusqu’au dernier fichier disponible dans le répertoire
    Set WbSource = Workbooks.Open(Chemin & NomFichier)   'ouvre le fichier actuel à importer
    Set WksNewSheet = WbSource.Sheets("Feuil1") 'sélectionne la feuille de données à importer
    WksNewSheet.Activate                        'active cette feuille
    WksNewSheet.Select
    Range(Cells(1, 1), Cells(24, 24)).Select    'selection des données que l’on veut importer
    Selection.Copy                              'copie les données sélectionnées
    WbDest.Activate                             'retourne vers le fichier de départ
    I = ActiveSheet.UsedRange.Rows.Count        'compte le nombre de lignes déjà utilisées dans ce fichier
    Cells(I + 1, 1).Select                      'sélection de la cellule où on veut coller les données (la première vide)
    ActiveSheet.Paste                           'colle les données
    WbSource.Close                              'ferme le fichier source
    NomFichier = Dir                            'va vers le fichier suivant à importer
  Loop                                          'recommece la boucle avec le fichier suivant
  WbDest.Activate

End Sub

Merci par avance.

Cdlt
 

Pièces jointes

  • Réalisé.xlsx
    20.4 KB · Affichages: 42
  • Import donnée 1.xls
    28.5 KB · Affichages: 30
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…