Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/08/2011, 13h00   #1
Nouveau Membre du Club
 
Ousermaatre Setepenre
Inscription : mai 2010
Messages : 83
Détails du profil
Informations personnelles :
Nom : Ousermaatre Setepenre

Informations forums :
Inscription : mai 2010
Messages : 83
Points : 39
Points : 39
Par défaut de l'usage de message Outlook avec Excel

Bonjour à tous,

J'ai un petit programme qui génère un message dans Outlook.
Je voudrais, après avoir généré ce message et avant de l'envoyer, qu'Excel revienne en avant-plan.
Pour cela j'utilise le petit programme ci-après :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
Hwnd = FindWindow(vbNullString, "Microsoft Excel - Mon programme"
 
       Do While Hwnd1 = 0
            Hwnd1 = FindWindow(vbNullString, "Mon message Outlook - Message (HTML) ")
            newHour = Hour(Now())
            newMinute = Minute(Now())
            newSecond = Second(Now()) + 1
            waitTime = TimeSerial(newHour, newMinute, newSecond) 'temporisation
            Application.Wait waitTime
        Loop
 
        'Pour ramener Excel au premier plan
        BringWindowToTop Hwnd
        'Affiche en mode "Normal"
        ShowWindow Hwnd, 5
Cela ne fonctionne pas, vous vous en doutez car sinon je ne vous solliciterais pas. Le message reste en avant plan.

Quelqu'un pourrait-il m'expliquer pourquoi ?
setepenre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2011, 17h39   #2
Futur Membre du Club
 
Homme
Consultant MOA
Inscription : août 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant MOA
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : août 2011
Messages : 16
Points : 16
Points : 16
Bonjour,

Pour ma part voici comment je traite le problème:

Code :
1
2
3
4
5
6
7
Application.WindowState = xlMinimized
    If OtLk_App.Explorers.Count > 0 Then OtLk_App.ActiveWindow.WindowState = olMaximized
 
    Mail_Item.Display 'Place le mail dans la boite d'envoi
    Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 3)
    SendKeys "%{v}", True    If OtLk_App.Explorers.Count > 0 Then OtLk_App.ActiveWindow.WindowState = olMinimized
    Application.WindowState = xlMaximized
Je te laisse le soin d'adapter le code à ta convenance.

Cordialement
Yersin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2011, 09h25   #3
Nouveau Membre du Club
 
Ousermaatre Setepenre
Inscription : mai 2010
Messages : 83
Détails du profil
Informations personnelles :
Nom : Ousermaatre Setepenre

Informations forums :
Inscription : mai 2010
Messages : 83
Points : 39
Points : 39
Bonjour Yersin et merci pour ta réponse

Si je me débrouille en VBA, je ne suis toutefois pas un pro et certaines commandes me sont obscures voire inconnues notamment celles qui manipulent les objets Application.

Comment déclares-tu la variable "OtLk_App" ?
Pourrais-tu m'expliquer la "philosophie" de ta routine ?

Merci pour ton aide.
setepenre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 11h01   #4
Futur Membre du Club
 
Homme
Consultant MOA
Inscription : août 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant MOA
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : août 2011
Messages : 16
Points : 16
Points : 16
Pour La variable App :
Puis :
Code :
Set OtLk_App = CreateObject("Outlook.Application")
Sinon, pour les paramètres de OutLook, il ne faut pas oublié de les mettre en constante:
Code :
1
2
3
Const olByValue = 1 ' Constante pour l'ajout de pièce jointe
Const olMaximized = 0 ' Constante pour maximiser OutLook
Const olMinimized = 1 ' Constante pour minimiser OutLook
"Philosophie" me semble un bien grand mot. Disons, simplement qu'après avoir préparer le mail, je masque Excel et j'affiche Outlook afin de pouvoir passer le SendKey sans problème, ensuite je rétablie simplement la situation.

Cette méthode n'est pas parfaite et demande du temps. Essaye de chercher d'autres méthodes, type CDO, qui semble plus viable.

Yersin
Yersin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 15h08   #5
Nouveau Membre du Club
 
Ousermaatre Setepenre
Inscription : mai 2010
Messages : 83
Détails du profil
Informations personnelles :
Nom : Ousermaatre Setepenre

Informations forums :
Inscription : mai 2010
Messages : 83
Points : 39
Points : 39
OK, je te remercie pour ton aide.
Je vais essayer de faire avec cela.
Cela devrait au moins me familiariser avec la manipulation des objets "Application".
setepenre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h58.


 
 
 
 
Partenaires

Hébergement Web