Menu

Forcer la fenetre d'envoi outlook en premier plan Access 2013/16 [Résolu]

AstraLife 55 Messages postés lundi 2 octobre 2017Date d'inscription 16 novembre 2017 Dernière intervention - 23 oct. 2017 à 19:38 - Dernière réponse : AstraLife 55 Messages postés lundi 2 octobre 2017Date d'inscription 16 novembre 2017 Dernière intervention
- 28 oct. 2017 à 05:44
Bonjour,

Contexte : Macro qui prépare un mail avec pièce jointe.


Une fois mon mail préparé la fenêtre de la boite d'envoi d'outlook a tendance à rester derrière le formulaire de l'utilisateur de la base de donnée Access. j'ai essayé systemmodal mais je n'ai rien trouvé pour forcer la fenêtre outlook à revenir en premier plan

Mon bout de code final

' Initialisation :
Dim MonOutlook As Object
Dim MonMessage As Object
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.createitem(0)


' Préparation du message :
MonMessage.To = "xxxxxx.fr"
MonMessage.CC = "xxxxxx.fr"

' Récupération de la chaîne d'E-Mails Access :
MonMessage.To = ListeComplete
MonMessage.Subject = "Bilan de Production Courrier Industriel"
MonMessage.HTMLBody = corps

' Ajout de la signature
MonMessage.HTMLBody = MonMessage.HTMLBody & "<br/>" & "<br>" & Signature("Signature")

' Ajout des pièces jointes
MonMessage.Attachments.Add cheminfichier
MonMessage.Attachments.Add cheminfichier2
MonMessage.Attachments.Add cheminfichier3
MonMessage.display vbSystemModal

' supprimer le fichier pdf après envoi du message
Kill (cheminfichier)
Kill (cheminfichier2)
Kill (cheminfichier3)

Case vbNo

' procédure si click sur Non
End Select
End Sub
Afficher la suite 

11 réponses

Répondre au sujet
HDU 601 Messages postés mercredi 5 juillet 2017Date d'inscription 21 février 2018 Dernière intervention - 26 oct. 2017 à 02:47
0
Utile
6
Bonjour,

testes ceci :
Set OLk_appli = GetObject( "Outlook.Application") 
If OLk_Appli Is Nothing Then 
OLk_OK= Shell("C:\Program Files\Microsoft Office\Office10\OUTLOOK.EXE", 1) 
end if  


a+
AstraLife 55 Messages postés lundi 2 octobre 2017Date d'inscription 16 novembre 2017 Dernière intervention > AstraLife 55 Messages postés lundi 2 octobre 2017Date d'inscription 16 novembre 2017 Dernière intervention - 26 oct. 2017 à 17:22
J'ai placé le code comme ceci par contre j'ai une erreur d'execution, j'ai changé GetObject par CreateObject et ajouté la ligne Dim OLk_Appli As Object et je n'ai plus de message d'erreur.



' #######################################
' # 2. Envoi de l'E-Mail avec Outlook : #
' #######################################


 ' Initialisation :
Dim MonOutlook As Object
Dim MonMessage As Object
Dim OLk_Appli As Object
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.createitem(0)
Set OLk_Appli = CreateObject("Outlook.Application")

' nom du fichier pdf temporaire
cheminfichier = "U:\Public\3.Production\commun\organisation\Export_GPF_(ne pas modifier)\Tempo_EMAIL\E72_BILAN_LD_Rech.pdf"
cheminfichier2 = "U:\Public\3.Production\commun\organisation\Export_GPF_(ne pas modifier)\Tempo_EMAIL\B72_RETARD_BILAN_LD_Rech.pdf"

' Préparation du message :
MonMessage.To = "orga.pic-villeneuve@laposte.fr"
MonMessage.CC = "orga.pic-villeneuve@laposte.fr"

' Récupération de la chaîne d'E-Mails Access :
MonMessage.To = ListeComplete
MonMessage.Subject = "Bilan de Production Lettre Départ"
MonMessage.HTMLBody = corps

' Ajout de la signature
MonMessage.HTMLBody = MonMessage.HTMLBody & "<br/>" & "<br>" & Signature("Signature")

' Ajout des pièces jointes
MonMessage.Attachments.Add cheminfichier
MonMessage.Attachments.Add cheminfichier2
MonMessage.display vbSystemModal = False

If OLk_Appli Is Nothing Then
OLk_OK = Shell("C:\Program Files\Microsoft Office\Office10\OUTLOOK.EXE", 1)
End If



' supprimer le fichier pdf après envoi du message
Kill (cheminfichier)
Kill (cheminfichier2)

End Sub
HDU 601 Messages postés mercredi 5 juillet 2017Date d'inscription 21 février 2018 Dernière intervention > AstraLife 55 Messages postés lundi 2 octobre 2017Date d'inscription 16 novembre 2017 Dernière intervention - 26 oct. 2017 à 23:09
et du coup, cela fonctionne ou pas ???
AstraLife 55 Messages postés lundi 2 octobre 2017Date d'inscription 16 novembre 2017 Dernière intervention > HDU 601 Messages postés mercredi 5 juillet 2017Date d'inscription 21 février 2018 Dernière intervention - 27 oct. 2017 à 08:16
J'ai réalisé un test en cliquant sur la barre des taches pendant le traitement du code de préparation du mail et non, la fenêtre Outlook clignote dans la barre des taches et donc n'apparait pas en premier plan à la fin de la procédure.
HDU 601 Messages postés mercredi 5 juillet 2017Date d'inscription 21 février 2018 Dernière intervention > AstraLife 55 Messages postés lundi 2 octobre 2017Date d'inscription 16 novembre 2017 Dernière intervention - 27 oct. 2017 à 17:14
si elle clignote, c'est qu'il doit il y avoir un message qui attend une réponse de ta part...
AstraLife 55 Messages postés lundi 2 octobre 2017Date d'inscription 16 novembre 2017 Dernière intervention > HDU 601 Messages postés mercredi 5 juillet 2017Date d'inscription 21 février 2018 Dernière intervention - 27 oct. 2017 à 18:47
Quand je clic sur la fenêtre Outlook qui clignote dans la barre des tâches ça m'ouvre simplement la fenêtre d'envoi Outlook chargés des pièces jointes, contacts et signature de l'utilisateur, libre de modification par l'utilisateur avec

MonMessage.display vbSystemModal = False


Aucun message n'attend une réponse sur Outlook mais par contre, sur le formulaire ou j'appel la macro, il y à un message de fin de procédure qui attend un oui

<code>Unload UserFormLA
MsgBox "Chargements des données vers Outlook terminé.", vbOKOnly + vbInformation, "xxxxxxx 92"
</code>

J'ai enlevé ce msgbox et fait un test mais c'est pareil si l'on clique sur la barre des taches pendant la procédure alors la fenêtre d'envoi Outlook apparaîtra dans la barre des taches et non en premier plan, après je pense pas que quand on utilise une procédure on est besoin de cliquer dans le vide pour rien mais je voulais pousser la gestion d'erreur au max. hors mis cela la fenêtre s'ouvre dans 90% des cas en premier plan devant le formulaire de la base de données.
Commenter la réponse de HDU
HDU 601 Messages postés mercredi 5 juillet 2017Date d'inscription 21 février 2018 Dernière intervention - 27 oct. 2017 à 19:50
0
Utile
C'est bizarre qu'elle clignote, généralement, c'est que l'appli attend une réponse de l'utilisateur....

La question est : dans les 10%, il y a un point commun ???
Commenter la réponse de HDU
HDU 601 Messages postés mercredi 5 juillet 2017Date d'inscription 21 février 2018 Dernière intervention - 27 oct. 2017 à 19:55
0
Utile
2
Je remplacerait aussi
MonMessage.display vbSystemModal = False


par
MonMessage.display

AstraLife 55 Messages postés lundi 2 octobre 2017Date d'inscription 16 novembre 2017 Dernière intervention - 28 oct. 2017 à 04:31
Un exemple qui rentre dans les 10% des cas,

Je travail sur 2 écrans, sur l’ecran de gauche, qui est mon écran principal, je lance la procédure depuis la base access et pendant le traitement je clique sur l’ecran de droite, par exemple pour ouvrir un fichier Excel, forcément la fenêtre Outlook du mail s’ouvre dans la barre des tâches et non en premier plan sur l’ecran de gauche.

La plus part des utilisateurs, a mon travail, utilisent qu’un seul écran donc je ne pense pas que le problème ce présente, j’ai juste remarqué cela sur mon poste à moi car j’ai 2 écrans.

Je vais tester en enlevant systemmodal, je voulais juste que l’uitilisateur ne puisse pas retourner sur la base de donnée tant qu’il n’a pas fermer son mail, soit il l’envoi soit il l’enregistre et retour sur le formulaire.
AstraLife 55 Messages postés lundi 2 octobre 2017Date d'inscription 16 novembre 2017 Dernière intervention > AstraLife 55 Messages postés lundi 2 octobre 2017Date d'inscription 16 novembre 2017 Dernière intervention - 28 oct. 2017 à 05:44
J'ai enlevé vbsystemModal et refait un test en cliquant dans la barre des taches pendant l'execution du code et c'est bon Outlook s'ouvre au premier plan quand meme.

Ca semble bon, merci.
Commenter la réponse de HDU