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

VBA Outlook Discussion :

Extraction des PJ Outlook dans VBA Excel


Sujet :

VBA Outlook

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    juin 2019
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : juin 2019
    Messages : 55
    Points : 16
    Points
    16
    Par défaut Extraction des PJ Outlook dans VBA Excel
    Bonjour

    J'ai trouvé un code qui permets de faire l'action citée en objet:

    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
     
    'la procédure se lance à la réception d'un nouveau mail
    Private Sub Application_NewMail()
    Call sauvegardePJ
    End Sub
    'procédure de sauvegarde
    Sub sauvegardePJ()
        Dim MonApp As Outlook.Application
        Dim MonNameSpace As Outlook.NameSpace
        Dim MonDossier As Outlook.Folder
        Dim MonMail As Outlook.MailItem
        Dim numero As Integer
        Dim strAttachment As String
        Dim NbAttachments As Integer
        Dim chemin As String
        'Instance des objets
        Set MonApp = Outlook.Application
        Set MonNameSpace = MonApp.GetNamespace("MAPI")
        Set MonDossier = MonNameSpace.GetDefaultFolder(olFolderInbox)
        numero = MonDossier.Items.Count
        Set MonMail = MonDossier.Items(numero)
    'chemin de destination des pièces jointes
        chemin = "C:\Documents and Settings\Mes documents\"
        NbAttachments = MonMail.Attachments.Count
        'contrôles possibles:nom de l'expéditeur, adresse mail expéditeur et sujet du mail
            'MonMail.SenderName= ""
            'MonMail.SenderEmailAddress
            'MonMail.Subject
            If MonMail.Subject = "Test" Then
                i = 1
                    Do While i <= NbAttachments
                    strAttachment = MonMail.Attachments.Item(i).FileName
                    MonMail.Attachments.Item(i).SaveAsFile chemin & strAttachment
                    i = i + 1
                    Loop
            End If
    End Sub
    Le soucis est que je m'imaginais qu'il suffisait d'activer la Reference MS Outlook pour le faire fonctionner mais visiblement c'est pas suffisant car j'ai l'erreur de compilation: "type defini par l'utilisateur non defini" et il surligne en bleu "Dim MonDossier As Outlook.Folder"


    J'ai parcouru aussi un papier sur l'automation Outlook à partir d'une appli VBA :
    https://docs.microsoft.com/fr-fr/off...ic-application

    Merci de l'aide.

  2. #2
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 733
    Points : 6 513
    Points
    6 513
    Billets dans le blog
    17
    Par défaut
    Bonjour,
    Avec une référence à "Microsoft Outlook 1x.0 object library" le code ne devrait pas provoquer d'erreur.

    Par contre, il n'enregistre les pj que du Mail comportant le plus grand index (c'est pas forcément le dernier !)

    la première partie ne se déclenchera pas dans ton cas car c'est un événement OUTLOOK et tu le lances avec Excel, il faudrait déclarer une variable Événementielle dans un module de classe.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    juin 2019
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : juin 2019
    Messages : 55
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    Bonjour,
    Avec une référence à "Microsoft Outlook 1x.0 object library" le code ne devrait pas provoquer d'erreur.
    j'ai la librairie 9.0 d'activée : est ce suffisant ?


    Citation Envoyé par Oliv- Voir le message
    la première partie ne se déclenchera pas dans ton cas car c'est un événement OUTLOOK et tu le lances avec Excel, il faudrait déclarer une variable Événementielle dans un module de classe.
    oulah ! ça fait une semaine que j'apprends le VBA ....

    Merci

  4. #4
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 733
    Points : 6 513
    Points
    6 513
    Billets dans le blog
    17
    Par défaut
    oui il faut la version d'installée.

    Si tu expliques clairement ce que tu veux faire on peut trouver une solution adaptée

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    juin 2019
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : juin 2019
    Messages : 55
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    Si tu expliques clairement ce que tu veux faire on peut trouver une solution adaptée
    Je souhaite recuperer des fichiers texte en piece jointe ( issues emails outlook )
    pour les importer dans excel pour faire du postraitement ( cette partie c'est bon j'ai un truc qui tourne ).
    Il me manque "juste " le bloc importation des pjs d'emails ( suivant date, expediteur, nom de la pj) sur disque dur. J'ai donc trouver des choses sur le forum ( Merci Oliv- !) et sur le net mais que je n'arrive pas à faire tourner directement dans excel VBA pour les raisons expliquées plus haut.
    Merci !

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    juin 2019
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : juin 2019
    Messages : 55
    Points : 16
    Points
    16
    Par défaut
    J'ai toujours un message d'erreur :

    Nom : msgerror.jpg
Affichages : 63
Taille : 161,2 Ko

    malgré avoir installé la librairie Office 14.0:
    Nom : msg.jpg
Affichages : 57
Taille : 147,1 Ko

  7. #7
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 733
    Points : 6 513
    Points
    6 513
    Billets dans le blog
    17
    Par défaut
    EUH c'est la librairie OUtlook qu'il faut pas office
    "Microsoft Outlook 9.0 object library"

  8. #8
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    juin 2019
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : juin 2019
    Messages : 55
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    EUH c'est la librairie OUtlook qu'il faut pas office
    "Microsoft Outlook 9.0 object library"
    Bonjour

    J'ai telecharge MS Office 14 Library : ça devrait contenir celle de Outlook puisque c'est dans le package ?
    Sion je veux bien qu' on m'explique( un lien svp ?) comment trouver la librairie Outlook car impossible de trouver sur le net la version 14.0 qui semble être sortie avec Office 2010 qui tourne en version portable sur mon PC.
    Merci

  9. #9
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 733
    Points : 6 513
    Points
    6 513
    Billets dans le blog
    17
    Par défaut
    Apparemment tu aurais une version 9 de OUtlook et 14 du reste de Office c'est bien cela ?

    quand tu descend dans la liste des références, prends la première qui se nomme "Microsoft Outlook x.x object library"

    sinon en late binding en déclarant tes constantes OUtlook


    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
     
    Option explicit
    'procédure de sauvegarde
    Const olFolderInbox = 6
     
    Sub sauvegardePJ()
        Dim MonApp As object
        Dim MonNameSpace As object
        Dim MonDossier As object
        Dim MonMail As object
        Dim numero As Integer
        Dim strAttachment As String
        Dim NbAttachments As Integer
        Dim chemin As String
        'Instance des objets
        Set MonApp = CreateObject("Outlook.Application")
        Set MonNameSpace = MonApp.GetNamespace("MAPI")
        Set MonDossier = MonNameSpace.GetDefaultFolder(olFolderInbox)
        numero = MonDossier.Items.Count
        Set MonMail = MonDossier.Items(numero)
    'chemin de destination des pièces jointes
        chemin = "C:\Documents and Settings\Mes documents\"
        NbAttachments = MonMail.Attachments.Count
        'contrôles possibles:nom de l'expéditeur, adresse mail expéditeur et sujet du mail
            'MonMail.SenderName= ""
            'MonMail.SenderEmailAddress
            'MonMail.Subject
            If MonMail.Subject = "Test" Then
                i = 1
                    Do While i <= NbAttachments
                    strAttachment = MonMail.Attachments.Item(i).FileName
                    MonMail.Attachments.Item(i).SaveAsFile chemin & strAttachment
                    i = i + 1
                    Loop
            End If
    End Sub

  10. #10
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    juin 2019
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : juin 2019
    Messages : 55
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    Apparemment tu aurais une version 9 de Outlook et 14 du reste de Office c'est bien cela ?

    quand tu descend dans la liste des références, prends la première qui se nomme "Microsoft Outlook x.x object library"

    sinon en late binding en déclarant tes constantes Outlook
    Oui j'ai Office 2000 d'installé ( dont Outlook)
    et j'utilise Excel 2010 en version portable .

    Merci pour le code ; je l'ai testé et j'ai les message suivant :
    erreur d'exécution '429' : un composant ActiveX ne peut pas créer d'objet
    Nom : Sans titre 1.jpg
Affichages : 51
Taille : 14,4 Ko
    et la ligne en surbrillance jaune est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set MonApp = CreateObject("Outlook.Application")
    Sinon les références actuelles cochées :
    Nom : Sans titre 1.jpg
Affichages : 50
Taille : 17,4 Ko

  11. #11
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 733
    Points : 6 513
    Points
    6 513
    Billets dans le blog
    17
    Par défaut
    Version portable ? ne serait ce pas une version sur un serveur CITRIX ?


    exécute ta macro directement dans OUTLOOK!

  12. #12
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    juin 2019
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : juin 2019
    Messages : 55
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    Version portable ? ne serait ce pas une version sur un serveur CITRIX ?
    c'est cela que j'ai téléchargé pour Excel 2010:
    https://www.windows8facile.fr/word-excel-2010-gratuit/

    au final je ne comprends pas pourquoi ta proposition de code ne marche pas depuis sur excel 2010 ?

  13. #13
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 733
    Points : 6 513
    Points
    6 513
    Billets dans le blog
    17
    Par défaut
    Il me semble que l'automation Ne fonctionne pas avec les versions STARTER.

    tu peux copier ta macro directement dans outlook et l'exécuter de là

  14. #14
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    juin 2019
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : juin 2019
    Messages : 55
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    Il me semble que l'automation Ne fonctionne pas avec les versions STARTER.
    Comment je peux le vérifier ? est ce que c'est une référence MS qui permet de faire fonctionner l'automation ?


    Sinon j'ai essayé avec mon outlook d'origine 2000; j'ai l'impression que tout va bien mais concretement je retrouve aucune piece jointe extraite ; le code fonctionne bien sous outlook 2000 ?

  15. #15
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 733
    Points : 6 513
    Points
    6 513
    Billets dans le blog
    17
    Par défaut
    En principe ca doit marcher AS tu une erreur d'execution ?

    vérifie ton chemin : "C:\Documents and Settings\Mes documents\"

  16. #16
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    juin 2019
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : juin 2019
    Messages : 55
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    En principe ca doit marcher AS tu une erreur d'execution ?

    vérifie ton chemin : "C:\Documents and Settings\Mes documents\"
    Je click sur executer et aucun message d'erreur ; pas de fichier sur le C:\Temp :
    Nom : Sans titre 1.jpg
Affichages : 51
Taille : 133,9 Ko

    Au fait pourquoi déclarer : Const olFolderInbox = 6 ; ça correspond à quel dossier ?

  17. #17
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 733
    Points : 6 513
    Points
    6 513
    Billets dans le blog
    17
    Par défaut
    Au fait pourquoi déclarer : Const olFolderInbox = 6 ; ça correspond à quel dossier ?
    la boite de réception

    il faut ajouter un \ à la fin de ton chemin

    c:\temp\

  18. #18
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    juin 2019
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : juin 2019
    Messages : 55
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Oliv- Voir le message
    la boite de réception

    il faut ajouter un \ à la fin de ton chemin

    c:\temp\
    le \ ne change rien ; j'ai pourtant bien des mails en objet 'free' avec des pjs ...

  19. #19
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 733
    Points : 6 513
    Points
    6 513
    Billets dans le blog
    17
    Par défaut
    free ou Free attention c'est pas pareil, tu peux ajouter en haut du module

  20. #20
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    5 636
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : septembre 2003
    Messages : 5 636
    Points : 12 762
    Points
    12 762
    Par défaut
    Bonjour,

    option compare text s'applique à l'ensemble du module.
    Il faut tout de même préciser de bien regarder les éventuels effets sur le reste du code.

    Quand j'ai un besoin précis de comparaison, je préfère agir uniquement sur le test souhaité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print StrComp("free", "Free", vbTextCompare) = 0
    ou :

Discussions similaires

  1. [XL-MAC 2016] VBA Excel / Récupérer des mails OUTLOOK dans une boite mail qui n'est pas celle par défaut
    Par GregCompta dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/05/2018, 19h35
  2. [OL-2007] Appel à Outlook dans vba Excel
    Par Bak30 dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 29/01/2014, 18h08
  3. creer un dossier dans outlook par VBA Excel
    Par guy68 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/04/2008, 17h01
  4. creer un dossier dans outlook par VBA Excel
    Par guy68 dans le forum VBA Outlook
    Réponses: 11
    Dernier message: 20/04/2008, 07h33
  5. Liste des contrôles dans VBA-Excel
    Par CAFOUIN dans le forum Excel
    Réponses: 2
    Dernier message: 23/02/2007, 17h50

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