Signaler

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

Posez votre question AstraLife 52Messages postés lundi 2 octobre 2017Date d'inscription 4 novembre 2017 Dernière intervention - Dernière réponse le 28 oct. 2017 à 05:44 par AstraLife
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
Utile
+0
plus moins
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 52Messages postés lundi 2 octobre 2017Date d'inscription 4 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
Répondre
HDU 580Messages postés mercredi 5 juillet 2017Date d'inscription 6 novembre 2017 Dernière intervention - 26 oct. 2017 à 23:09
et du coup, cela fonctionne ou pas ???
Répondre
AstraLife 52Messages postés lundi 2 octobre 2017Date d'inscription 4 novembre 2017 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.
Répondre
HDU 580Messages postés mercredi 5 juillet 2017Date d'inscription 6 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...
Répondre
AstraLife 52Messages postés lundi 2 octobre 2017Date d'inscription 4 novembre 2017 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.
Répondre
Donnez votre avis
Utile
+0
plus moins
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 ???
Donnez votre avis
Utile
+0
plus moins
Je remplacerait aussi
MonMessage.display vbSystemModal = False


par
MonMessage.display

AstraLife 52Messages postés lundi 2 octobre 2017Date d'inscription 4 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.
Répondre
AstraLife 52Messages postés lundi 2 octobre 2017Date d'inscription 4 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.
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !