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 VBA fusion Classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    unversité de reims champagne ardenne
    Inscrit en
    Mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : unversité de reims champagne ardenne

    Informations forums :
    Inscription : Mars 2017
    Messages : 8
    Par défaut macro VBA fusion Classeur
    Bonjour à tous,

    Je suis nouveau sur le forum et débutant sur VBA, et j'aurai souhaité avoir de l'aide sur le sujet.
    En effet, j'ai testé une macro me permettant de fusionner plusieurs classeur dans un seul, mais malheureusement elle ne fonctionne pas trop. En gros, j'ai 3 fichiers excel via une macro j'aurai souhaité copier toutes les lignes des des 3 fichiers et les copiers les une en dessous des autres dans un seul fichier.

    ci-dessous le code que j'ai essayé sur MAC PRO avec EXCEL 2016, mais en vain :
    Pourriez vous svp me débloqué ou si non me filer un autre tuyau
    Je vous remercie par avance

    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
    Sub Classeur2()
    Range("A1").Select
    Path_var = Directory_var & "/Users/delasoulsk/Documents/ALLIANZ/consolidation test/" --->>> 'est le chemin d'accès vers le dossier dans quel sont stockés les 3 fichiers excels. 
    File_var = Dir(Path_var & "*.xls")
    Do While Fichier <> ""
    Workbooks.Open Filename:=Path_var & File_var
    Range("Feuil1").Copy
    ThisWorkbook.Activate
    ActiveSheet.Paste
    Windows(Fichier).Activate
    Application.CutCopyMode = False
    ActiveWorkbook.Close savechanges:=False
    ThisWorkbook.Activate
    Range("A65536").End(xlUp).Offset(1, 0).Select
    Fichier = Dir
    Loop
    End Sub

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, commence par baliser ton code

    voir fusion fichiers xls*, txt d'un dossier qu'il te faudra adapter à ton contexte, ne t'attends pas à trouver du tout cuit.

  3. #3
    Membre du Club
    Homme Profil pro
    unversité de reims champagne ardenne
    Inscrit en
    Mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : unversité de reims champagne ardenne

    Informations forums :
    Inscription : Mars 2017
    Messages : 8
    Par défaut
    Merci pour le tuyau mais je n'arrive pas à ouvrir ce document "fusion fichiers xls*, txt d'un dossier "

  4. #4
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    PS : si tu es sur Mac, il est bien de le préciser au moment de créer la discussion, je pense qu'en modifiant ton post 1 tu peux encore le faire
    en précisant via la liste sur quel excel tu es, je suppose que ici c'est 2011 (à moins que ça soit 2016) - pour baliser le code regarde ma signature il y a un exemple

    en effet l'une des solutions est de passer par Dir en mettant les fichiers concernés dan un dossier précis

    le chemin sur Mac sous Excel à une séparation qui est ":" et non "/"

    ouvre l'un des fichiers à fusionner puis;
    tu peux facilement avoir ce chemin (lorsque tu es dans l'onglet développeur) en activant la fenêtre d'exécution puis tu écris dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print ThisWorkbook.Path
    puis valide avec la touche Enter/Retour

    En écrivant ce code et en validant avec la touche Enter, tu peux récupérer le chemin sur un Mac
    Ca ressemblera à qq ch comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Macintosh HD:Users:NomUtilisateur:Desktop:DeveloppezCom:UTF8"
    il faudra rajouter ": à la fin comme cela mais avec ton chemin à toi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Macintosh HD:Users:NomUtilisateur:Desktop:DeveloppezCom:UTF8:"
    Donc pour l'utilisation d'un Dir Simple (non récursif ça sera pour bcp plus tard), teste d'abord cet exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Fusion()
    Dim Chm As String, currentPath As String
    Chm = "Mettre_Le_Chemin_Recupéré_par_ tes_ soins"
     
    chemin = Dir(Chm)
    Do Until chemin = vbNullString
        Debug.Print chemin
        chemin = Dir()
    Loop
    End Sub
    Voit le résultat dans la fenêtre d'exécution

    PS : salut kiki29 : il a envoyé :
    ci-dessous le code que j'ai essayé sur macbook pro, mais en vain
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  5. #5
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Pour la suite comme tu es étudiant il te faut faire un minimum de travail personnel
    Donc je vais te donner des indices; dans la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Do Until chemin = vbNullString
        Debug.Print chemin
        chemin = Dir()
    Loop
    il faudra :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Do Until chemin = vbNullString
        'obtenir la dernière ligne du classeur de destination
        'Ouvrir le classeur à copier
        'copier la plage source vers la plage de destination à partir de la dernière ligne obtenu
        'Fermer le classeur source sans l'enregistrer
        chemin = Dir()
    Loop
    Voilà à toi de jouer
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  6. #6
    Membre du Club
    Homme Profil pro
    unversité de reims champagne ardenne
    Inscrit en
    Mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : unversité de reims champagne ardenne

    Informations forums :
    Inscription : Mars 2017
    Messages : 8
    Par défaut
    merci pour tes éléments de réponses, en effet, je suis étudiant en stage dans un cabinet de RH et je voulais gagner du temps en trouvant une macro me permettant de faire cette consolidation rapide de données. Je suis vraiment novice dans le sujet et j'y vais par tâtonnement...

  7. #7
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    ces réponses tu peux les trouver facilement soit en utilisant la Faq Excel soit en faisant des recherches internet du styles :
    - "vba ouvrir fichier"
    - "vba fermer fichier"
    - "vba dernière ligne"
    - … …
    par exemple
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  8. #8
    Membre du Club
    Homme Profil pro
    unversité de reims champagne ardenne
    Inscrit en
    Mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : unversité de reims champagne ardenne

    Informations forums :
    Inscription : Mars 2017
    Messages : 8
    Par défaut
    ok très bien je regarde, en tout cas merci pour l'aide je vais encore fouiller, pour info je suis sur mac avec excel 2016. Peut être qu'en codant sur un pc ça serait beaucoup plus simple, parce que là je galère vraiment et je ne suis pas habitué au mac !

  9. #9
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    mis à part le chemin là se sera le même code que sur PC ou que sur Mac
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  10. #10
    Membre du Club
    Homme Profil pro
    unversité de reims champagne ardenne
    Inscrit en
    Mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : unversité de reims champagne ardenne

    Informations forums :
    Inscription : Mars 2017
    Messages : 8
    Par défaut
    ok super, déjà merci beaucoup mais pour la première partie cela semble fonctionner en revanche je te confirme que le chemin est en "/ "et non ":"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Chm = "/Users/delasoulsk/Documents/ALL/consolidation test".
    J'essaie à présent de batailler sur le second front pour :
    • obtenir la dernière ligne du classeur de destination
    • Ouvrir le classeur à copier
    • copier la plage source vers la plage de destination à partir de la dernière ligne obtenu
    • Fermer le classeur source sans l'enregistrer



    Je ne désespère pas et j'y arriverai par tâtonnement ;-)
    encore un grand merci je reviendrai probablement vers vous

    bien à vous,

  11. #11
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    tu es bien sur mac? a moins que la version 2016 ai changé qq ch sur Mac ?
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  12. #12
    Membre du Club
    Homme Profil pro
    unversité de reims champagne ardenne
    Inscrit en
    Mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : unversité de reims champagne ardenne

    Informations forums :
    Inscription : Mars 2017
    Messages : 8
    Par défaut
    oui tout à fait, je suis sur office 365 pour MAC 2016

  13. #13
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    je n'ai pas cette version je suis sous Excel 2011 mais même si le chemin change dans l'écriture le code restera le même en Mac/PC
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  14. #14
    Membre du Club
    Homme Profil pro
    unversité de reims champagne ardenne
    Inscrit en
    Mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : unversité de reims champagne ardenne

    Informations forums :
    Inscription : Mars 2017
    Messages : 8
    Par défaut
    j'ai finalisé la macro mais elle ne semble pas s'activer, pourtant aucun bug n'est signalé, pourriez vous m'aider svp ?

    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
    Sub Fusion()
    Dim Chm As String, currentPath As String
    Chm = "/Users/delasoulsk/Documents/ALL/consolidation test"
     
    chemin = Dir(Chm)
    Do Until chemin = vbNullString
        Debug.Print chemin
     
    Fichier = Dir(Chm & "*.xls")
    Do While Fichier <> ""
    Workbooks.Open Filename:=Chm & Fichier
    Range("Feuil1").Copy
    ThisWorkbook.Activate
    ActiveSheet.Paste
    Windows(Fichier).Activate
    Application.CutCopyMode = False
    ActiveWorkbook.Close savechanges:=False
    ThisWorkbook.Activate
    Range("A65536").End(xlUp).Offset(1, 0).Select
     
        chemin = Dir()
    Loop
    Loop
    End Sub

  15. #15
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    dans Excel tu sais faire A1:C10
    en vba tu détermines ta plage avec l'objet Range
    pour indiquer la feuille on utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WorkSheets("nomDeLaFeuille").Range("A1:C10")
    pour indiquer le classeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("NomDuClasseur").WorkSheets("nomDeLaFeuille").Range("A1:C10")
    c'est ce que l'on appelle le pointage, celui ci doit être plus ou moins précis selon ce que l'on fait
    donc si tu veux copier d'un classeur à un autre par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("NomDuClasseurSource").WorkSheets("nomDeLaFeuille").Range("A1:C10").Copy Destination:=Workbooks("NomDuClasseurDestination").WorkSheets("nomDeLaFeuille").Range("A11")
    Avec la dernière ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DerL = Workbooks("NomDuClasseurDestination").WorkSheets("nomDeLaFeuille").Cells(Rows.count, 1).End(XlUp).row + 1
    Workbooks("NomDuClasseurSource").WorkSheets("nomDeLaFeuille").Range("A1:C10").Copy Destination:=Workbooks("NomDuClasseurDestination").WorkSheets("nomDeLaFeuille").Range("A" & DerL)
    à toi de bien déterminer la plage à copier du classeur source afin de copier les données après la dernière ligne dans le classeur destination

    Par contre repart du code que je t'ai donné dans ce post

    fait le code en pas à pas en ayant affiché avant la fenêtre des variables locales te donnant les informations nécessaires au déroulement du code


    sinon :

    ouvrir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open chemin ' PS tu peux remplacer chemin par fichier pour que ca soit plus clair - à faire dans tous le code
    =>
    fermer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(fichier).Close False
    Regarde ces liens :
    https://www.developpez.net/forums/d5...e-range-cells/
    https://msdn.microsoft.com/fr-fr/lib.../ff838238.aspx
    http://silkyroad.developpez.com/VBA/FeuilleDeCalcul/
    https://vb.developpez.com/faqvba/?page=3.2
    De Simples recherches …!
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  16. #16
    Membre du Club
    Homme Profil pro
    unversité de reims champagne ardenne
    Inscrit en
    Mars 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : unversité de reims champagne ardenne

    Informations forums :
    Inscription : Mars 2017
    Messages : 8
    Par défaut
    ok merci beaucoup, je vais l'essayer, mais l'idée pour moi c'et pad de pointer dans un classeur particulier mais tous les classeurs d'un dossier X (dans le quel sera stockées les classeurs source et ayant les à peu près l même ordre de données) et le classeur de destination se trouve or du dossier X. Mais je pense avoir compris la logique je vais l'adapter et voir ce que cela donne

  17. #17
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Hi,
    Merci de ne pas répéter le post précédent cela nuit à la lisibilité du post !
    N'écris pas tes messages avec la balise [QUOTE] ça nuit aussi à la lisibilité du post !

    Je t'ai donné tout le nécessaire pour faire ce que tu désires et de manière simple, mais apparement tu ne l'as pas très bien compris,
    je te conseil de relire les posts et de potasser un peu afin de comprendre
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

Discussions similaires

  1. aide macro traitant deux classeurs vba
    Par ellewided dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/07/2009, 11h44
  2. [XL-2003] VBA lien classeur-Macro
    Par liazidf dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/05/2009, 14h24
  3. Copier une macro VBA d'un classeur à un autre
    Par Laugeek dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/08/2008, 08h36
  4. Réponses: 8
    Dernier message: 16/07/2008, 10h08
  5. [VBA] Ouverture classeur sans activer les macros
    Par xc78370 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/10/2007, 11h45

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