Agrégateur de donnée

Résolu
skyzino Messages postés 32 Statut Membre -  
 G_33 -
Bonjour à tous,

Quelque chose qui me paraissait évident me complique en fait la vie.
J'ai cherché pour trouver mon bonheur mais rien ne m'a bien aidé d'où ce post.

J'ai un dossier (qui peut changer de nom) avec des classeurs (dont le nom peut varier aussi) mais où les feuilles ont toutes le même nom et enfin un dernier classeur nommé Agrégateur tendance.

Ce que je souhaiterai, c'est d'agréger la ligne 7 de chaque feuille FGTi de mes classeur à la suite dans un fichier nommé Agrégateur tendance.

Mais également que dans la colonne A du classeur Agrégateur tendance figure le nom présent en A1 de chaque feuille afin d'identifier d'où provient chaque ligne.

Auriez vous une idée pour une procédure sous VBA ?

Fichier à Agrégés :

https://www.cjoint.com/?BIzlJJKoHsL
https://www.cjoint.com/?BIzlKaZWWAN
https://www.cjoint.com/?BIzlKNgGzNR

Fichier Agrégateur : https://www.cjoint.com/?BIzlLrVsKnT

4 réponses

  1. G_33
     
    Bonjour
    Voilà un bout de code à adapter a tes besoins
    J'espère qu'il te convient.
    Cordialement
    Sub ouvrir_fichiers()
     
    monRepertoire = "E:\TABLEAUX DE BORD\Export\GROUPEMENT\" ' A Adapter
    MonFichier = Dir("E:\TABLEAUX DE BORD\Export\GROUPEMENT\") ' A Adapter
    
    While MonFichier <> ""
        Workbooks.Open monRepertoire & MonFichier
                'Macro de copie
                'COPIER lignes
           Sheets("Fgti").Select
            leNom = Range("a1").Value
            
                Range("A7:z7").Copy ' A Adapter
               
                'Retourner au classeur Agrégateur tendance
                Windows("Agrégateur tendance.xls").Activate
                Sheets("feuil1").Activate ' A Adapter
                
                'Positiner curseur premiere cellule vide du classeur
                
                Range("A600").End(xlUp).Offset(1, 0).Select
                Selection = leNom
                'coller les lignes
                Selection.Offset(0, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
                
                
                'Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                'SkipBlanks:=False, Transpose:=False
                Application.CutCopyMode = False
                Workbooks(MonFichier).Close True
                MonFichier = Dir()
    
    Wend
    End Sub
    0
  2. skyzino Messages postés 32 Statut Membre
     
    Bonjour G33,

    Merci pour ton aide.
    Malheureusement ca commence mal variable non définie sur Répertoire alors que j'ai bien précisé le bon endroit
    0
  3. G_33
     
    Ca doit être que tu as déclaré en "option explicit" tes variables....

    Sinon creer un nouveau module est copie la procedure que je t'ai envoyé
    Chez moi ça marche nickel
    0
    1. skyzino Messages postés 32 Statut Membre
       
      Bonjour,

      Ca doit être que tu as déclaré en "option explicit" tes variables....
      Je pensais devoir activer cela, mais en effet, il ne le fallait pas...

      Par contre j'ai grand mal à adapter ce code.

      Juste pour confirmation mon fichier correspond bien au fichier censé agrégé l'ensemble ?

      C'est ce que j'ai fait et il ne se passe rien...
      0
    2. G_33
       
      le code doit être mis dans un module de ton fichier agrégateur
      essai
      0
  4. G_33
     
    J'ai regardé tes fichiers
    Je pense que tes fichier sources sont en ".xls"
    et ton Fichier Agregateur en ".xlsx"

    Regarde de ce coté là

    Sinon enregistre ton fichier en ".xls" et joint le en lien
    et je regarde tout ça.

    Tu peux me montrer comment tu as adapté mon code aussi il sera necessaire pour le corriger

    Cordialement
    0
    1. skyzino Messages postés 32 Statut Membre
       
      Tous mes fichiers sont en xlsm, du coup j'ai modifié cela dans le code et toujours rien

      Voici comment j'ai adapté ton code :

      Sub ouvrir_fichiers()
       
      monRepertoire = "C:\Desktop\Test" ' Adapter
      MonFichier = Dir("C:\Desktop\Test\Agrégateur tendance") ' Adapter
      
      While MonFichier <> ""
          Workbooks.Open monRepertoire & MonFichier
                  'Macro de copie
                  'COPIER lignes
             Sheets("FGTi").Select
              leNom = Range("a1").Value
              
                  Range("B7:z7").Copy ' Adapter
                 
                  'Retourner au classeur Agrégateur tendance
                  Windows("Agrégateur tendance.xlsm").Activate
                  Sheets("feuil1").Activate ' Adapter
                  
                  'Positiner curseur premiere cellule vide du classeur
                  
                  Range("A600").End(xlUp).Offset(1, 0).Select
                  Selection = leNom
                  'coller les lignes
                  Selection.Offset(0, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                  :=False, Transpose:=False
                  
                  
                  'Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                  'SkipBlanks:=False, Transpose:=False
                  Application.CutCopyMode = False
                  Workbooks(MonFichier).Close True
                  MonFichier = Dir()
      
      Wend
      End Sub
      0
    2. skyzino Messages postés 32 Statut Membre
       
      Juste une question, j'ai mis le code dans le fichier agrégateur,

      Mais rien n'est à mettre dans les autres fichiers ?
      0
    3. G_33
       
      Pourquoi tes fichiers sont en xlsm? y a t il une raison particulière ?
      Essaie de faire des copies et les enregistrer en xls tout simplement
      Chez moi ça marche avec les fichier xls
      0
    4. skyzino Messages postés 32 Statut Membre
       
      Oui pour prendre en charge les macros, sinon il me refuse l'enregistrement des macros

      Et tous mes fichiers sont en xlsm
      0
    5. G_33
       
      aussi j'ai noté ce qui me semble une faute

      ton début de code
      monRepertoire = "C:\Desktop\Test" ' Adapter
      MonFichier = Dir("C:\Desktop\Test\Agrégateur tendance") ' Adapter

      "Agrégateur tendance " est un dossier ou un fichier?

      essaie comme ça

      monRepertoire = "C:\Desktop\Test" ' Adapter
      MonFichier = Dir("C:\Desktop\Test\") ' Adapter
      0