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 :

Exécuter une macro dans un autre classeur


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Exécuter une macro dans un autre classeur
    Bonjour,
    J'ai créé une macro Format_Tab_Se qui met en forme un tableau. Mon programme crée un nouveau classeur(Mes_Menus.xlsm), nomme les feuilles, les remplit, mais je n'arrive pas à reproduire la mise en forme avec ma macro sur ces feuilles. Au lieu de ça il met en forme une feuille de mon classeur actif (Projet.xlsm).

    Voilà mon code:
    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
    51
    52
    53
    54
     
    Sub AddNewWorkbook()
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
     
        'On crée l'objet Excel
        Set xlApp = CreateObject("Excel.Application")
        'On définit le nombre d'onglets (ici 5)
        xlApp.SheetsInNewWorkbook = 5
        'On ajoute un classeur
        Set xlBook = xlApp.Workbooks.Add
        'On donne un nom au classeur
        'xlBook.SaveAs (Workbooks(ActiveWorkbook.Name).Path & Application.PathSeparator & "Mes Menus.xls")
        xlBook.SaveAs Filename:=(Workbooks(ActiveWorkbook.Name).Path & Application.PathSeparator & "Mes_Menus.xlsm"), FileFormat:= _
    xlOpenXMLWorkbookMacroEnabled
        'On rend le classeur visible
        xlApp.Visible = True
        'On créer l'objet onglet dans le nouveau classeur créé
        Set xlSheet = xlBook.Worksheets(1)
        'On affecte un nom aux l'onglets
        xlSheet.Name = "Semaine1"
        'xlSheet.Activate
        xlSheet.Range("A1:V22").Value = ThisWorkbook.Worksheets("EdT").Range("A1:V22").Value
        xlSheet.Range("A3:V22").Select
        Application.Run "Projet.xlsm!Format_Tab_Se"
        'on libère l'objet onglet pour pouvoir en créer un nouveau ... etc
     
        Set xlSheet = Nothing
        '
        Set xlSheet = xlBook.Worksheets(2)
        xlSheet.Name = "Semaine2"
        xlSheet.Range("A1:V22").Value = ThisWorkbook.Worksheets("EdT").Range("A1:V22").Value
        Set xlSheet = Nothing
        '
        Set xlSheet = xlBook.Worksheets(3)
        xlSheet.Name = "Semaine3"
        xlSheet.Range("A1:V22").Value = ThisWorkbook.Worksheets("EdT").Range("A1:V22").Value
        Set xlSheet = Nothing
     
        Set xlSheet = xlBook.Worksheets(4)
        xlSheet.Name = "Semaine4"
        xlSheet.Range("A1:V22").Value = ThisWorkbook.Worksheets("EdT").Range("A1:V22").Value
        Set xlSheet = Nothing
     
        Set xlSheet = xlBook.Worksheets(5)
        xlSheet.Name = "Mois"
        Set xlSheet = Nothing
        'On remet la propriété de l'application à 3 (par défaut)
        xlApp.SheetsInNewWorkbook = 3
        'On ferme l'application
        xlApp.Quit
     
    End Sub
    Quelqu'un sait-il pourquoi ça n'applique pas ma macro à la feuille Semaine1 du classeur Mes_Menus?

    2ème question, faut-il que mon classeur soit xlsm pour que je puisse lui appliquer la macro?

    Merci d'avance,
    Claire

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 153
    Points : 215
    Points
    215
    Par défaut
    Bonjour,

    A mon avis, le problème vient plutôt de la macro "Projet.xlsm!Format_Tab_Se", où les commandes ne sont probablement pas exécutées sur Workbooks("Mes_Menus.Xlsm").

    Pour répondre à ta deuxième question, je ne pense pas qu'il y ait nécéssairement besoin du format XLSM pour manipuler le classeur, tant que tu n'as pas prévu d'y enregistrer une macro. Mais je ne suis pas certain non plus.

    Cordialement,

    Poulpe

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Octobre 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2014
    Messages : 24
    Points : 46
    Points
    46
    Par défaut
    Bonsoir.
    Tu peux exécuter une macro vba sur un classeur qui qui n'est pas Xlsm sans souci.

    Ton souci viet de ta macro Format_Tab_Se. Elle doit être conçue pour être suffisament flexible pour s'exécuter sur n'importe quel fichier. Si tu ne vois pas comment l'adapter, publie la dans ton post.

Discussions similaires

  1. [XL-2010] Ouverture d'une macro dans un autre classeur et retour.
    Par fredoos dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/06/2015, 23h20
  2. Réponses: 18
    Dernier message: 18/11/2013, 10h50
  3. copie d'une macro dans un autre classeur
    Par guypilote dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/08/2009, 17h58
  4. Exécuter une macro dans une autre macro
    Par marc56 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/02/2008, 13h17
  5. Executer une macro dans un autre classeur
    Par nautygirl dans le forum Général VBA
    Réponses: 2
    Dernier message: 30/07/2007, 15h34

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