XL 2016 Récupérer corps email vers tableau excel [Résolu]

soso882

XLDnaute Nouveau
Bonjour à tous !

Alors, mon problème est le suivant :

Je souhaite récupérer le contenu d'un email automatique que je reçois dans ma boîte réception qui est transférer automatiquement dans un dossier outlook sur le sujet.

Le corps du texte est en texte brut. Je souhaite récupérer les éléments de ce texte pour en faire un tableau récapitulatif.

J'ai déjà trouver un code qui me permet de récupérer le sujet, la date, l'émetteur et le corps du mail.
(c'est déjà ça)

le code est le suivant

VB:
Sub GetFromOutlook()

Dim OutlookApp As Outlook.Application
Dim OutlookNamespace As Namespace
Dim Folder As MAPIFolder
Dim OutlookMail As Variant
Dim i As Integer

Set OutlookApp = New Outlook.Application
Set OutlookNamespace = OutlookApp.GetNamespace("MAPI")
Set Folder = OutlookNamespace.GetDefaultFolder(olFolderInbox).Folders("Missions")

i = 1

For Each OutlookMail In Folder.Items
    If OutlookMail.ReceivedTime >= Range("From_date").Value Then
        Range("eMail_subject").Offset(i, 0).Value = OutlookMail.Subject
        Range("eMail_date").Offset(i, 0).Value = OutlookMail.ReceivedTime
        Range("eMail_sender").Offset(i, 0).Value = OutlookMail.SenderName
        Range("eMail_text").Offset(i, 0).Value = OutlookMail.Body
       
        i = i + 1
    End If
Next OutlookMail

Set Folder = Nothing
Set OutlookNamespace = Nothing
Set OutlookApp = Nothing

End Sub
Le corps du mail se présente ainsi :

Code:
De : NOM prénom <nom.prenom@xxx.xx> (signataire)
Envoyé : luni 13 mai 2019 15:58
À : NOM prénom <nom.prenom@xxx.xx> (moi)
Cc : NOM prénom <nom.prenom@xxx.xx> (la personne concernée)
Objet : Validation de l'ordre de mission n xxxxxxxxxx a Ville sujet
------------------------------------------------------------------


CORPS DU COURRIEL



L'ordre de mission n xxxxxxxxxx a [ville] du jj/mm/aaaa au jj/mm/aaaa [sujet] a ete valide par [valideur].

Veuillez verifier les elements ci dessous :
[NOM PRENOM] [service]
Numero de la mission : xxxxxxxxxx

Ordre de mission :
Mission : [France ou Etranger]
Centre / destination : [Ville]
Pays : [pays]
Region : [région]
Date de depart : jj/mm/aaaa
Date de retour : jj/mm/aaaa
Finalite du deplacement : [type de mission]
Motif du deplacement : [sujet]
Statut de la mission : [validé ou non]

Details / informations complementaires :
Vehicule personnel : [Oui/non]
Informations complementaires : [information sur la mission]
Centre de cout :
EOTP : [type de dépense 1]
Ordre statistique : [type de dépense 2]



  Connectez vous a votre Espace pour pour imprimer votre ordre de mission : adresse html

Le but serait que je puisse récupérer toutes les informations entre crochet et d'en faire un tableau comme celui-ci :

1030790

Je suis bloquée et je ne sais comment je pourrais réussir ou si c'est possible à récupérer toutes les informations.

Je vous remercie par avance
:)


Bonne Journée
 
Dernière édition:

zebanx

XLDnaute Accro
Bonjour soso882

Vous avez déjà bien travaillé et avez une structure logique dans le corps de votre mail que vous avez bien fait de communiquer et me permet de vous répondre.
Un essai avec un fichier contenant un code qui fonctionne bien pour moi et qui a été modifié pour tenir compte de vos besoins.

Quelques précisions :
- Il est impossible de séparer des informations sur la même ligne. Donc "nom", "prénom" et "services" qui apparaissent après "Veuillez vérifier...." sont groupées.
- Le code utilise deux lignes principales pour récupérer les informations : MessageArray pour les lignes du dessous et Messageline pour les informations après les ":" sur la ligne suivant le critère recherché à chaque fois.
- Les informations sont toutes rapatriées.
- Les mots recherchés ne sont pas les mêmes, donc il y a trois select case par exemple pour distinguer "date de départ" et "date de fin".
- Il faudra faire attention à la ponctuation. Ici, comme lu dans le corps du texte, les "mots clés" ne contiennent pas d'accents.
- Les e-mails doivent être situées dans la boite de réception et le traitement va se faire sur tous les mails.
Mieux vaut que cette boite n'en contienne pas trop.
- Le traitement sur outlook fait apparaitre une catégorie jaune après traitement (me permettant de les classer) mais vous pouvez supprimer la ligne dans le code si cela ne vous intéresse pas.
- il n'y a pas besoin que outlook soit ouvert mais le délai de traitement apparait plus rapide lorsque c'est le cas.

En espérant que cela fonctionne pour votre essai.

xl-ment
zebanx
 

Fichiers joints

Dernière édition:

soso882

XLDnaute Nouveau
Bonjour,

Je vous remercie de votre aide.
Je viens de tester sur la machine et j'ai une erreur d'incompatibilité de type 13 " à cette hauteur :
VB:
'--- couleur pour montrer que le message a été traité
myOlMailItem.Categories = "Catégorie Jaune"
myOlMailItem.Save
[B]Next[/B]
Le tableau ne se rempli pas également.

J'ai oublié de préciser que les mails sont classés dans une sous-dossier nommé "Missions",

Pour ce qui est de la partie du "nom", "prénom" et "services" ce n'est pas grave, je m'arrangerai pour la suite via formules excel pour les séparer.


En tout cas je tiens encore à vous remercier. :)
 

zebanx

XLDnaute Accro
Bonjour Soso882

Avez-vous essayé depuis la "boite de réception" SVP ?

Les informations recherchées étant dans un sous-dossier "Missions", j'ai corrigé le code en conséquence (j'y pensais déjà hier parce que c'est vrai que travailler uniquement sur la boite de réception est réducteur et après quelques recherches, testé sur un de mes sous-dossiers et ça fonctionne).
Set myOlFolder = topOlFolder.Folders("Boîte de réception").Folders("Missions")

Pour l'erreur 13, la ligne a été neutralisée (par un '). La mention "catégorie + couleurs" est celle qui fonctionne sur mon outlook (2007) mais peut-être est-ce une nomenclature différente sur le votre. L'intérêt reste faible donc autant la neutraliser.

Dans l'attente de votre retour, xl-ment
zebanx
 

Fichiers joints

soso882

XLDnaute Nouveau
Merci pour la réponse rapide.

Effectivement j'ai omis de présicer que je travaille sous excel 2016.

Je viens de tester de nouveau, L'erreur n'apparaît plus. Cependant la routine se lance sans soucis mais le tableau ne rempli pas. Il y a de la ligne T à V qui se remplissent.

merci encore
 

zebanx

XLDnaute Accro
Re-

Les lignes ne se remplissent que si les informations sont contenues dans le mail.

J'ai testé avec des informations bidons sur mon propre fichier et cela fonctionne pour le remplissage de toutes les lignes avec un BODY comme ci-joint qui correspond, sauf erreur, aux termes et à la présentation indiqué au #1.
Comme indiqué au 2, il n'y a pas de ponctuation (Numero au lieu de Numéro...).

------
Bonjour,

Je vous prie de trouver ci-joint un ordre d’affectation

Veuillez vérifier les éléments ci-dessous SVP :
DURAND PAUL service AAA

Numero de la mission : 2019DDF5256
Ordre de mission : mission commande A

Mission : AARRFF8
Centre / destination : Bonn
Pays : Allemagne
Region : Baden-Wurtemberg

Date de depart : 16/05/2019
Date de retour : 20/05/2019

Finalite du déplacement : Formation maniement des armes
Motif du déplacement : Mise à niveau grade
Statut de la mission : validé

Details / informations complémentaires : départ garde de l’est
Vehicule personnel : non
Informations complémentaires : logement réservé

Centre de couts : BBGGR5
EOTP : XXRFFR9
Ordre statut :FFRESSC4

Vous en souhaitant bonne réception, cordialement

-----

Vous pouvez tester en copiant le corps de ce mail, en l'envoyant à vous-même et en le classant dans votre répertoire "Missions" avant de lancer la macro.

xl-ment
zebanx

nb : Il ne doit pas y avoir de problèmes de références sur excel VBA sinon vous auriez déjà surement un message d'erreur
(à vérifier pour la forme : ALT + F11 puis outils - références et cocher Microsoft outlook .. object library).
Mais le problème ne doit pas venir de là.

Peut-être aussi que le mail fait apparaitre des espaces à gauche avant que les informations de critères pour les différentes recherches ne soient présentées. Ca peut perturber l'instruction
Left(msgLine(0), 4) .

Pour info : ol2019.png
 
Dernière édition:

zebanx

XLDnaute Accro
Bonjour Soso882, le forum

Je vous répondrai en fin de journée (à moins qu'une réponse ne parvienne avant).

Des difficultés car le mot "centre" apparait deux fois dans les mots clés à rechercher (notamment).

Mais on devrait y arriver

@+
 

zebanx

XLDnaute Accro
Re-

Un essai en reprenant votre sous-dossier "Missions" (je crois que c'est ça sinon à modifier dans le code directement svp)

J'ai du spliter le traitement de l'information sur le mot "Centre" qui apparait deux fois et qui posait donc problème.
(Pour le premier, la recherche se fera donc sur le terme "destination" si la ligne commence par "Centre").

Et intégrer, depuis le module 2, une mise en forme spécifique (en l'espèce : sur les espaces (Trim) et sur les dates qui apparaissaient en texte).

Testé (et cela semble ok).

Bonne soirée
zebanx
 

Fichiers joints

soso882

XLDnaute Nouveau
Oh Super cela fonctionne,

Merci pour tout.

Merci pour les explications. Je vais m'informer plus en détail sur le sujet pour le prochain tableau.


Merci encore pour le temps que vous avez passé dessus.

Bonne Journée
 

zebanx

XLDnaute Accro
Bonjour Soso882

Merci et tant mieux :cool:

Par pure enrichissement / curiosité de retour d'expérience sur le couple "volume / fréquence", pourriez-vous SVP m'indiquez à peu près combien de lignes vous souhaitez traiter à chaque lancement et à quelle fréquence ?

Je vous remercie pour votre retour.

Bonne journée également et ... bons traitements de masse

xl-ment
zebanx
 

soso882

XLDnaute Nouveau
Je traite environ 200 lignes pour le premier jet. Ensuite je pense être au alentour de 50/80 lignes par mois :)
 

Haut Bas