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 :

Coller dans 1 seul fichier des données issues de plusieurs fichiers


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Consultant MOA
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant MOA

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Coller dans 1 seul fichier des données issues de plusieurs fichiers
    Bonjour,


    Après avoir essayé (en vain) de faire la macro, je me tourne vers vous.

    Je souhaiterais mettre en place une macro qui devra sélectionner des données dans plusieurs fichiers qui auront le même format et avec un nom de fichier similaire sauf à la fin : « Time sheet_2014_xxx» pour les concaténer et les coller dans un seul fichier nommé "KPI_2014".

    Les données des colonnes B jusqu'à AF dans l'onglet « TOT » des fichier time sheet devront être copiées et coller dans l'onglet « Data » du fichier « KPI_2014 » à partir de la ligne 5. Pour retrouver une même tâche dans un fichier, utiliser l'identifiant unique : CA + CO

    Merci par avance pour votre aide précieuse
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2014
    Messages : 271
    Points : 335
    Points
    335
    Par défaut
    Bonjour

    Regarde ça et adapte.

    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
    Sub Importation()
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
     
     
     
    Dim titre As String
    Dim wbk1 As Workbook
    Dim wbk2 As Workbook
    titre = "L'adresse de ton document"
     
     
    Set wbk1 = ThisWorkbook
    Set wbk2 = Workbooks.Open(titre, local:=True)   ' jouvre le classeur (titre)
     
    wbk2.Sheets(1).Range("A:Y").Copy Destination:=wbk1.Sheets("Feuil1").Range("A1")
    wbk2.Close
     
    End Sub

  3. #3
    Membre à l'essai
    Homme Profil pro
    Analyste financier
    Inscrit en
    Août 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste financier
    Secteur : Finance

    Informations forums :
    Inscription : Août 2014
    Messages : 19
    Points : 21
    Points
    21
    Par défaut
    Bonjour Lalou83,

    Dans l'idée, voici l'approche que j'aurais eu dans ton cas:

    - tu crée n variables workbook correspondant aux n fichiers Excel contenant tes time-sheets (l'idée de ton Array "Trigrammes" est très bonne)
    - tu boucles sur tes n workbooks. Pour chaque workbook, tu copies toutes les lignes contenant des tasks et tu les colles à partir de la ligne bien choisie dans ton fichier de synthèse KPI 2014 (attention à bien garder en mémoire dans une variable l'indice de la dernière ligne où tu as collé des tasks, afin de savoir où coller celles de la time-sheet suivante...)

    J'ai testé ce code chez moi, il fonctionne:
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Sub concatenationTimeSheets()
        Application.DisplayAlerts = False
        Application.ScreenUpdating = False
     
        Dim i As Integer, j As Integer, nbTasks As Integer, debutTasks As Integer, indiceTaskACopier As Integer, indiceTasksDejaCopiees As Integer
        Dim continue As Boolean
        Dim TimeSheet(11) As Workbook, wbKPI As Workbook
        Dim Trigrammes As Variant
        Dim wdEnCours As String
     
        Set wbKPI = ThisWorkbook
     
        Trigrammes = Array("TDC", "PMY", "BBI", "SSI", "LPR", "FCN", "ABN", "PDZ", "SSY", "CJY", "ALT")
     
        debutTasks = 3 'indique la ligne de début des tasks à copier
        indiceTasksDejaCopiees = 0
     
        For i = LBound(Trigrammes) To UBound(Trigrammes)
            'A ajuster avec le nom complet exact de tes fichiers
            wbEnCours = ".\Time_sheet_2014_" & Trigrammes(i) & ".xlsx"
     
            'Tu ouvres la timesheet que tu vas copier
            Set TimeSheet(i) = Application.Workbooks.Open(wbEnCours, False)
     
            'Tu copies toutes les tasks de la sheet TOT
            indiceTaskACopier = debutTasks
            continue = True
     
            With TimeSheet(i).Sheets("TOT")
                While (continue = True)
                    If Left(.Cells(indiceTaskACopier, 2).Value, 4) = "Task" Then
                        indiceTaskACopier = indiceTaskACopier + 1
                    Else
                        continue = False
                    End If
                Wend
     
                .Rows(debutTasks & ":" & indiceTaskACopier - 1).Copy
            End With
     
            wbKPI.Sheets("Data").Rows(5 + indiceTasksDejaCopiees).PasteSpecial xlValues
     
            indiceTasksDejaCopiees = indiceTasksDejaCopiees + indiceTaskACopier - debutTasks
        Next
     
        Application.CutCopyMode = False
        Application.DisplayAlerts = False
        Application.ScreenUpdating = False
    End Sub

    Dis moi si c'est bien ce que tu cherchais

    Ah oui, effectivement j'ai oublié: il "faut" bien refermer chaque workbook TimeSheet

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Consultant MOA
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant MOA

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour

    Merci bcp pour ta réponse mais étant vraiment novice en VBA, je ne sais pas ce qu'il faut adapter...

    Merci beaucoup pour ta réponse. J'ai copié collé ton code sans faire de modif dans la feuille "KPI_2014". Les workbooks étaient bien fermées. J'ai executé le code mais ça ne fonctionne pas. Qu'est ce que j'ai oublié de faire ?

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Consultant MOA
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant MOA

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour à tous

    Ma question a été résolue sur un autre forum

    merci

    A+

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 28/04/2015, 18h47
  2. [MySQL] Intercallage et affichage avec des données issues de plusieurs tables SQL
    Par vinceom92 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 02/03/2014, 14h37
  3. [XL-2007] Compilation de données issues de plusieurs fichiers xlsx
    Par Vitalic dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/11/2012, 22h35
  4. Réponses: 8
    Dernier message: 23/09/2008, 11h20
  5. Réponses: 3
    Dernier message: 15/05/2007, 09h28

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