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

  1. #1
    Membre régulier

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 94
    Points : 116
    Points
    116
    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 éclairé

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    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 éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    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
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  4. #4
    Membre éclairé

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    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 éminent
    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
    Points : 6 696
    Points
    6 696
    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
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

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

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

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    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é.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  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
    Points : 5 535
    Points
    5 535
    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 ...

  8. #8
    Membre régulier

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 94
    Points : 116
    Points
    116
    Billets dans le blog
    1
    Par défaut
    Bonjour et merci à tous.

    Malheureusement, aucune de ces techniques ne convient. En fait ca ne me ramène jamais excel au premier plan, et ca m'étonne pas mal.

    Si j'avais fait une erreur dans les reprises des codes que vous me montrez, quelles auraient t'elles pu être sachant que je n'ai pas d'erreur lors de l'execution ?

    Autre fil de recherche, le but en fait, est que la personne qui a ouvert le classeur excel, pense à le refermer pour ne pas en bloquer l'utilisation pour d'autres. C'est un soucis récurrent dès lors que plusieurs personnes travaillent sur un même fichier. J'ai bien tenter le travail en multiutilisateurs, mais a cause des macros contenus dans le classeur, ca ne fonctionne pas.
    N'y a t'il pas moyen d'alerter efficacement un utilisateur utilisant un classeur, que d'autres personnes essayent d'y accéder ?

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