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 :

macro qui regroupe dans un fichier excel plusieurs fichiers


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2018
    Messages : 2
    Par défaut macro qui regroupe dans un fichier excel plusieurs fichiers
    Bonjour,

    je voudrais trouver une macro qui regroupe dans un fichier excel plusieurs fichiers avec un ou plusieurs onglets mais en ne consolidant aucune données. la macro doit se contenter de rappatrier les onglets les uns à la suite des autres sans les regrouper sur la meme feuille.

    En gros :
    j’ai un fichier test1 qui contient 3 onglets A B C contenu dans un dossier
    j’ai un fichier test2 qui contient 4 onglets M N O P contenu dans le meme dossier

    je voudrais un fichier unique avec les onglets A B C M N O P et non un fichier avec un onglet consolidé.

    Merci d’avance.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Il suffit d'appliquer Copy sur la collection Worksheets (ne pas oublier le "s" final).
    Ca copiera l'ensemble des onglets du classeur.

    A lire : https://docs.microsoft.com/fr-FR/off...orksheets.copy

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous, Bonjour au Forum,

    A noter: un tableau de noms de feuilles est accepté comme paramètre de la collection Worksheets, à laquelle sera affectée la méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets(Array("lawks1", "lawks2"))

  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
    Bonjour à tous
    Etant autodidacte et débutant VBA ma réponse nécessite sans aucun doute des améliorations
    Je ne sais pas comment ouvrir les onglets en utilisant un ARRAY comme recommande MarcelG c'est pourquoi je procède classeur par classeur
    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
    Sub importDonnées()
    Dim wkA As Workbook, wkB As Workbook
    Dim chemin As String, fichier As String
    Dim j As Long
    Dim k As Long
    Application.ScreenUpdating = False
    Set wkA = ThisWorkbook 'le dossier qui va recevoir les données
    chemin = "C:\Users\DELL\Desktop\Divers ABD\" 'adresse commun pour les deux dossiers sources
    '******************************* Copier données Classeur A
    fichier = "A" 'Nom du classeur 1
    Workbooks.Open chemin & fichier & ".xlsx"
    Set wkB = ActiveWorkbook
    j = 2
        For i = 1 To Worksheets.Count
            k = Worksheets(i).Range("A" & Rows.Count).End(xlUp).Row
            wkB.Worksheets(i).Range("A2:B" & k).Copy wkA.Sheets("Feuil1").Cells(j, 1)
            j = wkA.Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
        Next i
    wkB.Close True
     
    '******************************* Copier données Classeur B
    fichier = "B"
    Workbooks.Open chemin & fichier & ".xlsx"
    Set wkB = ActiveWorkbook
        For i = 1 To Worksheets.Count
            k = Worksheets(i).Range("A" & Rows.Count).End(xlUp).Row
            wkB.Worksheets(i).Range("A2:B" & k).Copy wkA.Sheets("Feuil1").Cells(j, 1)
            j = wkA.Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
        Next i
    wkB.Close True
     Application.ScreenUpdating = True
    End Sub
    J'espère que ça donne au moins un début de réponse
    BONNE CONTINUATION

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Etant donné que ce sont les onglets qui sont à copier, la solution est bien plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks("test2").Worksheets.Copy
    Workbooks("test1").Worksheets.Copy Before:=ActiveWorkbook.Sheets(1)

  6. #6
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2018
    Messages : 2
    Par défaut macro qui regroupe dans un fichier excel plusieurs fichiers
    Citation Envoyé par Menhir Voir le message
    Etant donné que ce sont les onglets qui sont à copier, la solution est bien plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks("test2").Worksheets.Copy
    Workbooks("test1").Worksheets.Copy Before:=ActiveWorkbook.Sheets(1)
    Bonjour a tous, je voulais vous remercier pour vos réponses. Cela m'aide beaucoup.

    Etant assez novice dans le domaine des marco/VBA, je ne suis pas certain de tous comprendre.

    J'ai beaucoup de fichier (+50 avec plusieurs onglets) donc j'ai l'impression que les marcos que je retrouve m'oblige a citer le nom de chaque fichier afin de pour lancer la macro. je voudrais donc si je ne me trompe pas avoir une marco qui recupere les fichiers d'un dossier sans les nommer/

    En tous cas merci à tous pour vos réponses.

Discussions similaires

  1. [SP-Online] Créer un formulaire qui écrit dans un fichier Excel
    Par 2015-1158 dans le forum SharePoint
    Réponses: 0
    Dernier message: 01/11/2018, 15h29
  2. [Toutes versions] Excel figé suite macro qui envoie mail avec fichier PDF joint issu d'une plage filtrée
    Par Hocked dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/02/2016, 14h42
  3. Réponses: 9
    Dernier message: 21/06/2013, 17h02
  4. Réponses: 1
    Dernier message: 18/09/2009, 20h37
  5. [vb6]:Recuperer les caracteres qui sont dans un fichier text
    Par flav66 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 23/10/2006, 09h44

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