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 :

Excel macro envoi fichier en cours via outlook


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juillet 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2014
    Messages : 46
    Par défaut
    Je suis un super novice en macro, mais je commence à les exploiter pour le boulot et je n'imaginais pas les possibilités qu'elles offrent..

    Bref je cherche à ajouter une macro qui enverrait le classeur actif par mail, toujours à la même adresse et toujours avec le même objet de message.
    Mais qui testerai d'abord qu'outlook est ouvert. Mais j'aimerai que si outlook est fermé une message-box m'informe et stop la macro en cours.
    Et enfin si outlook est ouvertil faut que le fichier soit enregistré sur la première feuille du classeur avant d’être envoyer.

    J'ai trouvé plusieurs message à se sujet, et j'arrive à faire chaque fonction indépendamment mais je n'arrive pas à les lier entre elles.

    Merci d'avance pour votre aide...

    A titre informatif voila où j'en suis

    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
    Sub EnvoiMail()
     
    Set appli_outlook = Outlook.Application
     
    If appli_outlook.ActiveWindow Is Nothing Then
     
    MsgBox "erreur envoi e_mail car outlook non chargé"
     
    End If
     
     
    Sheets("Commande ").Select
    Range("A1").Select
    ActiveWorkbook.Save
     
     
    Workbooks("Commande.xlsm").SendMail
    Recipients:="adress@mail.net", _
    Subject:="Test envoi classeur", _
     
     
    End Sub

  2. #2
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,

    j'ai juste une question avant de te répondre. Pourquoi stopper la macro si outlook n'est pas démarré?

  3. #3
    Membre averti
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juillet 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2014
    Messages : 46
    Par défaut
    C'est pas idiot ce que tu dis

    Je veux que ça soit simple et facile, pour que n'importe qui puisse le faire sans se poser de question.

    Dans l'idéal j'aurai même aimé qu'outlook s'ouvre s'il est fermé, mais ça je n'y arrive pas.
    Tu as raison la macro peux ne pas s'interrompre, puisque une fois outlook ouvert le fichier partira.

  4. #4
    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
    Bonjour,

    à ce stade, quels sont les problèmes non résolus à ton sujet ?


    Concernant la détection/ouverture d'une instance Outlook, regarde du côté de la fonction CreateObject dans l'aide

  5. #5
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    alors fait comme ça si cela concerne juste un mail
    ne t'inquietes pas de savoir si outlook est ouvert ou pas et lance juste une session que tu refermera une fois terminé

    par exemple :

    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
     
    Sub envoi_mail()
        Dim oApp As New Outlook.Application
        Dim oMailItem As Outlook.MailItem
     
        Set oMailItem = oApp.CreateItem(olMailItem)
     
        With oMailItem
            .To = "foo@mail.com"
            .Attachments.Add ActiveWorkbook.FullName
            .Send
        End With
     
        Set oMailItem = Nothing
        Set oApp = Nothing
    End Sub
    edit: ne pas oublier d'indiquer la référence à outlook dans les options de l'EDI via Tools=>Références ==>> cocher Microsoft Outlook xx Object Library

  6. #6
    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
    Bonjour mayekeul,

    pourquoi ne pas proposer une liaison tardive en utilisant une variable Object à instancier durant l'éxecution ?

    ça évite de cocher la référence en question.
    dans son contexte (aller au plus simple pour ses utilisateurs), ça serait stratégique non ?

    mais tu as peut être une raison que je ne vois pas en l'état

  7. #7
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour joe.levrai,

    c'est simplement didactique. En faisant comme cela, il aura accès a l'intellisense de VBA.

    Mais effectivement une meilleure pratique serait de tester si l'objet à instancier existe avant.
    Et évidemment ouvrir l'instance au bon moment.


  8. #8
    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
    Citation Envoyé par alolaterre Voir le message
    Je veux que ça soit simple et facile, pour que n'importe qui puisse le faire sans se poser de question.
    En fait c'est cette phrase qui m'a poussé à aborder cette problématique de distribution de la procédure.

    Quoi qu'il en soit, je pense que notre échange lui sera utile pour son perfectionnement

  9. #9
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    Non mais, je taquine un peu.

    Il doit retenir une chose de ces deux méthodes, et c'est ou je vais corriger ce que tu à écrit plus haut, il faut -dans "ma" méthode- s'assurer que le destinataires possède la même librairie. Dans le cas contraire, l'autre est plus adaptée.




  10. #10
    Membre averti
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juillet 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2014
    Messages : 46
    Par défaut
    Merci à tous pour cette éclairage (pas toujours clair pour moi mais j'en comprends les grandes lignes)

    J'ai plusieurs point de ventes et je dois dupliquer ce fichier, donc effectivement je préfère utiliser la liaison tardive, pour n'avoir qu'a envoyer le fichier sans passer par des paramétrages des différentes librairies de chaque poste.

    Mon problème actuel est que le code que je vous ai envoyé au début du post ne fonctionne pas (c'est un copié/collé de différente macro trouvées et je n'arrive pas à les "additionner" entre elles... ). J'aimerais que vous me donniez votre avis
    Je ne suis pas assez perfectionné pour comprendre chaque terme.

    Est il possible d'envoyer le classeur actif sans passer par outlook
    Jai supprimer les sécurités de ma messagerie mais malgré ca il me demande d'autoriser l'envoi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. envoi auto de mail via outlook, adresse dans un excel + pj
    Par delta07 dans le forum Microsoft Office
    Réponses: 2
    Dernier message: 11/06/2015, 14h36
  2. Envoi d'un mail via outlook avec l'option de vote
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/03/2008, 11h23
  3. Envoi d'un message via outlook
    Par STOUPI dans le forum Access
    Réponses: 1
    Dernier message: 06/06/2006, 14h42
  4. [Excel/Macro] Envoi d'Email après enregistrement
    Par Myogtha dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/11/2005, 09h15

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