Help - Fusion de classeur excel

wikika Messages postés 58 Statut Membre -  
titeufdu89 Messages postés 387 Statut Membre -
Bonjour,

Je souhaiterai fusionner plusieurs feuilles excel (environ 30 feuilles) dans un seul classeur (le tout sur une même feuille,

Toutes les feuilles se nomme Feuil3 (de chaque fichier à fusionner)
Chaque feuille a un nombre de ligne à récupérer différent.
Chaque classeur a un nom différent *.xls mais la feuille dispose du même nombre de colonne (même format)

Les classeurs sont sur mon bureau dans un dossier "Fichiers reçus"

Exemple fichier:

Fichier 1 :https://www.cjoint.com/c/HFni1cuVIKZ
Fichier 2: https://www.cjoint.com/c/HFni3egXDXZ

Le tout devra être fusionné sur un classeur portant le nom "Fichiers fusionnés"

D'avance merci pour votre aide

4 réponses

  1. titeufdu89 Messages postés 387 Statut Membre 38
     
    Bonsoir Wikika,

    Ci-joint ton fichier : https://www.cjoint.com/c/HIrtzZ78PpN

    - feuille "récap" où vont venir s'ajouter les lignes de tes classeurs
    - feuille "lien" ou tu saisies les chemins de tes fichier en colonne A et le nom des fichiers en colonne B (avec extension)

    Lorsque tu lances la macro, si les fichiers sont fermés la macro les ouvres, copie les données de chaque feuille dans la feuille récap, ferme le fichier et passe au suivant.

    NB : il n'y a pas de notion de mise à jour, c'est a dire que la macro n'analyse pas ce qui est déjà présent dans récap pour ajouter ce qui n'y serait pas c'est pourquoi à chaque lancement de la macro j'ai programmer la suppression intégrale de la feuille récap puis ensuite l'ajout des données de tes classeurs.

    Bonne soirée

    Jc
    0
  2. wikika Messages postés 58 Statut Membre
     
    merci JC

    Le seul pb c'est que chaque mois les fichiers vont changer de nom, donc assez fastidieux de réécrire dans l'onglet lien chaque nom de fichier.

    L'idée serait de lancer une boucle qui vient automatiquement récupérer les fichiers sans se soucier de leur nom .

    bien à toi
    0
    1. titeufdu89 Messages postés 387 Statut Membre 38
       
      Excel est un programme très performant mais malheureusement il n'a pas de don divinatoire... il traite les informations que tu lui donnes, si tu ne l'informes pas des fichiers que tu souhaites traiter il ne pourra pas les ouvrir de lui même... :-s

      As-tu un autre fichier qui reprendrait le nom de tes fichiers? Sont-il tous contenus dans un même dossier? (et il faudrait que ce dossiercontienne uniquement les fichiers à traiter) Peut-être existe-t-il un code qui permettrait d'ouvrir tous les classeurs d'un dossier un par un mais pour le coup ça dépasse mon niveau de compétences.

      Sinon comment pensais tu récupérer les noms de tes fichiers initialement?
      0
    2. wikika Messages postés 58 Statut Membre
       
      je comprends effectivement la problématique

      en fait tous les fichiers seront dans le même dossier
      l'idée c'est de lui dire de copier coller l'ensemble des fichier qui ont une extension *.xls sur une seul feuille

      bien à toi
      0
  3. wikika Messages postés 58 Statut Membre
     
    Si d'autres solution en complément de celle de JC je suis preneur
    bien à vous
    0
  4. titeufdu89 Messages postés 387 Statut Membre 38
     
    Essaye ce code en mettant a jour le chemin du dossier

    Option Explicit
    Sub Traitement()
        
        Dim Wbs As Workbook
        Set Wbs = ActiveWorkbook
        
        Dim lien As Worksheet, recap As Worksheet
        Set recap = Wbs.Sheets("recap")
        
        'supprime les information existantes
        If recap.Range("A65536").End(xlUp).Row > 1 Then
        recap.Range("A2:H" & recap.Range("A65536").End(xlUp).Row).Clear
        End If
        
        Dim I As Long, k As Long, j As Long, der As Long, lig As Long
        Dim ws As Worksheet
        lig = 2
        
        Dim Fichier As String, Chemin As String
    
        Dim Wb As Workbook
    
     
        Chemin = "C:\Users\JC\Desktop\Essai\" 'a mettre à jour
        Fichier = Dir(Chemin & "*.xls")
    
        Do While Fichier <> ""
    
        Set Wb = Workbooks.Open(Chemin & Fichier)
     
            'Traitement du fichier
            'copie des informations de chaque feuilles des classeurs
            For k = 1 To ActiveWorkbook.Worksheets.Count
            Set ws = ActiveWorkbook.Worksheets(k)
            der = ws.Range("A65536").End(xlUp).Row
                For j = 2 To der
                ws.Rows(j).Copy Wbs.Sheets("Recap").Rows(lig)
                lig = lig + 1
                Next j
            Next k
            'Fermeture du fichier
            Wb.Close True
    
            Set Wb = Nothing
    
            Fichier = Dir
            
            Loop
             
    End Sub
    
    0