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-E] Lancement automatique de plusieurs macros dans plusieurs fichiers Excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut [VBA-E] Lancement automatique de plusieurs macros dans plusieurs fichiers Excel
    Bonjour,

    Apres 2 jours de bookinage, je me permets de vous demander de l'aide concernant une macro que je dois realiser.

    Objectif : cliquer sur un bouton commande qui va declencher l'execution de 4 macros, l'une apres l'autre, dans differents fichiers Excel construits de maniere identique.

    Les 4 macros sont deja programmees et fonctionnent correctement. Elles sont presentes dans chaque fichier Excel concerné (pr info, la premiere va recuperer des infos dans une base de donnees, les autres vont modifier les tableaux du fichier avec les nvelles donnees, mettre a jour les graphs, ...)

    Ces fichiers etant nombreux, l'interet de la macro à realiser est de ne pas à avoir ouvrir chaque fichier et de ne pas a avoir a lancer successivement chaque macro manuellement.

    Bref, cette macro doit pouvoir, par un clik sur un bouton, lancer successivemnt chaque macros dans ts les fichiers Excel concernés (sans devoir ouvrir prealablement chaque fichier).

    Avec le peu de connaissances en VBA que j'ai et les deux bouquins que j'ai parcouru, je suis en train d'essayer d'ecrire un code avec la boucle FOR EACH ... NEXT ... mais je "rame".

    Pouvez-vous m'aider ? Avez-vous des conseils, des pistes ?

    Merci beaucoup !

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Bonjour julien, bienvenue sur le forum.
    Le dimanche n'est pas le meilleur jour pour poser des questions mais bon, je vais essayer de te répondre.
    Ça démarre mal, je ne sais pas s'il est possible de lancer une macro se trouvant dans un fichier fermé
    Par contre pour la méthode consistant à lancer des macros sur plusieurs classeurs, on peut imaginer un lancement différé de chacun. Par exemple, dans une macro tu mets ç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
    Sub lancerLesMacros()
         Application.OnTime Now + TimeValue("00:00:01"), "Macro1"
         Application.OnTime Now + TimeValue("00:00:02"), "Macro2"
         Application.OnTime Now + TimeValue("00:00:03"), "Macro3"
         Application.OnTime Now + TimeValue("00:00:04"), "Macro4"
    End sub
     
    Sub Macro1()
        Application.Run "'Classeur1.xls'!Procédure"
    End sub
     
    Sub Macro2()
        Application.Run "'Classeur2.xls'!Procédure"
    End sub
     
    Sub Macro3()
        Application.Run "'Classeur3.xls'!Procédure"
    End sub
     
    Sub Macro4()
        Application.Run "'Classeur4.xls'!Procédure"
    End sub
    Tu peux déjà tester ça fichiers ouverts... en attendant que quelqu'un te réponde pour les fichiers fermés
    A+

    Edit
    Si tu n'obtiens pas de réponse, tu as toujours la possibilité de placer tes quatre macros dans le fichier actif et qu'elles exécutent leur travail sur les fichiers fermés. Tu as ça ici, par SilkyRoad

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour ces conceils, je vais etudier ça cette apres-midi, et surement vs revenir ds la soiree ! ^^

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Voici le programme que j'ai ecrit grace aux conseils ci-dessus (pr un fichier pr l'instant) :

    Code vba : 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
    Sub LancerLesMacrosMAJPCD()
         Application.OnTime Now + TimeValue("00:00:01"), "GetDB"
         Application.OnTime Now + TimeValue("00:00:10"), "coquille"
         Application.OnTime Now + TimeValue("00:00:20"), "general"
         Application.OnTime Now + TimeValue("00:00:30"), "generix"
    End Sub
     
    Sub GetDB()
        Application.Run "'PCD - X44 CAREG.xls'!GetDB"
    End Sub
     
    Sub coquille()
        Application.Run "'PCD - X44 CAREG.xls'!coquille"
    End Sub
     
    Sub general()
        Application.Run "'PCD - X44 CAREG.xls'!general"
    End Sub
     
    Sub generix()
        Application.Run "'PCD - X44 CAREG.xls'!generix"
    End Sub

    Une fois lancéé la macro bloque et affiche :
    Run-time error '9' : subscript out of range

    En cliquant sur debug, elle affiche la macro GetDB en surlignant :
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Sub GetDB()
        nom = Sheets("MACRO").Range("E7") ' <= Cette ligne
        Filename = Sheets("MACRO").Range("H4")
        Path = Sheets("MACRO").Range("H5")
        filemodif = Sheets("MACRO").Range("H7")
        truc = nom & " HOURS"
        much = nom & " OVERHEADS"
        '************ fin d'initialisation des variables***************
     
        If Sheet55.Name <> truc And Sheet56.Name <> much Then
            Sheet55.Name = truc
            Sheet56.Name = much
        End If
        '********Fin de test sur l'existence des noms de feuilles****************
    Que cela signifie t'il ?

    Merci

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    C'est que la feuille "MACRO" n'existe pas.

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta reponse.
    La feuille MACRO existe bien.
    Elle est ds le fichier Excel à traiter, different de celui où se situe la macro qui lance automatiquent les 4 autres macros.
    Que faire ?
    Merci !
    Edit : "le fichier Excel à traiter" correspond à PCD - X44 CAREG dans le code.

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Je m'y perds un peu avec ta macro qui lance des macros dans un autre classeur.
    Tu peux toujours essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom = ThisWorkbook.Sheets("MACRO").Range("E7")
    Sans garantie.
    Je suis sur un serveur où Excel n'est pas installé.

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Merci, je vais tenter d'etre plus clair.

    En fait, le code ci-dessus correspond à une macro, dans un fichier isolé, qui a pour but de faire tourner 4 autres macros qui sont dans d'autres fichiers.
    La feuille 'MACRO' est dans ces autres fichiers, et contient quelques infos necessaires au bon fonctionnement du traitement des donnees.

    Si je fais tourner chaque macro individuellement (GetDB, coquille, general & generix) dans chaque fichier (dans l'exemple, PCD - X44 CAREG), cela fonctionne.

    Si je passe par la macro ci-dessus, qui m'evite de lancer les 4 macros l'une apres l'autre dans chaque fichier, le programme bloque.

    En esperant avoir été plus clair, merci d'avance !

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    As-tu modifié ton GetDB comme je te le proposais?

    Quand j'ai dit "Je m'y perds un peu", ce n'est pas par rapport à l'explication mais bien sur "Comment VBA gère-t-il le classeur courant, par exemple?".

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    De quelle modification parles tu concernant GetDB ? Je n'ai pas vu ta proposition !
    Merci !
    Edit : oups, je viens de la voir, je teste tt ça dans la journee, merci encore !

Discussions similaires

  1. Réponses: 26
    Dernier message: 13/10/2011, 16h25
  2. Créer macro dans un fichier excel crée via VB.NET
    Par Florian54 dans le forum VB.NET
    Réponses: 2
    Dernier message: 13/01/2011, 09h22
  3. Ajouter un macro dans un fichier Excel
    Par DeveloppeurWeb dans le forum ASP.NET
    Réponses: 3
    Dernier message: 12/11/2010, 16h53
  4. Réponses: 1
    Dernier message: 08/10/2008, 15h30
  5. [VBA-E] Lancement automatique d'une macro (débutante)
    Par pom_poir dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/11/2005, 17h57

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