Fusionner plusieurs fichiers excel

Résolu
Brabux Messages postés 47 Statut Membre -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je cherche depuis plusieurs jours la bonne méthode pour fusionner mes fichiers et un seul et je me décide aujourd"hui à passer par vous.

FAut avouer que c'ets assez compliqué. IL faudrait que les fichiers nommés AE soient regroupés dans le fichier retour. J'ai fais un exemple mais je l'ai rempli a la main. le dossier AE contient bien quelque 65 fichiers AE.

fichiers AE
http://www.fufox.net/?d=B916155F5E8A
http://www.fufox.net/?d=AFF41141339F

fichier retour
http://www.fufox.net/?d=9839A1A25626

Si vous avez la solution je vous serai redevable :)

merci d'avance,

7 réponses

  1. Brabux Messages postés 47 Statut Membre
     
    j'ai réussi a peu pres a faire ce que je voulais.

    Il reste des erreurs, mais surtout et vraiment compliqué de faire en sorte de rassembler les entreprises du meme corps d'etat tout en comptant leur nombre et en moyennant leur note...

    ici le fichier qui fusionne
    http://www.fufox.net/?d=B84855D2D373

    quelqu'un peut m'aider ?

    merci
    0
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Essaie ce code :
    Option Explicit
    Option Private Module
    '
    
    Public Sub Synthèse_Classeurs_AE()
    Dim wbk As Workbook                'Classeur
    Dim Système As Object              'Système de fichiers
    Dim Dossier As Object              'Répertoire
    Dim Fichiers As Object             'Collection de fichiers du répertoire Dossier
    Dim Fichier As Object              'Fichier (élément de la collection Fichiers)
    Dim Nom_Fichier As String          'Nom du fichier
    Dim Nom_Dossier As String          'Nom du dossier
    
    'Répertoire des fichiers AE
    Nom_Dossier = ThisWorkbook.Path & "/AE"
    
    'Lecture du répertoire
    Set Système = CreateObject("Scripting.FileSystemObject")
    Set Dossier = Système.GetFolder(Nom_Dossier)
    Set Fichiers = Dossier.Files
    '- Contrôle de chaque le fichier du répertoire
    For Each Fichier In Fichiers
      '- Vérifier s'il s'agit d'un fichier Excel...
      If StrComp(Système.GetExtensionName(Fichier.name), "xls", vbTextCompare) = 0 Then
        '... dans l'affirmative, ouvrir le fichier et mettre à jour les liaisons
        Nom_Fichier = Nom_Dossier & "\" & Fichier.name
        Set wbk = Workbooks.Open(Filename:=Nom_Fichier, UpdateLinks:=xlUpdateLinksNever)
        Call Ajouter_Données_AE(wbk)
        wbk.Close SaveChanges:=False
      End If
    Next Fichier
      
    End Sub
    
    Public Sub Ajouter_Données_AE(wbk As Workbook)
    Dim celOrg As Range
    Dim celDst As Range
    
    'Première info de AE
    Set celOrg = wbk.Worksheets(1).Range("A20")
    
    'Dernière cellule utilisée de la première colonne du fichier retour
    Set celDst = ThisWorkbook.Worksheets(1).Cells(ThisWorkbook.Worksheets(1).Rows.Count, 1).End(xlUp)
    
    'Copie des données
    Do While celOrg.Formula <> ""
      Set celDst = celDst.Offset(1)
      'Corps d'état
      celDst.Value = celOrg.Value
      'Entreprise
      celDst.Offset(, 1).Value = celOrg.Offset(, 1).Value
      'Nombre d'opérations
      '- je ne sais pas d'ou vient cette info
      'Note
      celDst.Offset(, 3).Value = celOrg.Offset(, 5).Value
      'suivant
      Set celOrg = celOrg.Offset(1)
    Loop
    
    End Sub
    0
  3. Brabux Messages postés 47 Statut Membre
     
    bonjour Patrice,
    j'ai essayé de la facon suivante :
    j'ouvre VBA, je copie colle ton code sur la page, je retourne sur la feuille excel et j'execute la macro, un bouton de commande serait l'idéal, vu que je suis mauvais voir une buse en VBA.

    elle bloque a la 2eme ligne en disant : "erreur de compilation : option private module, non permise dans un module objet".

    Pour ce qui est du nombre d'opération, c'est qu'il va y avoir forcement des doublons d'entreprises, alors je voulais comptabilier le nombre de fois citée et faire la moyenne de leur note.

    merci encore
    0
  4. Brabux Messages postés 47 Statut Membre
     
    re bonjour,

    J'ai bidouillé un truc :

    supprimé :
    Option Explicit
    Option Private Module
    '
    Ca buggait comme indiqué sur mon message au dessus.

    et puis après, ca s'arretait en disant chemin introuvable : j'ai donc modifié :
    Nom_Dossier = ThisWorkbook.Path & "/AE"
    par :
    Nom_Dossier = ThisWorkbook.Path & ""

    ca rappatrie bien les infos de tous mes fichiers, seulement ca bug aussi sur celui avec le code.

    je cherche encore pour le bouton mais surtout Pour ce qui est du nombre d'opération, c'est qu'il va y avoir forcement des doublons d'entreprises, alors je voulais comptabilier le nombre de fois citée et faire la moyenne de leur note.

    merci d'avance,
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    « j'ouvre VBA, je copie colle ton code sur la page, »

    C'est pour cela que ça marche pas. Il faut coller le code dans un module, pas dans la feuille :
    Ouvre VBA / Insertion / Module / Colle le code dedans

    Créér un répertoire AE dans le même répertoire que retour.xls et y déplacer tous les fichiers AE

    Pour insérer un bouton sur la feuille :
    Onglet développeur / Inserer / dans Contrôle ActiveX, prendre le bouton et le dessiner sur la feuille.
    Double clic sur le bouton (on bascule vers le VBA du bouton) et saisir ce code :
    Private Sub CommandButton1_Click() 
      Call Synthèse_Classeurs_AE 
    End Sub

    Revenir dans Excel et désactiver le mode création.

    Cordialement
    Patrice
    0
  7. Brabux Messages postés 47 Statut Membre
     
    ca marche nickel.

    Merci Patrice.
    0
    1. MomoAbou
       
      Bonjour,

      est ce que pour des fichiers CSV même principe ça peut marcher?
      J'ai repris le même code avec csv à la place de xls mais j'ai toujours un message d'erreur sur
      Set Dossier = Système.GetFolder(Nom_Dossier)

      Merci beaucoup.
      0
      1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783 > MomoAbou
         
        As-tu créé le répertoire AE ???
        0
  8. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    De rien, au plaisir de te relire sur le Forum
    0