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 :

Communication entre Excel et Outlook


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2020
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2020
    Messages : 107
    Par défaut Communication entre Excel et Outlook
    Bonjour,

    Je me permets de faire appel aux compétences des spécialistes sur le forum, car je ne trouve pas la solution à une macro. Elle est un peu inhabituelle pour moi, car elle fait appel à Excel, mais aussi à Outlook. Je m'explique: la macro doit ouvrir Outlook (si Outlook n'est pas déjà ouvert), lancer un nouveau message (dont le corps récupère des données dans le fichier Excel et doit l'adresser à un destinataire qui peut varier selon l'utilisateur). Excel fait tout correctement (les données sont correctes, le destinataire aussi), mais il arrive que le message d'Outlook reste "sous" Excel. En clair, l'utilisateur peut avoir l'impression que rien ne s'est passé... et relancer la macro. D'après mes essais, le résultat est variable et aléatoire: parfois Outlook s'affiche bien devant, mais parfois il reste derrière (dans les deux cas, le message est toujours correct). J'ai passé par ChatGPT, qui m'a fourni plusieurs macros. Celle ci-dessous est la plus aboutie, mais elle ne réussit pas toujours à afficher Outlook devant.

    Quelqu'un a-t-il une idée d'instruction qu'il faudrait ajouter/corriger pour forcer l'affichage d'Outlook en premier plan?

    Merci d'avance pour votre intérêt et vos réponses!


    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
    Sub Demande_validation()
        ' Désactiver les mises à jour de l'interface utilisateur
        Application.ScreenUpdating = False
        Application.EnableEvents = False
     
        ' Déclarer les variables
        Dim NomUtilisateur As String
        Dim OutlookApp As Object
        Dim OutlookMail As Object
        Dim MailBody As String
        Dim Destinataire As String
        Dim stRech As String
        Dim c As Range
        Dim col As Integer
     
        ' Récupérer le nom d'utilisateur
        NomUtilisateur = …
     
     
        ' Créer une instance de l'application Outlook
        On Error Resume Next
        Set OutlookApp = GetObject(, "Outlook.Application")
        If OutlookApp Is Nothing Then
            Set OutlookApp = CreateObject("Outlook.Application")
        End If
        On Error GoTo 0
     
        ' Créer un nouvel e-mail
        Set OutlookMail = OutlookApp.CreateItem(0)
     
        ' Contenu du message
        MailBody = …
     
        ' Déterminer le destinataire en fonction de l'utilisateur
        Select Case NomUtilisateur
            Case …
     
            Case ElseEnd Select
     
        ' Activer la mise à jour de l'écran avant d'afficher le courriel
        Application.ScreenUpdating = True
     
        ' Définir les propriétés du message
        With OutlookMail
            .To = Destinataire
            .Subject = "Demande de validation"
            .Body = MailBody
            .Display ' Afficher le message
        End With
     
        ' Laisser à Outlook le temps d'ouvrir la fenêtre
        DoEvents
     
        ' Forcer l'activation d'Outlook pour qu'il passe devant
        OutlookApp.ActiveWindow.WindowState = 2 ' Mettre Outlook en mode fenêtre normale
        OutlookApp.ActiveWindow.Activate ' Activer la fenêtre Outlook
     
        ' Libérer les objets Outlook
        Set OutlookMail = Nothing
        Set OutlookApp = Nothing
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 406
    Par défaut
    A tester, après le DoEvents:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AppActivate Application.Caption
    Cordialement.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Hello,

    Commence par retirer ceci (et autres cochonneries similaires):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Premature optimisation is the root of all evil.
    (Donald Knuth).

Discussions similaires

  1. Communication entre EXCEL et une base de donnée MYSQL
    Par Fallis dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/04/2013, 17h06
  2. [Exchange 2003] contrôle de l'intervalle de communication entre le client outlook et le serveur Exchange
    Par maikess dans le forum Exchange Server
    Réponses: 6
    Dernier message: 06/04/2010, 14h09
  3. ms query: problème de communication entre excel et access
    Par haddani dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 05/04/2010, 21h51
  4. Communication entre Excel et Access
    Par sylvia94 dans le forum Access
    Réponses: 4
    Dernier message: 13/01/2006, 13h43

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