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 :

Importer le tableau d'un fichier mail .msg dans Excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Importer le tableau d'un fichier mail .msg dans Excel
    Bonjour,

    Je cherche à automatiser le traitement d'un mail dans mon excel en VBA en l'important.
    Le mail que je reçois est sous la forme suivante:
    - du texte
    - un tableau
    - du texte

    J'ai réussi ouvrir mon fichier ".msg" puis à supprimer le texte du départ (je pense que je peux faire de même pour la fin) mais c'est sur le tableau du milieu que je bloque.
    J'arrive à récupérer et à la mettre dans une cellule via "message.body", mais je perd la tabulation du tableau et tout se "colle" dans la cellule A1.

    Avez-vous des idées, je tourne en rond ?
    Merci d'avance pour votre aide.

    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
     
    Sub import_tableaumail()
     
    Dim OutApp As Outlook.Application
    Dim Message As Outlook.MailItem
    Dim Cible As String
     
        ' Fichier à importer
        Cible = ThisWorkbook.Path & "\dossier\fichier.msg"
     
        Set OutApp = New Outlook.Application
        Set Message = OutApp.CreateItemFromTemplate(Cible)
     
        Sheets.Add.Name = "tableauIMP"
        Range("A1").Select
        Range("A1").Value = Mid(Message.Body, 695)
     
        OutApp.Quit
        Set OutApp = Nothing
    End Sub

  2. #2
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Bonsoir,

    Certainement possible via le bodyHtml du mail.
    Import du tableau html vers Excel.

    Sans exemple d'email c'est difficile de t'aiguiller.

    Bat,
    MFoxy

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Désolé, je dois cacher les données, c'est pro.

    Mais le Mail est sous cette forme:
    Nom : fichier.jpg
Affichages : 248
Taille : 74,1 Ko

  4. #4
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Hello,

    Désolé pour le retour tardif,
    mais pas mal de boulot pour le moment.

    Cette procédure importe la table contenue dans le premier mail de l'inbox

    Pour l'appliquer à ton problème, il faut remplacer par le mail actif, ce que tu sais déjà faire 😉

    oMail est à remplacer par ton objet email.

    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
     
     
    ' get html table from email object
    Dim oHTML As MSHTML.HTMLDocument
    Dim x As Long, y As Long
     
    Set oHTML = New MSHTML.HTMLDocument
    Dim oElColl As MSHTML.IHTMLElementCollection
     
    With oHtml
        .Body.innerHTML = oMail.HTMLBody
        Set oElColl = .getElementsByTagName("table")
    End With
     
    'import in Excel
     
    For x = 0 To oElColl(0).Rows.Length - 1
        For y = 0 To oElColl(0).Rows(x).Cells.Length - 1
            Range("A1").Offset(x, y).Value = oElColl(0).Rows(x).Cells(y).innerText
        Next y
    Next x

Discussions similaires

  1. [AC-2019] Envoi mail via outlook et sauvegarde fichier mail envoyé dans access
    Par ericmattei dans le forum VBA Access
    Réponses: 1
    Dernier message: 19/11/2019, 23h28
  2. [Débutant] Problème pour importer un tableau d'un fichier texte
    Par cedji dans le forum MATLAB
    Réponses: 16
    Dernier message: 29/05/2013, 15h22
  3. [XL-2010] Extraire donnée d'un fichier.msg dans Excel
    Par shakapouet dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/04/2012, 20h18
  4. Réponses: 0
    Dernier message: 28/12/2011, 10h50
  5. Lire des fichiers csv directement dans Excel
    Par thierryppp dans le forum VBScript
    Réponses: 6
    Dernier message: 17/09/2011, 15h05

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