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

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2019
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2019
    Messages : 39
    Points : 34
    Points
    34

    Par défaut Importer des données de plusieurs classeurs vers un classeur de synthèse

    Bonjour à tous,

    Je viens vers vous pour solliciter votre aide. Etant novice en vba, voici le problème auquel je suis confronté :

    Sur mon bureau, je dispose d'un dossier A avec plusieurs classeurs Excel ( appelons les alpha, beta, gamma etc..). Chacun de ces classeurs contient une seule feuille de données.
    Je voudrais à partir d'un classeur B actif, importer sur chaque onglet de celui ci les données de chaque classeur se trouvant dans le dossier A.
    Dis autrement, la feuille 1 du classeur B contiendra les données de la feuille 1 du classeur alpha.
    La feuille 2 du classeur B contiendra les données de la feuille 1 du classeur beta et ainsi de suite.

    J'ai essayé de chercher un petit bout de code pour copier les données d'un classeur fermé vers un classeur ouvert. Ca marche !

    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
     
    Sub importProdVte()
    Dim wkA As Workbook, wkB As Workbook
    Dim chemin As String, fichier As String
    Dim j As Long
    Application.ScreenUpdating = False
    Set wkA = ThisWorkbook
    chemin = "D:\Users\ighilahrizrya\Desktop\"
    fichier = "SRM2018112722H30.xlsx"
    Workbooks.Open chemin & fichier
    Set wkB = ActiveWorkbook
     
    j = wkB.Sheets("SRM 2018 11 27 22H30").Range("A" & Rows.Count).End(xlUp).Row
    wkA.Sheets("Feuil1").Range("A1:ZZ" & j).Value = wkB.Sheets("SRM 2018 11 27 22H30").Range("A1:ZZ" & j).Value
     
     
    wkB.Close True
     
     Application.ScreenUpdating = True
     
    End Sub
    Mais des qu'il s'agit de faire une boucle pour parcourir les fichiers du dossier A (une centaine à peu près), je ne m'en sors pas..
    Pour vous donner un exemple des données que je dois importer, je mets en pièce jointe 3 classeurs ( alpha, beta, gamma) du dossier A .


    Si quelqu'un peut m'aider, je lui en serais très reconnaissant
    Bien à vous,
    Fichiers attachés Fichiers attachés

  2. #2
    Membre actif
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    janvier 2019
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : janvier 2019
    Messages : 151
    Points : 220
    Points
    220

    Par défaut

    Bonjour,

    un lien qui explique tout sur "Les répertoires et les fichiers" et notamment "Comment boucler sur les fichiers d'un répertoire ?"
    https://excel.developpez.com/faq/?page=FichiersDir

    A+

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    janvier 2019
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : janvier 2019
    Messages : 39
    Points : 34
    Points
    34

    Par défaut

    Bonjour,

    A vrai dire j'ai passer plusieurs heures à chercher sur le forum et finalement trouvé un code qui fait exactement ce que je cherche.
    Seule contrainte: cela fonctionne avec des fichiers .xlsx alors que dans mon cas je travaille avec des .csv

    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
    50
     
    Sub test()
     
    'On crée une variable 'wbFusion' de type Classeur Excel
    Dim wbFusion As Workbook
     
    'On l'associe au classeur à partir duquel tu lances la macro
    Set wbFusion = ThisWorkbook
     
    'On crée une variable wbCible qui va correspondre tour à tour aux classeur à importer
    Dim wbCible As Workbook
    Dim shCible As Worksheet
     
    'Afin de lui affecter des fichiers, l'utilisateur va les sélectionner via une boîte de dialogue
    'NOTA : le With XXXXXXXXX évite de répéter plein de fois XXXXXXXXX lorsque l'on parle de la même chose ;)
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Choisissez le(s) classeur(s) à importer"
        .Filters.Add "Classeur Excel", "*.xls,*.xls?" 'on filtre par tous les fichiers .xls et xls? avec '?' signifiant "1 caractère"
        .ButtonName = "Importer ce(s) classeur(s)"
        .AllowMultiSelect = True 'on autorise la sélection multiple
        .Show 'on affiche la fenêtre, on attend le retour de l'utilisateur pour continuer
     
        'on a réglé la boîte de dialogue, maintenant il faut traiter les données de l'utilisateur :
        'si l'utilisateur n'a pas sélectionné de fichier, on met un message d'erreur
        If .SelectedItems.Count = 0 Then
            MsgBox "Veuillez sélectionner au moins un fichier", vbExclamation, "Erreur"
        'Sinon, on traite :
        Else
            For i = 1 To .SelectedItems.Count
                'On ouvre chaque classeur un par un
                Set wbCible = Workbooks.Open(.SelectedItems(i))
                CouleurOnglet = RGB(Rnd * 255, Rnd * 255, Rnd * 255) 'on va mettre toutes les pages de ce classeur importées avec l'onglet de la même couleur
                CompteurClasseur = CompteurClasseur + 1 'on incrémente un compteur, facultatif
                'Pour chaque feuille du wbCible :
                For Each shCible In wbCible.Sheets
                    shCible.Tab.Color = CouleurOnglet
                    shCible.Name = Int(Rnd * 99999) 'nom aléatoire pour être certain qu'il n'y ait pas de doublon plantant la macro
                    shCible.Copy after:=wbFusion.Sheets(wbFusion.Sheets.Count) 'on la copie à la fin de wbFusion
                    CompteurFeuille = CompteurFeuille + 1 'on incrémente un compteur, facultatif
                Next shCible
                'On ferme le classeur sans enregistrer (on a changé le nom des pages avant copie)
                wbCible.Close SaveChanges:=False
            'On passe au classeur suivant
            Next i
            'Facultatif, à l'aide des compteurs, on indique à l'utilisateur que tout s'est bien passé
            MsgBox CompteurFeuille & " feuilles ont bien été importées, provenant de " & CompteurClasseur & " classeurs Excel.", vbInformation, "Import réussi"
        End If
    End With
     
    End Sub

    Ayant des connaissances très très très limitées en VBA, disons que j'essaie d'apprendre par moi-même en lisant sur des forums. Par contre, cette fois, ce que je veux faire ne fonctionne pas du tout! J'essaie d'adapter le code ci dessus mais rien à faire.. Je suis proche de m'arracher les cheveux..

    Merci à l'avance de votre précieuse aide!!!!

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

Discussions similaires

  1. Importer des données de plusieurs classeurs vers un classeur de synthèse
    Par ryan.ighilahriz dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/02/2019, 10h17
  2. Importer des données de plusieurs classeurs dans plusieurs dossiers
    Par jft60 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/10/2018, 14h56
  3. [XL-2016] Importer des données de plusieurs classeurs dans un autre classeur
    Par seiphodias dans le forum Excel
    Réponses: 7
    Dernier message: 09/07/2018, 19h22
  4. [XL-2010] Importer des données de plusieurs classeur dans un classeur, sous condition
    Par Bibi33130 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/03/2016, 08h40
  5. Réponses: 3
    Dernier message: 24/05/2008, 18h56

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