IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA EXL - Synthèse de plusieurs fichiers avec commentaire dans un seul [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2019
    Messages : 7
    Par défaut VBA EXL - Synthèse de plusieurs fichiers avec commentaire dans un seul
    Bonjour,

    Je galère un peu sur ma macro Excel alors je fais un appel à l'aide!

    J'ai une équipe de 1 à 10 agents qui travaillent pour chacun des pays respectifs (c'est du détail mais c'est plus simple à comprendre). Tous les trimestres je sors un fichier d'un outil qui liste de données par pays. Je leur ai demandé de travailler chacun sur une version de ce fichier en mettant des commentaires, statuts... en face des lignes correspondant à leurs lignes pays.

    Donc ce que je voudrais en résultat avoir un fichier de consolidation de l'ensemble de leurs commentaires => donc si j'ai sorti 1000 lignes de données (par ex), je dois garder ces 1000 lignes mais avec le commentaire de chacun en bout de ligne.
    Ex :
    Lign1 Pays1 Donnée1
    Lign2 Pays2 Donnée2
    Lign3 Pays1 Donnée3

    Agent1 fait :
    Lign1 Pays1 Donnée1 OK
    Lign2 Pays2 Donnée2
    Lign3 Pays1 Donnée3 KO Com2

    Agent2 fait :
    Lign1 Pays1 Donnée1
    Lign2 Pays2 Donnée2 OK Com3
    Lign3 Pays1 Donnée3

    En résultat je souhaite :
    Lign1 Pays1 Donnée1 OK
    Lign2 Pays2 Donnée2 OK Com3
    Lign3 Pays1 Donnée3 KO Com2


    Ce que j'entrevois comme solution :
    1. Regrouper tous les fichiers dans un seul (un onglet par agent) => ok c'est bon j'ai fait
    2. Sur un onglet avec mes 1000 lignes, faire tourner une macro pour récupérer : concaténer les mêmes cellules (J1 de la feuille UT1, J1 de la feuille UT2,...). Cela me permet de voir les incohérences s'il y a.

    Contrainte : je n'ai pas toujours le même nombre d'agents à chaque période, aussi j'aimerai utiliser un onglet avec la liste du nom des feuilles récupérées (je mettrais en paramétrage).

    Quelqu'un à une idée pour faire ça??
    Jusqu'ici je ne vois que concaténer avec le nom de la feuille en dur ou avec un indirect mais ca ne résout pas mon problème du nombre de feuille/agents variable...

    J'espère que qqn pourra m'aider ...


    Merciiii par avance!!

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour à toutes et à tous
    la structure des données d'entrée n'est pas claire au moins pour moi ... pour regrouper dans une feuille récap voila une piste à adapter à tes besoins

    Bonne continuation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Option Explicit
    Sub collecterDonnées()
    Application.ScreenUpdating = False
    Dim derligne As Long
    Dim k As Long
    Dim j As Long
    Dim i As Long
    Dim P As Long
    Dim H As Long
    j = 2
    With Sheets("RECAPITULATIF")
    derligne = .Range("A" & Rows.Count).End(xlUp).Row
    .Range("A2:D" & derligne).ClearContents
     
     For i = 1 To Worksheets.Count
            If Worksheets(i).Name <> "RECAPITULATIF" Then
            k = Worksheets(i).Range("A" & Rows.Count).End(xlUp).Row
            Worksheets(i).Range("A2:C" & k).Copy .Range("A" & j)
            P = (j + k - 2)
             For H = j To P
            .Range("D" & H) = Worksheets(i).Name
            Next H
            j = .Range("A" & Rows.Count).End(xlUp).Row + 1
            End If
        Next i
    End With
    MsgBox "regroupement effectué"
    Application.ScreenUpdating = True
    End Sub
    Fichiers attachés Fichiers attachés

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2019
    Messages : 7
    Par défaut
    Merci. Mais ce n'est pas ce que je souhaite (ou alors je ne vois pas comment je pourrais le réadapter)

    Si je prends un exemple:

    Onglet "Agent1" : a rempli la ligne 1 et 3
    Lig1 Suisse StatutOK Commentaire1
    Lig2 Allemagne
    Lig3 France StatutKO Commentaire3
    Lig4 Pays Bas

    Onglet "Agent2" : a rempli la ligne 2
    Lig1 Suisse
    Lig2 Allemagne StatutOK Commentaire2
    Lig3 France
    Lig4 Pays Bas

    Ton code me donne plusieurs fois le bloc à la suite :
    Lig1 Suisse StatutOK Commentaire1 Agent1
    Lig2 Allemagne Agent1
    Lig3 France StatutKO Commentaire3 Agent1
    Lig4 Pays Bas Agent1
    Lig5 Suisse Agent2
    Lig6 Allemagne StatutOK Commentaire2 Agent2
    Lig7 France Agent2
    Lig8 Pays Bas Agent2

    Moi ce que je voudrais c'est :
    Lig1 Suisse StatutOK Commentaire1 Agent1
    Lig2 Allemagne StatutOK Commentaire2 Agent2
    Lig3 France StatutKO Commentaire3 Agent1
    Lig4 Pays Bas

    Sans ligne supplémentaire, tout sur le même bloc.

    Est ce que c'est possible?

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    peux tu joindre un petit fichier sans macro avec un exemple de quelques lignes pour gagner du temps

  5. #5
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    si tu veux regrouper que si le statut en colonne B est différent de vide essayez avec les filtres :
    peut être comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Option Explicit
    Sub collecterDonnées()
    Application.ScreenUpdating = False
    Dim derligne As Long
    Dim k As Long
    Dim j As Long
    Dim i As Long
    Dim H As Long
    Dim L As Long
    j = 2
    With Sheets("RECAPITULATIF")
     .Cells.ClearContents
     
    .Cells(1, 1).Resize(1, 4) = Array("PAYS", "STATUT", "Commentaire", "employé")
     
     For i = 1 To Worksheets.Count
            If Worksheets(i).Name <> "RECAPITULATIF" Then
            k = Worksheets(i).Range("A" & Rows.Count).End(xlUp).Row
            Worksheets(i).Range("A1:C" & k).AutoFilter Field:=2, Criteria1:="<>"
            Worksheets(i).Range("A2:C" & k).SpecialCells(xlCellTypeVisible).Copy .Range("A" & j)
            derligne = .Range("A" & Rows.Count).End(xlUp).Row
            For H = j To derligne
            .Range("D" & H) = Worksheets(i).Name
            j = derligne + 1
            Next H
            Worksheets(i).ShowAllData
            End If
        Next i
    End With
    MsgBox "regroupement effectué"
    Application.ScreenUpdating = True
    End Sub

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2019
    Messages : 7
    Par défaut
    Voici un exemple de données avec le résultat souhaité sur le dernier onglet (avec la formule que j'ai en tête mais il y a peu être mieux comme solution)!

    Merci pour ton aide!!
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [E-03]Compiler plusieurs fichiers xls (fermés) dans un seul
    Par Geprocor dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/01/2018, 16h52
  2. [XL-2013] Copier plusieurs Colones avec liaisons dans une seule colonne
    Par ChrisLa dans le forum Excel
    Réponses: 4
    Dernier message: 22/11/2014, 12h49
  3. Réponses: 6
    Dernier message: 18/05/2006, 09h29
  4. [VBA-W]Génération de plusieurs fichiers Word
    Par ennamsaoui dans le forum VBA Word
    Réponses: 4
    Dernier message: 10/05/2006, 13h21
  5. Zipper plusieurs fichiers avec Abbrevia TP
    Par alex4 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 17/11/2004, 08h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo