Fusion classeurs "fils" / classeur "père" trop compliquée

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

nounbxl76

XLDnaute Occasionnel
Bonjour le forum,

Une nouvelle fois je viens vers vous car mes compétences en Excel et VBA ne sont toujours pas si étoffées. Il y a quelques temps, j'avais réussi à monter une super BDD avec votre aide (encore merci Bebere 🙂 ) mais aujourd'hui ce n'est plus suffisant...ah, les éternels insatisfaits !!!
Aujourd'hui, je cherche à collecter, dans un classeur "père", différentes infos provenant de différents classeurs "fils" mais c'est bien trop compliqué pour moi...En gros, grâce à un bouton de commande situé sur le classeur "père", j'irai chercher des infos dans les classeurs "fils", tous les classeurs étant situés dans le même folder. Le problème est qu'il y a de très nombreuses particularités...je joins un petit fichier explicatif pour donner plus d'explications aux plus téméraires et sûrement chevronnés...à terme je tenterais d'avoir uniquement un classeur "père" et un seul classeur "fils" mais pour le moment c'est un puzzle que je dois reconstituer.

Merci par avance pour votre aide. Bonne journée.

PS : je dispose du classeur "père" et des classeurs "fils"
 

Pièces jointes

Re : Fusion classeurs "fils" / classeur "père" trop compliquée

Bonsoir,

Je relance cette discussion et ce sujet qui me grille petit à petit les neurones 😕 ...voici ce qu'on peut dire des problèmes relatés dans le précédent message:
- j'ai résolu le problème lié à la 2ème MàJ
- je n'arrive toujours pas à résoudre le problème lié au maintien du format des cellules de mon fichier "père". Je souhaite maintenir le format(date, texte...), la police, l'alignement, le renvoi à la ligne, MFC...mais je n'y arrive pas, les données sont transférées des "fils" vers le "père" telles qu'elles sont sur les "fils"...
- je ne parviens pas non plus à résoudre mon problème lié à la colonne H malgré de nombreuses tentatives avec "split"...En gros, il faudrait que je "splitte" la colonne H en créant/insérant d'autres lignes (autant qu'il y a eu de "Alt+Entrée") reprenant toutes les infos des autres colonnes...
Je craque, comment faire SVP selon vous qui êtes sans aucun doute + aguerris?

Merci
 

Pièces jointes

Re : Fusion classeurs "fils" / classeur "père" trop compliquée

Bonsoir (ou re),

Entre mon dernier message et celui-ci, il s'est passé 3h durant lesquelles, j'ai encore perdu quelques neurones...comment venir à bout de ce casse-tête et des 2 derniers "problèmes" qu'il me reste à résoudre? Quelqu'un pourrait-il venir à mon secours SVP?

Merci par avance.
 
Re : Fusion classeurs "fils" / classeur "père" trop compliquée

Bonsoir le forum,

Je ranime ce fil qui lentement se meurt...je n'ai personnellement pas de pistes d'avancement et suis donc avide de celles-ci au cas où quelqu'un aurait une lueur qui me permettrait de finaliser ce projet. Merci.

Bonne soirée.
 
Re : Fusion classeurs "fils" / classeur "père" trop compliquée

Bonjour,

pour tes pb de format, remplace les lignes de copie de cellules comme celle-ci:
VB:
c.Copy d 'Copie c vers d
par celle-là :
VB:
d = c.value ' d prend la valeur de c (et pas son format)
 
Re : Fusion classeurs "fils" / classeur "père" trop compliquée

Bonjour Softmama, Bonjour le forum,

Merci d'avoir donner suite. La manip que vous m'avez indiquée fonctionne très bien pour toutes les colonnes sauf pour la colonne A qui reprend les n° EV et pour la colonne B qui reprend les titres. Je pense que c'est en raison du fait qu'il s'agisse des critères "de départ" mais je n'ai pas trouvé la solution...pourriez-vous me venir en aide pour cette dernière manip SVP?

Bonne journée.

Code:
Sub test()
Dim nFich As String 'Nom du fichier
Dim Chemin As String 'Chemin
Dim wb As Workbook ' Objet classeur à ouvrir
Dim c As Range, d As Range

Chemin = ThisWorkbook.Path

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Range("A5:D65000").Select
Selection.ClearContents
Range("G5:J65000").Select
Selection.ClearContents
Range("L5:M65000").Select
Selection.ClearContents

nFich = Dir(Chemin & "\*.xls") 'Liste des fichiers fils+père
nFich = Dir
Do While nFich <> "" 'Boucle sur chaque fichier
    If nFich <> ThisWorkbook.Name Then 'Ignorer le fichier père
        Set wb = Workbooks.Open(Chemin & "\" & nFich) 'ouverture
        Set c = wb.Sheets(1).Range("A1").Offset(1, 0) 'c est la cellule sous N° EV dans la feuille 1
        Set d = ThisWorkbook.Sheets(1).Range("A65000").End(xlUp).Offset(1, 0) 'c est la cellule sous N° EV dans la feuille 1
Do While c <> "" 'Répéter pour chaque cellule en dessous tant que non vides
        If nFich = "fusion classeurs_nounbxl76_v01_secteur3.xls" And InStr(c.Offset(0, 1), "STE") = 0 Then GoTo 1 ' si y a pas STE pour le fichier Test3 (adapter le nom...), on le copie pas

     'On peut copier la ligne dans ce classeur (ici en feuille 1 dans un tableau qui débute en colonne A)
        c.Resize(, 2).Copy d
        d.Offset(0, 2) = c.Offset(0, 6).Value
        d.Offset(0, 3) = Split(nFich, ".")(0)
        d.Offset(0, 6) = c.Offset(0, 3).Value
        d.Offset(0, 7) = c.Offset(0, 2).Value
        d.Offset(0, 8) = c.Offset(0, 5).Value
        d.Offset(0, 9) = c.Offset(0, 4).Value
        d.Offset(0, 11) = c.Offset(0, 8).Resize(, 2).Value
     
     Set d = d.Offset(1, 0)
1:   Set c = c.Offset(1, 0) 'on passe à la ligne suivante
Loop

    wb.Close False 'fermeture
End If
 nFich = Dir
Loop
With ThisWorkbook.Sheets(1)
  .Cells(6, 1).Sort key1:=.Range("A5"), order1:=xlAscending, Header:=xlYes
End With

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour