Help - Fusion de classeur excel

Fermé
wikika Messages postés 53 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 23 juillet 2020 - 17 sept. 2018 à 17:15
titeufdu89 Messages postés 374 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 - 18 sept. 2018 à 11:38
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


A voir également:

4 réponses

titeufdu89 Messages postés 374 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 38
17 sept. 2018 à 21:39
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
wikika Messages postés 53 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 23 juillet 2020
18 sept. 2018 à 08:51
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
titeufdu89 Messages postés 374 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 38
18 sept. 2018 à 09:50
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
wikika Messages postés 53 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 23 juillet 2020
18 sept. 2018 à 11:08
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
wikika Messages postés 53 Date d'inscription mardi 16 juillet 2013 Statut Membre Dernière intervention 23 juillet 2020
18 sept. 2018 à 09:17
Si d'autres solution en complément de celle de JC je suis preneur
bien à vous
0
titeufdu89 Messages postés 374 Date d'inscription samedi 28 juillet 2012 Statut Membre Dernière intervention 1 avril 2023 38
18 sept. 2018 à 11: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