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 Macro d'un classeur déjà ouvert [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de bastou93
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 217
    Par défaut Exécuter Macro d'un classeur déjà ouvert
    Bonjour a tous,

    Je souhaiterai ouvrir le classeur et lancer une macro TOTO si le classeur n'est pas ouvert (OK pour ce point).
    Et uniquement lancer la macro TOTO si le classeur est déjà ouvert (NON OK).

    Voila ce que j'ai actuellement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If WorkbookOpen("Tableau de suivi.xlsm") Then
    'Si oui on lance la fonction InsertRow
        Workbooks("Tableau de suivi.xlsm").Application.Run "TOTO"
    'Si non on l'ouvre si le fichier cible est choisi
    Else
    'TRAITMENT
    End If
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Function WorkbookOpen(Name As String) As Boolean
     
    WorkbookOpen = False
    For Each work In Workbooks
        If work.Name = Name Then
            WorkbookOpen = True
            Exit For
        End If
    Next work
     
    End Function
    La fonction WorkbookOpen ne voit pas mon classeur ouvert si je l'ai lancer via la macro suivante mais vois le classeur si je l'ouvre manuellement:

    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
    Set AppExcel = New Excel.Application
     
    'test si le classeur est déjà ouvert
    If WorkbookOpen("Tableau de suivi.xlsm") Then
    'Si oui on lance la fonction InsertRow
        Workbooks("Tableau de suivi.xlsm").Application.Run "TOTO"
    'Si non on l'ouvre si le fichier cible est choisi
    Else
        If FileExists(Target) Then
            AppExcel.Visible = True
            AppExcel.Workbooks.Open Target
            AppExcel.Run "InsertRow", collectRow
            'Set AppExcel = Nothing
        End If
    End If
    Merci a tous,

    Bastien

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir,
    pourquoi utiliser une 2° instance d'excel ?

  3. #3
    Membre éclairé Avatar de bastou93
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 217
    Par défaut
    Bonsoir,

    Bonsoir,
    pourquoi utiliser une 2° instance d'excel ?
    Tu parles pour ouvrir le nouveau classeur? Comment je pourrais déclarer cela?

    Cdt

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    En restant dans la même instance d'excel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim Wk As workbook
    (...)
    Set Wk = WorkbookOpen("Tableau de suivi.xlsm")
    wk.Application.Run "TOTO"

  5. #5
    Membre éclairé Avatar de bastou93
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 217
    Par défaut
    Oui cela parrait en effet plus logique...
    De cette manière si mon classeur est déjà ouvert, il le réouvre? ou l'active simplement?

    De plus j'ai une erreur qui je pense est basique mais je ne trouve pas sur les FAQ

    Il est possible qu'elle ne soit pas disponible dans ce classeur ou que toutes les macros soient désactivées.
    à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Wk.Application.Run "TOTO"
    Cependant le classeur s'ouvre bien...

    Merci encore

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Essai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wk.application.Run"'Tableau de suivi.xlsm!TOTO"
    mais pourquoi mettre tes macros dans différents classeurs ? séparer les données des macros c'est bien ...

    mais séparer les macros dans plusieurs fichiers Excel différents il faut avoir une bonne raison ...

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

Discussions similaires

  1. Exécuter macro externe à fermeture classeur
    Par gadsweb dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/02/2013, 16h00
  2. Exécuter macro avec nom du fichier ouvert : prob de variable
    Par supernati27 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 19/05/2011, 13h43
  3. Exécuter macro à l'ouverture d'un autre classeur
    Par manu22 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 01/08/2008, 15h32
  4. Exécuter une macro d'un classeur B a partir d'un classeur A
    Par jackfred dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/10/2007, 23h31
  5. comment exécuter macro d'un autre classeur sans avoir à l'ouvrir
    Par zerti dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/07/2007, 14h16

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