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 :

Excel VBA : Private Sub 'BeforeClose' pour annuler Private Sub 'Open' [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Chargé de pilotage Opé
    Inscrit en
    Décembre 2024
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de pilotage Opé
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2024
    Messages : 8
    Par défaut Excel VBA : Private Sub 'BeforeClose' pour annuler Private Sub 'Open'
    Bonjour,

    J'ai encore une fois besoin de votre précieuse aide, j'ai fouillé sur le forum mais je n'ai pas trouvé de réponse à ma question


    J'utilise une Private Sub 'Open' pour lancer une macro automatiquement à un horaire précis, voici le code ci-dessous


    (Je ne peux pas utiliser le planificateur de tâche du PC puisque c'est un PC professionnel et que je n'ai pas les droits...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_Open()
     
    Application.OnTime EarliestTime:=TimeValue("16:20:00"), Procedure:="Message_Temps", Schedule:=True
    Application.OnTime EarliestTime:=TimeValue("16:25:00"), Procedure:="Effacement", Schedule:=True
     
     
    End Sub
    Problème rencontré :
    Le code ci-dessus se lance même quand le fichier Excel est fermé, cependant je souhaite qu'il ne se lance que si le classeur est ouvert
    (Cela évitera que la macro se lance plusieurs fois si plusieurs utilisateurs ont ouvert le fichier dans la même journée)

    Selon vous qu'elle est la meilleure méthode ?

    -Annuler le 'Private Sub Open' à la fermeture du fichier ?
    -Mettre une condition dans le 'Private Sub Open' pour qu'il ne se lance que si le fichier est ouvert ?
    -Autre chose ?

    Si besoin, voici les autres procédures :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Message_Temps()
     
    MsgBox "Bonjour " & Application.UserName & " !... Les informations de l'onglet *Compil finale Collaborateurs* du fichier *Responsable COP* seront effacées à 16h25 pour être remplacées. Veuillez ne pas fermer le fichier."
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Effacement()
     
    Workbooks("Responsable COP.xlsm").Activate
    Sheets("Compil finale Collaborateurs").Select
    Range("A2:AC2000").ClearContents
     
    MsgBox "Onglet *Compil finale Collaborateurs* effacée"
     
    ThisWorkbook.Close savechanges:=True
     
    End Sub

    Merci beaucoup pour votre aide

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Hello,

    Je résume:
    TU veux lancer une macro a partir d'un classeur A, sur un classeur B ouvert par un autre utilisateur.
    Ce n'est pas possible.

    Garde en tête que les macros ne s'exécutent que sur un environnement connu, ce qui se résume à la session Windows ouverte sur ton PC.
    Connaitre l'état des processus sur un autre PC est impossible.

    Quelle tâche essayes-tu d'accomplir ?
    A mon avis, tu fais fausse route.

  3. #3
    Membre habitué
    Homme Profil pro
    Chargé de pilotage Opé
    Inscrit en
    Décembre 2024
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de pilotage Opé
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2024
    Messages : 8
    Par défaut
    Bonjour,

    Non ça n'est pas exactement ça, j'ai dû mal m'exprimer, tout se passe sur le même fichier

    Ici je cherche à trouver un moyen de stopper mes procédures automatiques qui se lancent via le 'Private Sub Open' (à l'ouverture de mon fichier) lorsque je ferme mon fichier

    Exemple :

    -J'ouvre mon fichier contenant les macros à 9h00 puis je le ferme à 12h00
    -J'ouvre un autre fichier Excel (peut importe lequel)
    -A 16h25, Excel va ré ouvrir mon premier fichier contenant les macros pour les effectuer, hors je ne veux pas qu'elles se lancent si le fichier est fermé


    Je souhaite donc trouver un moyen d'annuler les procédures 'On Time' de mon 'Private Sub Open'

    Merci pour ton aide en tous cas

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Tu mixes traitements 'à la demande" et traitements planifiés (batch), ce qui engendre des conflits.

    A mon avis, le mieux est de dissocier les 2.
    Déporte les macros "batch" dans un second classeur, il est alors facile de vérifier quels classeurs sont ouverts par l'utilisateur (via la collection Workbooks).
    Ce sera autrement plus simple que d'essayer d'interrompre un traitement en cours, avec toutes les problématiques qui vont avec (verification permanente d'un flag, cohérence des données ect ...).

  5. #5
    Membre chevronné
    Homme Profil pro
    CIP
    Inscrit en
    Avril 2024
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : CIP
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2024
    Messages : 201
    Par défaut re
    Bonjour
    et bien ferme le shedule tout simplement au close du fichier
    tu sais le programmer tu devrais savoir le fermer

    et pour répondre en même temps a deedolith si on peut exécuter une macro d'un autre fichier a partir d'un fichier
    il suffit pour cela de mettre un nom au vbaproject du classeur A
    ajouter la référence a ce classeur dans le classeur B en cochant sa référence dans outils/références et que la sub ou fonction dans le classeur A soit public
    cela dit quand on ouvre le classeur B il ouvre alors le classeur A
    pour éviter cela on activera et déactivera la référence a ce classeur A dynamiquement par vba
    rien de plus simple

  6. #6
    Membre chevronné
    Homme Profil pro
    CIP
    Inscrit en
    Avril 2024
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : CIP
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2024
    Messages : 201
    Par défaut re
    Bonjour
    et bien ferme le shedule tout simplement au close du fichier
    tu sais le programmer tu devrais savoir le fermer

    et pour répondre en même temps a deedolith si on peut exécuter une macro d'un autre fichier a partir d'un fichier
    il suffit pour cela de mettre un nom au vbaproject du classeur A
    ajouter la référence a ce classeur dans le classeur B en cochant sa référence dans outils/références et que la sub ou fonction dans le classeur A soit public
    cela dit quand on ouvre le classeur B il ouvre alors le classeur A
    pour éviter cela on activera et déactivera la référence a ce classeur A dynamiquement par vba
    rien de plus simple

  7. #7
    Membre habitué
    Homme Profil pro
    Chargé de pilotage Opé
    Inscrit en
    Décembre 2024
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de pilotage Opé
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2024
    Messages : 8
    Par défaut
    Bonjour,

    Ah oui en effet je devrais pouvoir faire ça
    Merci à tous les deux pour vos lumières, je vous souhaite un bon mois de février !

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

Discussions similaires

  1. Excel VBA : Gérer les paramètres pour protéger une feuille
    Par gdmeunier dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/06/2024, 17h24
  2. [XL-2016] Combiner deux codes VBA - Private Sub Worksheet_Change(ByVal Target As Rang
    Par pryamani dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/05/2022, 10h00
  3. [XL-2019] Supprimer le code VBA private sub d'une feuille
    Par BenoitL77 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/07/2020, 19h34
  4. Réponses: 8
    Dernier message: 05/03/2013, 09h49
  5. Réponses: 2
    Dernier message: 10/06/2006, 13h19

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