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 :

[E-02] afficher excel quelle que soit l'application windows active


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 94
    Billets dans le blog
    1
    Par défaut [E-02] afficher excel quelle que soit l'application windows active
    Bonjour

    J'utilise la méthode onTime pour effectuer une fonction à un temps donné.

    Cette fonction, a pour but d'afficher un message pour attirer l'attention de l'utilisateur.
    J'ai tenté un bête msgbox, mais il s'affiche dans l'instance d'excel, et donc si l'utilisateur ne travaille pas dans son classeur à ce moment là il ne voit pas le msgbox (il est en train, par exemple, de travailler sur un autre logiciel)
    Le but est que le fichier excel qui fait tourner la fonction ontime, puisse réapparaitre et se rappeler à la connaissance de l'utilisateur, quelque soit l'application active à ce moment là.

    Auriez vous une idée ?

    J'ai testé en plus du msgbox, un workbook.activate, un affichage de userform ; mais rien n'y a fait.

    Merci

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonjour,

    Tu peux essayer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       AppActivate "Microsoft Excel"
       MsgBox ActiveWindow.Caption
    Cordialement,

    Tirex28/

  3. #3
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Salut tirex

    Ca fait un moment que j'essaye différentes solutions et j'obtiens le même résultat avec ton code, c'est à dire que cela fait clignoter la fenêtre dans la barre des tâches mais cela ne me la ramène pas au premier plan.

    Tu as une idée ôôôô grand manitou ?

    Cdlt

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonsoir,

    Le but est que le fichier excel qui fait tourner la fonction ontime, puisse réapparaitre et se rappeler à la connaissance de l'utilisateur,
    cela fait clignoter la fenêtre dans la barre des tâches
    Il me semblait que cela pouvait etre suffisant, si on veut vraiment ramener Excel au 1er plan il faut vraisemblablement se tourner vers les API mais ce n'est pas vraiment ma tasse de thé.

    A+

    Tirex28/

    @fring: je ne dors jamais

  5. #5
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonsoir,

    Peut-être en évoquant le Grand Manitou via une recherche dans la FAQ ?

    du genre :

    Comment ramener une application déjà ouverte au premier plan ?
    (non testé, à voir au vu de la rubrique : "piloter d'autres applications depuis Excel" donc Excel par Excel ?atttention à la remarque sur l'éditeur aussi...)
    auteur : SilkyRoad
    Cet exemple vérifie si la calculatrice est déjà ouverte, l'affiche au premier plan et sinon déclenche l'ouverture de l'application.
    La procédure ne doit pas être déclenchée depuis l'éditeur de macros.

    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
    Option Explicit
     
    Private Declare Function BringWindowToTop Lib "user32" _
        (ByVal Hwnd As Long) As Long
     
    Private Declare Function FindWindow Lib "user32" Alias _
        "FindWindowA" (ByVal lpClassName As String, _
        ByVal lpWindowName As String) As Long
     
    Private Declare Function ShowWindow Lib "user32" _
        (ByVal Hwnd As Long, ByVal nCmdShow As Long) As Long
     
     
    'Remarque importante:
    'La procédure ne doit pas être déclenchée depuis l'éditeur de macros /!\
    '
    Sub ApplicationPremierPlan()
        Dim Hwnd As Long
     
        'Récupère le Handle d'une fenêtre (la calculatrice dans cet exemple).
        'Le Handle est un nombre entier unique généré par Windows afin d'identifier les fenêtres.
        '"Calculatrice" correspond au titre de la fenêtre.
        Hwnd = FindWindow(vbNullString, "Calculatrice")
     
        'Si la calculatrice est déjà ouverte
        If Hwnd > 0 Then
            'Ramène la calculatrice au premier plan
            BringWindowToTop Hwnd
            'Affiche en mode "Normal"
            ShowWindow Hwnd, 1
            Else
            'Sinon, ouvre la calculatrice
            Shell "C:\WINDOWS\system32\calc.exe", vbNormalFocus
        End If
    End Sub

    http://excel.developpez.com/faq/?pag...pliPremierPlan

    cordialement,

    Didier

  6. #6
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonsoir,

    j'avais aussi ce problème, mais spécifiquement lorsque excel ouvrait des documents word. Et la solution fonctionnait.

    Voici le lien du post de l'époque. Les solutions semblent les mêmes.
    Mais j'ai peu-être trop vite regardé.

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir,

    Pourquoi se "casser la tête" à ce point ?
    1) relevé du hwnd de la fenêtre de départ (celle active, donc)
    2) se référer à ce handle pour la mettre au premier plan

    exemple depuis un UserForm (ici, on ouvre l'explorateur, puis on replace le UserForm au 1er plan) :

    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
    Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
     
    Const HWND_TOPMOST = -1
    Const HWND_NOTOPMOST = -2
    Const SWP_NOSIZE = &H1
    Const SWP_NOMOVE = &H2
    Const SWP_NOACTIVATE = &H10
    Const SWP_SHOWWINDOW = &H40
     
    Private Sub Command1_Click()
      monhwnd = FindWindow(vbNullString, Me.Caption)
      ret = Shell("explorer.exe", vbMaximizedFocus)
      DoEvents
      SetWindowPos monhwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
    End Sub
    depuis une feuille, il suffit de remplacer Me.Caption par le titre de la fenêtre ...

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/10/2014, 14h59
  2. [2.x] Exécuter une fonction quelle que soit la route
    Par Manuk dans le forum Symfony
    Réponses: 6
    Dernier message: 29/07/2011, 16h11
  3. Réponses: 2
    Dernier message: 09/01/2010, 01h00
  4. [XL-2003] Lancer une macro à l'ouverture d'Excel quel que soit le fichier
    Par EtyenH dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/05/2009, 08h50
  5. Sélectionner un champ quelle que soit sa valeur ?
    Par Evocatii dans le forum Requêtes
    Réponses: 13
    Dernier message: 28/03/2008, 08h53

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