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 :

Problème avec l'utilisation d'Application.Run


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
    autre
    Inscrit en
    Octobre 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Octobre 2015
    Messages : 49
    Par défaut Problème avec l'utilisation d'Application.Run
    Bonjour,

    Je suis en train de faire un petit programme et j'ai un souci avec l'utilisation de Run. J'ai 2 classeurs : ClasseurA et ClasseurB. Depuis ClasseurA, j'appelle la procédure de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.Run Workbooks(ClasseurB.Name) & "!EraseOldBook", ClasseurA.Path, ClasseurA.Name
    Le code dans le ClasseurB est le suivant:
    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
     
    Public Sub EraseOldBook(ByRef path As String, ByRef name As String)
     
        Dim fullPath As String: fullPath = path & Application.PathSeparator & name
     
        Workbooks(name).Close true
     
        If TestIfFileExist(fullPath) Then ' Petite fonction qui fait : len(dir(fullPath)) > 0
     
            'Kill fullPath
     
        End If
     
        MsgBox "fin"
     
    End Sub
    Le but de ma manoeuvre est de supprimer ClasseurA depuis ClasseurB. Le MsgBox "fin" est là uniquement pour les tests.

    Mon problème est qu'a partir du moment où j'ai appellé Workbooks(name).Close, l'exécution du code s'arrête et MsgBox "fin" n'apparait jamais alors que mon ClasseurB reste ouvert. Etant donné que je suis dans ClasseurB je ne comprends pas pourquoi l'exécution du code s'arrête après la fermeture de ClasseurA. Je dois préciser que le ClasseurA est une copie du ClasseurB dont j'ai au préalable fait une sauvagarde avec Thisworkbook.SaveAs (ça a peut-être son importance).

    Quelqu'un pourrait m'éclairer svp ?

    Je vous remercie

    Romain

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    j'ai peur de comprendre je te cite

    Citation Envoyé par poseidonsr Voir le message
    Bonjour,

    Je suis en train de faire un petit programme et j'ai un souci avec l'utilisation de Run. J'ai 2 classeurs : ClasseurA et ClasseurB. Depuis ClasseurA, j'appelle la procédure de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.Run Workbooks(ClasseurB.Name) & "!EraseOldBook", ClasseurA.Path, ClasseurA.Name
    Le code dans le ClasseurB est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Sub EraseOldBook(ByRef path As String, ByRef name As String)
     
    ...
        MsgBox "fin"
     
    End Sub
    Le but de ma manoeuvre est de supprimer ClasseurA depuis ClasseurB. Le MsgBox "fin" est là uniquement pour les tests.

    Mon problème est qu'a partir du moment où j'ai appellé Workbooks(name).Close, l'exécution du code s'arrête et MsgBox "fin" n'apparait jamais alors que mon ClasseurB reste ouvert. Etant donné que je suis dans ClasseurB je ne comprends pas pourquoi l'exécution du code s'arrête après la fermeture de ClasseurA. Je dois préciser que le ClasseurA est une copie du ClasseurB dont j'ai au préalable fait une sauvagarde avec Thisworkbook.SaveAs (ça a peut-être son importance).
    J'ai l'impression que tu veux t'autodétruire et ça tu ne peux pas le faire, c'est comme si tu sciais la branche sur laquelle tu es assis !!!!!

    La seule chose possible c'est en étant dans le classeur B, classeur A fermé, tu supprimes le classeur A donc tu oublies ton "Application.Run" qui est dans ton cas source de problème

  3. #3
    Membre averti
    Homme Profil pro
    autre
    Inscrit en
    Octobre 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Octobre 2015
    Messages : 49
    Par défaut
    Salut et merci de ta réponse.

    Donc malgré que la procédure du ClasseurB ait été lancée, au final c'est quand même le ClasseurA qui en a le contrôle ? Je vais essayer de trouver une autre solution.

    Romain

  4. #4
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Oui tu es dans le classeur A que tu veux supprimer c'est là qu'est le problème même si la macro vient d'un autre classeur

    C'est trop dangereux Comme me disait ma prof préférée de programmation : " Dans le meilleur des cas ça plante ... Sinon ... C'est l'aventure !"

    Parce que sur un ordi on a ce que l'on appelle les piles informatiques le fait de auto supprimer va mettre le souc aux niveaux des piles (l'équivalent d'arrêter l'ordi alors qu'il fonctionne)


    Pour plus d'info je te conseille d'aller jeter un oeil sur cette page

    https://fr.wikipedia.org/wiki/Pile_(informatique)

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 179
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comme me disait ma prof préférée de programmation : " Dans le meilleur des cas ça plante ... Sinon ... C'est l'aventure !"
    J'adore.
    Si l'occasion se présente je la replacerai lors de l'une de mes formations VBA
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    J'adore.
    Si l'occasion se présente je la replacerai lors de l'une de mes formations VBA
    Pas de problème Philippe. J'avais à cette époque une prof géniale et dans les années début 90 j'avais une vrai analyste programmeuse qui avait quitté le monde du développement pour celui de la formation BAC et BTS. Elle nous avait dit que c'était un choix de vie et nous petits imbeciles de l'époque, on avait du mal à comprendre. Mais aujourd'hui je la comprends parfaitement.

    Comme tu vois ce n'est pas d'aujourd'hui que je baigne dans l'informatique !

    Je te souhaite une excellente journée

    A bientôt

Discussions similaires

  1. Problème avec l'utilisation de LogMessage
    Par vanquish dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 17/11/2005, 10h18
  2. Problème avec l'utilisation d'un module
    Par goblin dans le forum Modules
    Réponses: 4
    Dernier message: 09/11/2005, 20h55
  3. Problème avec l'utilisation de librairies
    Par Aradesh dans le forum MFC
    Réponses: 3
    Dernier message: 01/08/2005, 15h00
  4. [debutant] problème avec type à utiliser
    Par mlequim dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 15/07/2005, 16h08
  5. Problème avec l'utilisation de la fonction clock
    Par Matgic95 dans le forum C++Builder
    Réponses: 13
    Dernier message: 09/05/2005, 19h27

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