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 :

Ouverture d'un Msgbox après fermeture d'Excel [XL-2010]


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
    Technicien BE Bâtiment
    Inscrit en
    Mai 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien BE Bâtiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2017
    Messages : 12
    Par défaut Ouverture d'un Msgbox après fermeture d'Excel
    Bonjour

    J'aimerai savoir s'il est possible de faire ceci; Créer une procédure qui ouvre un MsgBox 5 minutes après la fermeture d'un classeur (et du logiciel Excel). Une boite de dialogues d'information notamment.

    Est-il possible de faire cela depuis VBA directement ?
    Si non, une extension pourrait-elle le faire ? En connaissez vous ?

    Merci d'avance pour le temps que vous m'accorderez.

    Cordialement,

    Maxime.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Non, ce n'est pas possible.
    Une application fermée ne peut pas agir, par principe.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Non Menhir a raison mais tu peux planifier un vbscript dans le planificateur de tache de Windows avant de quitter ta macro.

    Code Alert.vbs : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Msgbox "Fin du traitement il y a cinq minute"

  4. #4
    Membre averti
    Homme Profil pro
    Technicien BE Bâtiment
    Inscrit en
    Mai 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien BE Bâtiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2017
    Messages : 12
    Par défaut
    D'accord,

    Merci pour votre réponse, je vais chercher du coté du planificateur de tache et du vbscript, chose que je ne maîtrise pas du tout

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour


    ouvre un nouveau classeur pour tester
    met un module standard
    dans ce module standard colle tout ce code
    enregistre ton fichier exel
    maintenant lance la sub "TEST_SHREDULER_MESSAGE"
    et ferme ton classeur tu devrais avoir sur ton bureau un fichier ""message.vbs""
    laisse le attends... attends....attends
    pouff!!! "coucou"
    click sur ok et regarde le fichier vbs pouff!! parti
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    '------------------------------------------------------------------
    ' cet exemple te montre comment programer une tache planifiée avec l'object "Schedule.Service" en late binding
    'À partir du moment où la tâche est enregistrée.
    'patricktoulon
    '------------------------------------------------------------------
    Sub TEST_SHREDULER_MESSAGE()
        Dim delay&, codeVBS$, texte$, Titre$
        texte = "coucou"
        Titre = "test de message"
        codeVBS = "CreateObject(""Wscript.shell"").Popup" & Chr(34) & texte & Chr(34) & "," & temps & "," & Chr(34) & Titre & Chr(34) & vbCrLf
        codeVBS = codeVBS & "Set fso = wscript.CreateObject(""Scripting.FileSystemObject"")" & vbCrLf
        codeVBS = codeVBS & "fso.deletefile WScript.ScriptFullName"
        chemin = Environ("userprofile") & "\Desktop\message.vbs"
        Open chemin For Output As #1: Print #1, codeVBS: Close #1
     
     
     
    delay = 10 'DELAY en seconde!!!!!!!
    'constante qui spécifie un déclencheur basé sur le temps.
    Const TriggerTypeTime = 1
    ' constante qui spécifie une action exécutable
    Const ActionTypeExec = 0
     
    '********************************************************
    'Céation  l'objet TaskService
    Set service = CreateObject("Schedule.Service") 'latebinding
    Call service.Connect
    '********************************************************
    'obtention d' un dossier pour créer une définition de tâche dans.
    Dim rootFolder
    Set rootFolder = service.GetFolder("\")
    'La variable taskDefinition est l'objet TaskDefinition.
    Dim taskDefinition
    'Le paramètre flags est 0 car il n'est pas pris en charge.
    Set taskDefinition = service.NewTask(0)
    '********************************************************
    'Définir des informations sur la tâche.
    'Définissez les informations d'inscription pour la tâche par
    'Création de l'objet RegistrationInfo.
    Dim regInfo
    Set regInfo = taskDefinition.RegistrationInfo
    regInfo.Description = "demarrer le bloc-notes à un certain moment"
    regInfo.Author = Environ("username")
    '********************************************************
    'Définir le principal de la tâche
    Dim principal
    Set principal = taskDefinition.principal
    'Définissez le type de connexion à la connexion interactive
    principal.LogonType = 3
     
    ' Définissez l'information de réglage de la tâche pour le planificateur de tâches par
    'Création d'un objet TaskSettings.
    Dim settings
    Set settings = taskDefinition.settings
    settings.Enabled = True
    settings.StartWhenAvailable = True
    settings.Hidden = False
    '********************************************************
    ' Créez un déclencheur basé sur le temps.
    Dim triggers
    Set triggers = taskDefinition.triggers
    Dim trigger
    Set trigger = triggers.Create(TriggerTypeTime)
    ' les variables qui définissent quand le déclencheur est actif.
    Dim startTime, endTime
    'exemple
    Dim time
    time = DateAdd("s", delay, Now) 'start time = 30 secondes a partir de maintenant
    startTime = XmlTime(time)
    'selon les disponibilité du PC la tache demarrera entre ces deux moments
    time = DateAdd("s", delay + 1, Now) 'end time = 60 secondes*5 a partir de maintenant
    endTime = XmlTime(time)
    'MsgBox "startTime :" & startTime
    'MsgBox "endTime :" & endTime
    trigger.StartBoundary = startTime
    trigger.EndBoundary = endTime
    trigger.ExecutionTimeLimit = "PT5M"    '5 minutes de delay
    trigger.ID = "TimeTriggerId"
    trigger.Enabled = True
    '***********************************************************
    ' Création  l'action pour la tâche à exécuter.
    ' Ajoutez une action à la tâche pour exécuter notepad.exe.
    Dim Action
    Set Action = taskDefinition.Actions.Create(ActionTypeExec)
    Action.Path = Environ("userprofile") & "\Desktop\message.vbs"
    'MsgBox "Création de la définition de la tâche. À propos de soumettre la tâche ..."
    '***********************************************************
    'Enregistrez (créer) la tâche.
    Call rootFolder.RegisterTaskDefinition( _
        "Test TimeTrigger", taskDefinition, 6, , , 3)
    MsgBox "Tâche soumise."
    End Sub
     
    '------------------------------------------------------------------
    'la fonction qui suit sert a mettre le format date heure minutes secondes au format pour le shreduler
    ' Utilisé pour obtenir le temps pour le déclencheur
    ' startBoundary and endBoundary.la fonction sera utilisé deux fois pour le starttime et endtime
    ' Renvoie l'heure dans le format correct:
    ' exemple :YYYY-MM-DDTHH:MM:SS.
    '------------------------------------------------------------------
    Function XmlTime(t)
        Dim cSecond, cMinute, CHour, cDay, cMonth, cYear, tTime, tDate
            cSecond = "0" & Second(t)
        cMinute = "0" & Minute(t)
        CHour = "0" & Hour(t)
        cDay = "0" & Day(t)
        cMonth = "0" & Month(t)
        cYear = Year(t)
        tTime = Right(CHour, 2) & ":" & Right(cMinute, 2) & ":" & Right(cSecond, 2)
        tDate = cYear & "-" & Right(cMonth, 2) & "-" & Right(cDay, 2)
        XmlTime = tDate & "T" & tTime
    End Function
    j'ai mis un delay de 10 seconde (la variable ""delay"")
    tu veux 5 minute ben tu fait


    bien sur tu pourrais ecrire un hta pour te faire des jolis message perso en couleur et meme des animations
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Invité
    Invité(e)
    Par défaut
    Salut Patrick,

    bien vue!

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour robert

    le code est valide meme pour declencher un exe ou n'importe quoi
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Membre averti
    Homme Profil pro
    Technicien BE Bâtiment
    Inscrit en
    Mai 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Technicien BE Bâtiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2017
    Messages : 12
    Par défaut Merci
    Merci pour ta super réponse patricktoulon !

    C'est exactement ce qu'il me fallait, il va me falloir un peu de temps pour bien le comprendre mais ça marche super bien !

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonsoir maxime
    ravi pour toi
    pour le coup j'ai chercher dans mes archives et je les ai trouvés
    j'ai trouvé ce dont je me servais en 2010
    a savoir l'ecriture du .vbs mais aussi un ".cmd" executant la commande schtasks

    je l'ai un peu remanié a ta sauce ,virer les FSO pour créer les fichiers en me servant d'open for output

    ils s'autodetruisent tout les deux tout seuls un fois qu'il se sont executé (comme ca on a pas de fichier poids mort
    autrement dit le .cmd est lancé imediatement il crée la tache et s'auto detruit imediatement
    pour le vbs ca reste pareil il s'autodetruit quand le message est fermé par ok ou apres 10 secondes

    le message a une durré de 10 secondes au cas ou il ne serait pas fermer par l'utilisateur et caché par une autre fenetre en service

    la tache programée porte a chaque fois le meme nom
    autrement dit tu n'a pas a faire de netoyage des taches planifiées tu en a toujours qu'une concernant ce msgbox je l'ai appelé"titi"

    bref ca rajeuni pas ca

    le code n'est que de l'ecriture dans 2 fichiers

    tu regle la date, l'heure,le titre du msgbox et le message et!! combien de minutes de delay que tu veux

    voila le dinausaure
    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
    Option Explicit
     
    Sub test()
        Dim minutes, madate, heure, nomtache, titre, message
        minutes = 5
        madate = Format(Now, "dd/mm/yyyy")
        heure = Format(DateAdd("n", minutes, Now), "hh:nn")
        nomtache = "titi"
        titre = "test de message"
        message = "vous avez fermé le fichier " & ThisWorkbook.Name & " il y a " & minutes & " minutes"
        programe_un_message madate, heure, nomtache, titre, message
      End Sub
     
    Sub programe_un_message(madate, heure, nomtache, titre, message)
        Dim codeCmd$, CodeVbS$, Chemin$
        Chemin = Environ("userprofile") & "\Desktop\"
        ' code  du BAT
        codeCmd = codeCmd & "Set depart=""" & heure & Chr(34) & vbCrLf
        codeCmd = codeCmd & "Set startdate=""" & madate & Chr(34) & vbCrLf & "Set schedulename=""" & nomtache & Chr(34) & vbCrLf
        codeCmd = codeCmd & "set mode=/ru " & Chr(34) & Chr(34) & vbCrLf & "set mode=" & vbCrLf
        codeCmd = codeCmd & "set app=""" & Chemin & "message.vbs""" & vbCrLf
        codeCmd = codeCmd & "schtasks /create %mode% /tn ""%schedulename%"" /tr ""%app:""=\""%"" /sc once /sd %startdate% /st %depart% /f" & vbCrLf
        codeCmd = codeCmd & "DEL " & Chemin & "program_tache.cmd" 'autodestruction
         ' code du vbs
        CodeVbS = "CreateObject(""Wscript.shell"").Popup" & Chr(34) & message & Chr(34) & "," & 10 & "," & Chr(34) & titre & Chr(34) & vbCrLf
        CodeVbS = CodeVbS & "Set fso = wscript.CreateObject(""Scripting.FileSystemObject"")" & vbCrLf
        CodeVbS = CodeVbS & "fso.deletefile WScript.ScriptFullName" 'autodestruction
        ' ecriture des deux fichier
       Open Chemin & "program_tache.cmd" For Output As #1: Print #1, codeCmd: Close #1
       Open Chemin & "message.vbs" For Output As #1: Print #1, CodeVbS: Close #1
     'enregistrement de la tache
     With CreateObject("wscript.shell"): .Run Environ("userprofile") & "\Desktop\program_tache.cmd": End With
     
    End Sub

    c'est Robert qui va rigoler
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Oui Patrick,mais. Ça amuserait Marc également.

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour robert ,oui aussi

    j'en ai eu autre avec l'api plus simple en terme de code mais que je n'ai jamais reussi a faire fonctionner
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. formule qui disparait après fermeture d'excel
    Par touristenino dans le forum Excel
    Réponses: 22
    Dernier message: 20/11/2016, 19h27
  2. [XL-2010] Projet reste ouvert dans VBA après fermeture de Excel
    Par jmsch dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/10/2016, 11h49
  3. Réponses: 4
    Dernier message: 18/03/2010, 17h34
  4. [PPT-2003] Problème de graphique mis à jour depuis Excel après fermeture
    Par amely dans le forum VBA PowerPoint
    Réponses: 2
    Dernier message: 30/12/2009, 08h59
  5. Processus EXCEL;exe actif apres fermeture
    Par jamescook dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/10/2007, 11h49

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