corps du message

C@thy

XLDnaute Barbatruc
Bonjour le forum,

quelqu'un sait-il comment récupérer dans un mail (outlook) la première ligne du corps du message (pour ensuite l'exploiter sous Excel)? (chaque élément de cette ligne est séparé par des ; mais il n'y en a pas à la fin).

Merci pour votre aide, et bon aprem'

C@thy
 

Modeste

XLDnaute Barbatruc
Re : corps du message

Bonjour C@thy,

Deux questions:
- tu parles de première ligne ... faut-il lire première phrase ou premier paragraphe (la première ligne risquant de varier en fonction de la largeur de la fenêtre ... ou alors je suis à côté de mes pompes :confused:)
- si tu nous dit que les éléments sont séparés par des ';' ne pourrais-tu fournir un exemple de ce sur quoi tu travailles? C'est déjà le résultat d'un export? Tu devras traiter un message à la fois ... ou tout un paquet?
 

C@thy

XLDnaute Barbatruc
Re : corps du message

Bonjour Modeste, merci pour ta réponse rapide.

Justement, c'est bien là mon problème, comment déterminer la fin de la ligne...
mais tu as raison, il s'agit d'un paragraphe.

En fait je reçois des messages avec 7 éléments dans la 1ère ligne, séparés par des ;
du genre : 1;2;nom;prénom;service;tél;adressemail (les 2 1ers chiffres sont un code interne qui m'indiquent dans quel fichier excel et quel onglet je dois copier les données)
puis sur les autres lignes on détaille certains éléments :
Nom : nom
Prénom : prénom
etc...

voilà, j'espère avoir été plus claire.

C@thy
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : corps du message

re-bonjour,

voilà, j'espère avoir été plus claire
... Euh ...
Pour essayer de comprendre, j'ai copié cette partie de ton propre message:
1;2;nom;prénom;service;tél;adressemail (les 2 1ers chiffres sont un code interne qui m'indiquent dans quel fichier excel et quel onglet je dois copier les données)
puis sur les autres lignes on détaille certains éléments :
Nom : nom
Prénom : prénom
etc...
J'ai rédigé un nouveau message via Outlook, que je me suis adressé. Une fois le message arrivé à destination ... ben j'ai copié tout, collé dans Excel, puis Données > Convertir avec comme délimiteur le ';'

Maintenant, pour une vieille briscarde d'Xld, comme toi, je présume que tu y avais songé ... et que donc ce n'est pas ce que tu cherches!? Le terme "vieille briscarde" est à prendre dans le sens de "utilisatrice chevronnée" :p
 

C@thy

XLDnaute Barbatruc
Re : corps du message

Merci, Modeste, pour ta contribution.

En fait mon mail contient de nombreuses lignes, et seule la 1ère m'intéresse.
En plus, je dois mettre les données à un endroit précis de ma feuille, et les 2 premiers chiffres ne sont pas à recopier dans excel, ils ne servent qu'à ouvrir le bon fichier sur la bonne feuille.

J'ai réussi à faire mon truc de la façon suivante (je mets tout le code, y compris l'ouverture de mon fichier formation)
Code:
Sub MAJ_Inscriptions()
Dim monOutlook As Object
Dim monNamespace As Object
Dim repForm As Object, repForm2 As Object
Dim nbMails As Integer, i As Integer, j As Integer
Dim ContenuMail As String
Dim formation As Integer, session As Integer
Dim Nom As String, Prenom As String, Service As String, Telephone As String, Email As String
Dim NomClasseur As String
Set monOutlook = CreateObject("Outlook.Application")
Set monNamespace = monOutlook.GetNamespace("MAPI")
Set repForm = monNamespace.Folders(1).Folders("Formations")
Set repForm2 = repForm.Folders("Traités")
nbMails = repForm.Items.Count
i = 0
While i < nbMails
    ContenuMail = repForm.Items(1).Body
    i = i + 1
 
    ' Récupération des valeurs dans le corps du Mail
    Tableau = Split(ContenuMail, ";")
    formation = Tableau(0)
    session = Tableau(1)
    Nom = Tableau(2)
    Prenom = Tableau(3)
    Service = Tableau(4)
    Email = Tableau(5)
    Telephone = Tableau(6)
 
    ' Ouverture du fichier Excel de la formation et session concernée
    ChDir ThisWorkbook.Path
    Workbooks.Open Filename:=ThisWorkbook.Path & "\Formation" & formation & ".xls"
    Windows("Formation" & formation & ".xls").Activate
    Sheets("" & session & "").Select
 
    ' Détection de la première ligne vide du tableau
 
        j = Range("A65536").End(xlUp).Row + 1
 
    ' Insertion des valeurs et mise en forme
    Cells(j, 1).Value = Nom
    Cells(j, 2).Value = Prenom
    Cells(j, 3).Value = Service
    Cells(j, 4).Value = Telephone
    Cells(j, 5).Value = Email
    Cells(4, 5).Value = Cells(4, 5).Value + 1
    'mise en forme
    Range(Cells(j - 1, 1), Cells(j - 1, 5)).Select
    Selection.Copy
    Range(Cells(j, 1), Cells(j, 5)).Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Cells(j + 2, 1).Select
    ActiveWorkbook.Save
    ActiveWindow.Close
 
    ' Le mail est marqué comme lu et déplacé dans "Traités"
    repForm.Items(1).UnRead = False
    repForm.Items(1).Move repForm2
 
End Sub

Bonne journée :cool:

Edit : P.S. la "vieille briscarde" te salue looool!!!

C@thy
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : corps du message

Salut C@thy,

C'est vrai que ma contribution a été "décisive" ... surtout au regard de ce que tu nous livres là ... Chapeau :eek:
Au moins, maintenant, j'ai compris ce que tu voulais faire :D

Pour en rajouter dans le genre "tout aussi décisif", je te suggère de remplacer
Code:
Telephone = Tableau(6)

...Par
Code:
Telephone = Application.Clean(Split(Tableau(6), Chr(10))(0))
... Ce qui pourrait être la réponse à ta question initiale

Ceci dit, au départ, tu pourrais aussi exporter vers Excel le contenu du dossier "Formations", "splitter" la colonne "Corps" et poursuivre avec la fin de ta macro, pour dispatcher dans les bons classeurs.
 

Discussions similaires

Réponses
2
Affichages
586

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 104
dernier inscrit
JEMADA