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 :

Problème macro ouverture Outlook a l'arrière plan avec la fonction Shell


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Par défaut Problème macro ouverture Outlook a l'arrière plan avec la fonction Shell
    Bonjour à tous,

    Je bloque depuis 2 jours sur une macro afin d'envoyer automatiquement un mail depuis Excel. En effet, je souhaite tester si Outlook est déjà ouvert sur le PC avant l'envoi du mail et s'il ne l'est pas alors l'ouvrir et le mettre à l'arrière plan. Pour couvrir et minimizer j'utilise la fonction Shell (Chemin, vbhide) - vous trouverez le code un peu plus bas.

    Lorsque j'exécute cette macro en mode pas à pas, je n'ai aucun problème. Lorsque je l'exécute en mode "normal", Outlook s'ouvre puis reste en premier plan. Après plusieurs recherches, j'ai trouvé une macro qui est supposée réduire Outlook, mais la encore rien ne se passe. Je ne comprends pas d'ou vient le problème et j'espère que vous pourrez m'aider.

    Voici mon code :

    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
    'Macro de test de test d'ouverture d'outlook
    Sub TestOuvertureOutlook()
    Set OLk_Appli = CreateObject("Outlook.Application")
    Dim NomClasseur As String
    NomClasseur = ThisWorkbook.Name
     
      If OLk_Appli.Explorers.Count > 0 Then
        'Outlook est ouvert
     
      Else
        'Outlook est fermé
        OLk_OK = Shell("C:\Program Files (x86)\Microsoft Office\root\Office16\OUTLOOK.EXE", vbHide)
     
      End If
     
    Call MiniOutlook
    'Windows(NomClasseur).Activate
    End Sub
     
    'Macro de réduction d'outlook
    Sub MiniOutlook()
      On Error Resume Next
     
     
      With GetObject(, "Outlook.Application")
        .ActiveWindow.WindowState = 1   ' olMinimized = 1
      End With
    End Sub
    Merci bien
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Par défaut
    Slaut Dysorthographie !

    Merci pour ta réponse mais lapartie édition du mail fonctionne chez moi (pas présente dans la macro).

    Par contre, au moment ou je lance la macro et qu'Outlook est fermé, après son ouverture, il reste au premier plan. Or je souhaiterai que l'Excel reste visible par l'utilisateur.

    Il semble que dans la fonction Shell (chemin, vbHide), le vbHide ne fonctionne pas (sauf en pas à pas). Je ne sais pas quoi faire.

  4. #4
    Invité
    Invité(e)
    Par défaut
    nom dans ma fonction!

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Par défaut
    dysorthographie : "nom dans ma fonction! "

    La tu m'as perdu, je ne suis plus..

  6. #6
    Invité
    Invité(e)
    Par défaut
    si dans ton code te appel disply tu reste affiché, mais avec send tue referme la session!

    bien sur j'ouvre une deuxième session mais je la referme au send!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    '.Display 'Can be .Send but prompts for user intervention before sending without 3rd party software like ClickYes
        .Send

  7. #7
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Shell pour lancer outlook ? alors que tu utilises du createobject ? Moi aussi ça me surprend

    voici ma fonction perso pour chopper l'instance outlook si elle existe, ou à défaut l'ouvrir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub InitialisationOutlook()
        On Error Resume Next: Set OlApp = GetObject(, "Outlook.Application"): On Error GoTo 0
        If OlApp Is Nothing Then Set OlApp = CreateObject("Outlook.Application")
        Set OlNmSpace = OlApp.GetNamespace("MAPI")
    End Sub
    OlApp et OlNmSpace sont déclaré en public (As Object)

    pour ne pas voir l'instance Outlook, il suffit de rendre l'application non visible (OlApp.Visible = False)

  8. #8
    Expert éminent
    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
    Par défaut

    Bonjour,

    ou encore d'utiliser la méthode VBA   ActivateMicrosoftApp   entre autres …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  9. #9
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Par défaut
    BOnjour JOE,

    J'ai essayé ta macro en déclarant OlApp et OlNmSpace As Object mais l'application outlook refuse de se lancer.. je ne comprends pas pourquoi..

  10. #10
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Pas totalement certain de la qualité de ma mémoire, mais je crois me rappeler que sur un OS avec UAC, l'application appelée en automation doit l'être dans le même contexte de sécurité que celui de l'application appelante.
    Ce qui veut dire que si l'application appelante est par exemple exécutée en tant qu'administrateur, l'instance de l'application appelée doit elle aussi être exécutée en tant qu'administrateur.
    A vérifier ...

  11. #11
    Invité
    Invité(e)
    Par défaut
    Le problème vient de la configuration de Outlook n'autorise pas l'exécution par une application tiers!

  12. #12
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Robert
    Outlook se prête bien à l'automation. Mais pas dans toutes les circonstances ... (et c'est peut-être, sinon sans doute sur le plan de la sécurité, assez heureux).
    Si des freins sont mis, la raison de tels freins n'est pas sans sens.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonjour unparia,
    Oui je suis d'accord, mais faut pas perdre d vue que Outlook verrouille sa prise en main par une application tiers par défaut à l'installation!

Discussions similaires

  1. Problème pour mettre des images en arrière plan
    Par BR2FR dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 25/02/2011, 14h24
  2. Réponses: 1
    Dernier message: 15/10/2010, 23h03
  3. problème macro ouverture
    Par the_djjd dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/04/2009, 17h18
  4. Problème fenêtre arrière-plan avec fvwm
    Par okuri dans le forum Linux
    Réponses: 0
    Dernier message: 26/03/2009, 15h13

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