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 :

Garder Excel au premier plan


Sujet :

Macros et VBA Excel

  1. #1
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut Garder Excel au premier plan
    Bonjour à tous,

    Depuis mon applicatif Excel, j'ouvre l'Application Outlook si celle-ci est fermée.

    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
    Sub Test_Open_Outlook()
     
    Dim Chemin As String
    Chemin = "C:\Program Files (x86)\Microsoft Office\root\Office16\OUTLOOK.exe"
     
    Dim Appli As Object
    Dim session_Outlook As New Outlook.Application
    Dim Ole_appli As Object
     
    On Error Resume Next
    Set Appli = GetObject(, "Outlook.Application")
     
    If Appli Is Nothing Then
          'Ouvre Outlook
            session_Outlook = Shell(Chemin, 1)
    Else
            'Fermeture de l'application Outlook si ouverte et réouverture d'une nouvelle
            Set Ole_appli = CreateObject("Outlook.Application")
            Ole_appli.Quit
            session_Outlook = Shell(Chemin, 1)
    End If
     
     
    Set Ole_appli = Nothing
    Set Appli = Nothing
     
    End Sub
    Mon problème est que si Outlook n'est pas activé, la procédure ouvre bien une session Outlook mais celle-ci reste au premier plan.
    Après avoir regardé le descriptif de la méthode Shell, j'ai changé le 2nd argument mais rien n'y fait.

    Merci!

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, à voir mais cela a dû être déjà fait ? sinon voir aussi ici

  3. #3
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour,

    comme indiqué dans l'aide VBA interne, voir déjà du côté de l'instruction   AppActivate   …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  4. #4
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Merci à vous deux pour vos réponses.

    A Marc:

    La méthode AppActivate "Microsoft Excel" ne donne rien sur mon poste.

    A Kiki :

    En voulant tester le code correspondant à ton premier lien, j'ai fermé mon applicatif après l'avoir sauvegardé.
    A sa réouverture, la fenêtre porte son nom suffixé
    .xlsm:1
    Pourquoi ce :1

    Merci bien en tout cas.
    Demain, j'effectuerai un 2ème test.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  5. #5
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Comme indiqué par Kiki, j'ai adapté le code figurant dans la FAQ
    Cette opération m'a formé sur les "Handle"
    Mais sans succès.
    La variable Long Hwnd est bien retournée mais les méthodes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Ramène Excel au premier plan
    BringWindowToTop Hwnd
    'Affiche en mode "Normal"
    ShowWindow Hwnd, 1
    sont sans effet.

    Code complet:

    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
    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
     
    Sub Test_Open_Outlook()
     
    Dim Chemin As String
    Chemin = "C:\Program Files (x86)\Microsoft Office\root\Office16\OUTLOOK.exe"
     
    Dim Appli As Object
    Dim session_Outlook As New Outlook.Application
    Dim Ole_appli As Object
     
    On Error Resume Next
    Set Appli = GetObject(, "Outlook.Application")
     
    If Appli Is Nothing Then
          'Ouvre Outlook
            session_Outlook = Shell(Chemin, 1)
    Else
            'Fermeture de l'application Outlook si ouverte et réouverture d'une nouvelle
            Set Ole_appli = CreateObject("Outlook.Application")
            Ole_appli.Quit
            session_Outlook = Shell(Chemin, 1)
    End If
     
    Set Ole_appli = Nothing
    Set Appli = Nothing
     
    Call Excel_premier_plan
     
    End Sub
     
    Sub Excel_premier_plan()
     
    'Voir FAQ Développez.com
    'https://excel.developpez.com/faq/?page=Automation#AppliPremierPlan
     
    'Remarque importante:
    'La procédure ne doit pas être déclenchée depuis l'éditeur de macros /!\
     
    Dim Hwnd As Long
     
    'Récupère le Handle d'une fenêtre
    'Le Handle est un nombre entier unique généré par Windows afin d'identifier les fenêtres.
    '2ème argument = titre de la fenêtre.
     
    Hwnd = FindWindow(vbNullString, ThisWorkbook.Name & " - Excel")
    If Hwnd = 0 Then _
          Hwnd = FindWindow(vbNullString, ThisWorkbook.Name & ":1 - Excel")
     
    Debug.Print "Hwnd : " & Hwnd
     
    'Ramène Excel au premier plan
    BringWindowToTop Hwnd
    'Affiche en mode "Normal"
    ShowWindow Hwnd, 1
     
    Application.WindowState = xlMaximized
     
    End Sub
    Si un sachant peut tester.

    Merci

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re exel au premier
    salut MarcelG

    somme toute pas de quoi fouter un chat
    la fonction setwindowpos de l'api user32 fait cela mieux que toutes les autre et pas besoins d'autre api ni meme!!! findwindow
    seul petit probleme il lui faut les cote de la fenetre EN PIXEL!!! ce qui implique encore d'autre fonction de conversion pointtopixel
    que j'aurais pu te donner
    mais comme c'est juste pour un "infirstplan" on va faire simple

    on va utiliser setwindowpos avec le cote 0 0 0 0 en ayant préalablement memoriser les cotes de ta fenetre application
    voila la fentre est au premier plan mais toute petite
    que cela te tienne on la remet au cote et position initiale
    elle restera en firstplan

    1°declaration de l'api a adapter si tu travail avec excel ebn 64 bits



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

    2°pour la mettre en first plan


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub first_in_plan()
        Dim app, posioton, L, T, W, H
        Set app = Application
        T = app.Top: L = app.Left: W = app.Width: H = app.Height
         Position = SetWindowPos(app.Hwnd, -1, 0, 0, 0, 0, 0)
        app.Top = T: app.Left = L: app.Width = W: app.Height = H
    End Sub


    3°pour la sortir du firstplan


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub No_first_in_plan()
        Dim app, posioton, L, T, W, H
        Set app = Application
        T = app.Top: L = app.Left: W = app.Width: H = app.Height
        Position = SetWindowPos(app.Hwnd, -2, 0, 0, 0, 0, 0)
        app.Top = T: app.Left = L: app.Width = W: app.Height = H
    End Sub
    salut Marcel
    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

  7. #7
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    Je pense avoir trouvé en appliquant le code retourné par le 2ème lien de Kiki.

    Préliminaire
    Gestion poste 32 Bits/64 Bits

    la ressource développement utilisée est ici

    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
    Option Explicit
     
     Public 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
     
    Public Const SWP_NOSIZE = &H1
    Public Const SWP_NOMOVE = &H2
    Public Const HWND_TOPMOST = -1
    Public Const HWND_NOTOPMOST = -2
     
    ''https://www.extendoffice.com/documents/excel/2030-keep-excel-window-on-top.html
     
    Sub Test_Open_Outlook()
     
    Dim Chemin As String
    Chemin = "C:\Program Files (x86)\Microsoft Office\root\Office16\OUTLOOK.exe"
     
    Dim Appli As Object
    Dim session_Outlook As New Outlook.Application
    Dim Ole_appli As Object
     
    Dim typouv As Byte
    typouv = 1
     
    On Error Resume Next
    Set Appli = GetObject(, "Outlook.Application")
     
    Call ShowXLOnTop(True)
     
    If Appli Is Nothing Then
          'Ouvre Outlook
            session_Outlook = Shell(Chemin, typouv)
    Else
            'Fermeture de l'application Outlook si ouverte et réouverture d'une nouvelle
            Set Ole_appli = CreateObject("Outlook.Application")
            Ole_appli.Quit
            session_Outlook = Shell(Chemin, typouv)
    End If
     
    Set Ole_appli = Nothing
    Set Appli = Nothing
     
    Call ShowXLOnTop(False)
     
    End Sub
     
    Sub ShowXLOnTop(ByVal OnTop As Boolean)
        Dim xStype As Long
     
    Dim xHwnd As Long
     
    If OnTop Then
            xStype = HWND_TOPMOST
        Else
            xStype = HWND_NOTOPMOST
        End If
        Call SetWindowPos(Application.hwnd, xStype, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE)
    End Sub
    2 remarques selon mon usage:
    - Procédure à activer hors éditeur VBE
    - Bien placer les 2 appels de procédure
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call ShowXLOnTop(False)
    Si quelqu'un détient l'adresse d'un tutoriel sur Public Declare Fonction, user32... alors je suis preneur.

    Merci Kiki

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  8. #8
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut Patrick,

    Content de te retrouver.

    Nos envois se sont croisés.
    Je regarde bien entendu

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    dans mon exemple pour ton cas si je ne me trompe pas
    c'est Ole_appli.hwnd a la place de app.hwnd
    et bien sur pour les dim et position aussi
    en gros partout c'est Ole_appli a la place de app
    si ca ne fonctionne pas alors findwindow(vbnullstring,Ole_appli .caption) a la place de app.hwnd
    en ayant fait la declaration de la fonction bien sur
    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
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    J'avoue être débutant dans ce genre de développement.
    Comme avant ton arrivée, Patrick, je voulais mettre en premier plan Excel pour pouvoir ouvrir Outlook en arrière plan mais enlever ensuite cette position pour pouvoir accéder aux autres documents (Word, Pdf...)


    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
    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
     
    Sub Test_Open_Outlook_PatrickToulon()
     
    Dim Chemin As String
    Chemin = "C:\Program Files (x86)\Microsoft Office\root\Office16\OUTLOOK.exe"
     
    Dim Appli As Object
    Dim session_Outlook As New Outlook.Application
    Dim Ole_appli As Object
     
    Dim typouv As Byte
    typouv = 1
     
    On Error Resume Next
    Set Appli = GetObject(, "Outlook.Application")
     
    Call first_in_plan
     
    If Appli Is Nothing Then
          'Ouvre Outlook
            session_Outlook = Shell(Chemin, typouv)
    Else
            'Fermeture de l'application Outlook si ouverte et réouverture d'une nouvelle
            Set Ole_appli = CreateObject("Outlook.Application")
            Ole_appli.Quit
            session_Outlook = Shell(Chemin, typouv)
    End If
     
    Set Ole_appli = Nothing
    Set Appli = Nothing
     
    Call No_first_in_plan
     
    End Sub
     
    Sub first_in_plan()
        Dim Ole_appli, posioton, L, T, W, H
        Set Ole_appli = Application
        T = Ole_appli.Top: L = Ole_appli.Left: W = Ole_appli.Width: H = Ole_appli.Height
         position = SetWindowPos(Ole_appli.Hwnd, -1, 0, 0, 0, 0, 0)
        Ole_appli.Top = T: Ole_appli.Left = L: Ole_appli.Width = W: Ole_appli.Height = H
    End Sub
     
    Sub No_first_in_plan()
        Dim Ole_appli, posioton, L, T, W, H
        Set Ole_appli = Application
        T = Ole_appli.Top: L = Ole_appli.Left: W = Ole_appli.Width: H = Ole_appli.Height
        position = SetWindowPos(Ole_appli.Hwnd, -2, 0, 0, 0, 0, 0)
        Ole_appli.Top = T: Ole_appli.Left = L: Ole_appli.Width = W: Ole_appli.Height = H
    End Sub
    Je l'avoue: j'ai copié/collé ton code vu l'urgence.
    Il s'active sans erreur mais aussi sans succès.
    Quelle ligne est à modifier?

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Bonsoir marcel
    je comprends pas tres bien tu ouvre avec shell ou createobject??????

    si tu ouvre avec shell c'est une routine qui va te falloir pour trouver la bonne caption pour chopper le hwnd(hadle) de la fentre
    si tu l'ouvre par createobject du devrais pouvoir chopper la capption par ole_ap......
    ensuite c'est quoi excel ou outlook que tu veux au first plan ???
    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

  12. #12
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Bonjour,


    Citation Envoyé par MarcelG Voir le message
    La méthode AppActivate "Microsoft Excel" ne donne rien sur mon poste.

    Il faut utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AppActivate Application.Caption

  13. #13
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    de ja tu injecte pas Ole_appli dans les sub donc Ole_appli endur dans le code vallent 0

    test juste ca dans un fichier vierge et dis moi ce que donne le msgbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Test_Open_Outlook_PatrickToulon()
       Set OL = CreateObject("Outlook.Application")
     Set Mail = OL.CreateItem(0)
     With Mail
     .To = "toto@gmail.com"
     .Subject = "test_envoi"
     .Body = "BLABLA"
     .Display
     
     MsgBox OL.Hwnd
     '.Send
     End With
     End Sub
    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

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonsoir harkam46
    AppActivate Application.Caption affiche au premier plan mais ne la fige pas je me trompe?

    si le code vba tourne apres cette ligne et vbe est ouvert c'est vbe qui reprends le dessus
    du moins je crois je ne peux pas testé j'ai jamais configuré outlook
    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

  15. #15
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    AppActivate Application.Caption affiche au premier plan mais ne la fige pas je me trompe?
    Bonsoir,
    Ben oui mais ça suffit normalement. Il suffit de remettre Excel au premier plan après avoir ouvert Outlook.
    Et puis mieux vaut faire simple quand on maîtrise pas les API Windows.

  16. #16
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour Arkham et Patrick
    Merci à vous
    Bonjour le Forum,

    Au temps pour moi.
    Dans mon post, il y a en effet redondance et.
    (A l'origine, je voulais lancer Outlook par Shell)

    Ton code proposé, Patrick, pour lequel, comme toujours, je préfère déclarer les variables

    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
    Sub Test_Open_Outlook_PatrickToulon()
     
    Dim ol As Outlook.Application
    Dim mail As Outlook.MailItem
     
     Set ol = CreateObject("Outlook.Application")
     Set mail = ol.CreateItem(0)
     
     With mail
          .To = "marcelg@yoyo.fr"
          .Subject = "test_envoi"
          .Body = "BLABLA"
          .Display
          MsgBox ol.Hwnd
          '.Send
     End With
     
     Set mail = Nothing
     Set ol = Nothing
     
    End Sub
    Ce code me retourne une erreur 438
    Propriété ou méthode non gérée par cet objet
    Et ce même si je déclare les 2 variables en Variant, ce que j'évite en général.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  17. #17
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    oui c'est vrai j'ai testé on le chope pas comme ca le handle

    je pense qu'il n'y a pas d'autre solution que ma function windowlist pour retrouver le handle de outlook je vais essayer de la retrouver dans mes archives
    et aussi tester autre chose de plus simple et reviens vers toi

    apres Marcel si je m'en refere au titre de ton post a savoir excel en firstplan je t'ai donné la solution pour la figer en premier plan et Arkham46 t'a donné la solution juste pour la ramener en premier plan

    en ce qui concerne outlook je comprends pas tres bien ce que tu veux en fait premier plan ou pas ???
    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

Discussions similaires

  1. Comment Ramener Excel au premier plan
    Par Godzestla dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 18/01/2017, 19h28
  2. fenetre excel au premier plan
    Par mike42 dans le forum VBA Access
    Réponses: 2
    Dernier message: 13/09/2009, 16h30
  3. Ourvrir Excel au premier plan
    Par curt dans le forum IHM
    Réponses: 7
    Dernier message: 31/12/2008, 02h57
  4. [ VBA / EXCEL ] Fenêtre Excel au Premier Plan
    Par mike42 dans le forum Access
    Réponses: 1
    Dernier message: 14/06/2006, 12h55
  5. Ramener Excel au premier plan
    Par Keiko dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 19/04/2006, 20h14

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