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 :

Appel macro depuis autre fichier => ne s'accomplit pas


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Coordinator customer support
    Inscrit en
    Octobre 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Coordinator customer support
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 46
    Par défaut Appel macro depuis autre fichier => ne s'accomplit pas
    Bonjour,

    J'ai un fichier 1.xlsm qui réceptionne des données à l'exécution d'un autre fichier 2.xlsm ; ouverture de plusieurs fichiers + lancement application SAP et sauvgarde dans le fichier 1.xlsm.

    Quand le lance la procédure depuis le fichier 2.xlsm, tout fonctionne bien mais, quand, via un bouton qui lance une macro d'ouverture du fichier 2.xlsm depuis le 1.xlsm, la procédure " Call openzue" ne s'exécute pas :

    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
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'En rapport avec la pause
    
    Private Sub Workbook_Open()
    ChDir ThisWorkbook.Path
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    Open "x:\MAJCOCKPIT\OPEN_MAJCOCKPIT.txt" For Append As #1
    Print #1, Application.UserName, Now
    Close #1
    '
    '
    '
    Sleep 5000
    Open "P:\XX\DDKPI\DATA_OPEN_MAJCOCKPIT\OPEN_MAJCOCKPIT.txt" For Append As #1
    Print #1, Application.UserName, Now
    Close #1
    '
    '
    Call SAPZUE06.SAP_ZUE06_XLS                                                             'lancement appli SAP
    Application.Wait (Now + TimeValue("0:00:10"))                                           'pause 10 sec après fermeture SAP
    '
    Call Open_file                                                                          'ouvre KPI DATA -- DEV.XLS et KPI DATA -- T&T.XLS
    '
    Call REC_Dev_TT                                                                         'Création du fichier de travail REC
    '
    'Application.Wait (Now + TimeValue("0:00:5"))
    '
    Call COCKPITZUE
    '
    Application.DisplayAlerts = True
    Call openzue                                                                         'Celle-ci ne se lance pas quand j'exécute les macro à l'ouvreture du 2.xlsm depuis le 1.xlsm
    '
    End Sub
    Macro Call openzue

    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
     
    Sub openzue()
     
     
    Set objShell = CreateObject("WScript.Shell")
        X = objShell.Popup("Voulez-vous ouvrir le Cockpit Déviation et T&T ?", 60, "Mise à jour terminée", vbYesNo) 'le 60 est le nombre de secondes d'attente
       Select Case X
        Case vbYes
            Workbooks.Open Filename:="\\XX\KPI DEV\DATA\TABLEZUE.xlsm"
     
                    Windows("TABLEZUE.xlsm").Activate
            Range("AE5") = Now
            Windows("MAJ DEVTT_V1.xlsm").Activate
            ActiveWindow.Close
    ActiveWorkbook.Save
        Case vbNo
            MsgBox "Quitter"
            Application.Quit
        Case Else
            Application.Quit
     
        End Select
    End Sub

    Une petite idée pour m'éclairer?

    merci,

    Damien

  2. #2
    Membre confirmé
    Homme Profil pro
    Gestion comptable - Spécialiste Excel, Vba, - Débutant MySql, Javascript, Python, Php
    Inscrit en
    Mars 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Gestion comptable - Spécialiste Excel, Vba, - Débutant MySql, Javascript, Python, Php

    Informations forums :
    Inscription : Mars 2010
    Messages : 48
    Par défaut
    De mémoire, pour appeler une macro dans un autre classeur, l'application Excel doit avoir l'option accès "Accès approuvé au modèle d'objet VBA" depuis Menu Office - Options - Centre de gestion et confidentialité et bouton paramètre du Centre... - Paramètre des macros et activer accès approuvé au modèle d'objet VBA.

    Ceci peut simplifier l'exécution d'un script dans un module à partir d'un autre classeur mais ça assez délicat d'un point de vu de la sécurité.

    Dans le cas où le classeur qui appelle l'autre classeur est fait sur un emplacement réseau depuis des utilisateurs différents qui ne veulent pas activer cette option, il faut alors choisir une autre approche peut être en C sharp ou autre.

    Cordialement

  3. #3
    Membre averti
    Homme Profil pro
    Coordinator customer support
    Inscrit en
    Octobre 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Coordinator customer support
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Octobre 2015
    Messages : 46
    Par défaut
    Bonjour bpascal123,

    Merci pour cette réponse.

    Ces options sont bien activées, quoi que grisées par défaut mais sélectionnées quand même ..

    ce que je ne comprend pas c'est qu'il n'y a vraiment que ces quelque bout de code qui ne se lance pas ..

    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
     
    Sub openzue()
     
     
    Set objShell = CreateObject("WScript.Shell")
        X = objShell.Popup("Voulez-vous ouvrir le Cockpit Déviation et T&T ?", 60, "Mise à jour terminée", vbYesNo) 'le 60 est le nombre de secondes d'attente
       Select Case X
        Case vbYes
            Workbooks.Open Filename:="\\XX\KPI DEV\DATA\TABLEZUE.xlsm"
     
                    Windows("TABLEZUE.xlsm").Activate
            Range("AE5") = Now
            Windows("MAJ DEVTT_V1.xlsm").Activate
            ActiveWindow.Close
    ActiveWorkbook.Save
        Case vbNo
            MsgBox "Quitter"
            Application.Quit
        Case Else
            Application.Quit
     
        End Select
    End Sub
    En simplifiant celui-ci, pourrait-il se lancer correctement ? Car même en l'inégrant en private sub dans le module qui "fonctionne", celà neveut pas se lancer ..

    Je reste interrogatif

    merci

  4. #4
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    Et en mettant une macro a l'ouverture du ficher 2.xlsm ?

    Comme çà ta macro du fichier 1.xlsm ouvre le 2.xlsm.

    Et à l'ouverture de ce dernier, la macro s'execute automatiquement.

    Une macro quis'exécute à l'ouverture est dite evénementielle.
    Dans ton cas, il faut impérativement la placer dans "ThisWorkBook" sur l'action "Open"

    En espérant que cela puisse t'aider.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 16
    Par défaut
    Essaye cela...
    Dans ton fichier source tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run "Nomfichier.xls!NomduSubDansUnModule"
    Le Nomfichier.xls est le fichier de destination où se trouve le code dans un module.
    Enfin si c'est bien cela que tu veux faire.

Discussions similaires

  1. [XL-2010] Appel d'un autre fichier
    Par Compte temporaire dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/12/2015, 08h39
  2. [XL-2010] Problème appel procédure depuis autre classeur
    Par Denis_67 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/08/2014, 14h03
  3. Lancer une macro depuis un fichier .bat
    Par duflo dans le forum ImageJ
    Réponses: 2
    Dernier message: 05/07/2013, 02h58
  4. [XL-2007] Plantage excel à la fermeture du fichier avec macro si autre fichier excel ouvert
    Par Systémicien dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/03/2011, 09h00
  5. Création d'un fichier txt depuis autres fichier
    Par PuMa|Yas dans le forum VBScript
    Réponses: 20
    Dernier message: 28/05/2009, 09h29

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