recherche deux instruction outlook depuis excel

zephir94

XLDnaute Impliqué
Bonjour à tous,

Depuis Excel j'accède à Outlook, je voudrais récupérer un éléments que je n'arrive pas à atteindre dans la boite d'envoi.
le récipient ou des récipients du mail que je n'arrive pas à récupérer.

Merci par avance pour vos aides
 

zephir94

XLDnaute Impliqué
Bonjour Staple1600,

Si c'est même du carburant Bio lol :D
Pour l’événement Date d'envoi du mail c'est bon j'ai trouvé

C'est
Code:
.CreationTime ou j.SentOn
Car les deux me donnent le même résultat.

Mais récupérer le nom des destinataires pour l’instant je fais choux blanc j'ai essayé

Code:
.Recipient

Mais la j'ai une perte de régime, même dans le bio il y a du frelaté ! :eek:
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

@zephir94
Et donc tu n'es pas tombé sur ceci par exemple: AddressEntry lors de ton parcours de tout le site...
Ce qui aurait pourtant du t'emmener vers ici par exemple ;)
Ce lien n'existe plus

EDITION: Si tu as trouvé une solution on your own, dans ce cas pourquoi avoir posé la question ici ?

Et si tu as la solution, postes-là ici alors (que cela profite à tous les XLDnautes du forum ;))
 

zephir94

XLDnaute Impliqué
Et bien " Ce lien n'existe plus" ne m'a amené nulle part, donc j'ai continué à chercher et j'ai posté en attendant de trouver par moi même une réponse, une fois la réponse trouvée j'ai posté la solution pour les autres !

Il suffit uniquement d'utiliser comme je le disais dans mon poste précédent :
Code:
.to

Cela permet de récupérer le nom ou les noms des récipient(s)
 

Staple1600

XLDnaute Barbatruc
Re,

@zephir94
Et qu'est-ce qui t’empêche de poster le code VBA entier ici dans ta discussion ?
(cela pourrait servir à d'autres membres du forum, non ?)

NB: j'avais compris que tu voulais récupérer l'adresse mail des destinataires
(d'ou le lien de mon précédent message)
 

zephir94

XLDnaute Impliqué
Il n'e me semblais pas utile de poster 100 lignes de codes qui ne sont pas représentatives à 99.99% de ma recherche, je coinçais uniquement pour afficher le nom des récipients, par ailleurs grâce a :

Code:
.to

tu obtient également les adresses mails des destinataires
 

Staple1600

XLDnaute Barbatruc
Re

Je vois que tu es tout a fait dans l'esprit "Partage des connaissances " qui règne en théorie sur XLD.
Tant pis pour le forum alors
Garde ton précieux code sur ton PC, bien à l'abri des regards ;)

Bonjour à tous,

Je suis entrain d'essayer depuis Excel de récupérer la liste de mail depuis outlook que j'affiche dans un Userform et dans une listview, jusque là tout va bien.
Mon problème est que je souhaite aussi récupérer le nom des pièces jointes, c'est là que je rencontre un soucis car il me récupère bien pour la première ligne le nom de la pièce mais pas pour les suivantes !!!

Voici mon code
VB:
Dim OLmail 'As Outlook.MailItem
Dim pceJointe As Outlook.Attachment

  Set olApp = CreateObject("Outlook.Application")
  Set olns = olApp.GetNamespace("MAPI")
  Set olxFolder = olns.GetDefaultFolder(6)
On Error Resume Next
Application.ScreenUpdating = False
With ListView1
ImageList1.ListImages.Clear
.Gridlines = True
.MultiSelect = True
    ImageList1.ImageHeight = 20 'Hauteur
    ImageList1.ImageWidth = 20 'Largeur
répertoirePhoto = ThisWorkbook.Path
c = "mail1"
d = "mail2"
e = "mail4"
ImageList1.ListImages.Add , "Img", LoadPicture(répertoirePhoto & "\" & c & ".JPG")
ImageList1.ListImages.Add , "Img2", LoadPicture(répertoirePhoto & "\" & d & ".JPG")
ImageList1.ListImages.Add , "Img4", LoadPicture(répertoirePhoto & "\" & e & ".JPG")
    '-------------------------------------------
    Set ListView1.SmallIcons = ImageList1
    Set ListView1.Icons = ImageList1
    '-------------------------------------------
Set ListView1.ColumnHeaderIcons = ImageList1
ListView1.CheckBoxes = True
With .ColumnHeaders
            .Clear
            .Add , , "", 15
            .Add , , "Sujet", 150 ', , "Img"
            .Add , , "Corps", 100
            .Add , , "Expéditeur", 90
            .Add , , "Date", 60
            .Add , , "Pièces jointes", 90 ', , "Img4"
        End With
End With
n = 1
Cont1 = 0
Cont2 = 0
For Each i In olxFolder.Items
If i.UnRead(n) = True Then
ListView1.ListItems.Add
ListView1.ListItems(n).ListSubItems.Add , , i.Subject, "Img2"
Cont1 = Cont1 + 1
Else
ListView1.ListItems.Add
ListView1.ListItems(n).ListSubItems.Add , , i.Subject, "Img"
Cont2 = Cont2 + 1
End If
ListView1.ListItems(n).ListSubItems.Add , , i.Body
If i.SenderName = "" Then
a = "Inconnu"
Else
a = i.SenderName
End If
ListView1.ListItems(n).ListSubItems.Add , , a
ListView1.ListItems(n).ListSubItems.Add , , i.CreationTime

  Set pceJointe = i.Attachments(n)
If pceJointe = "" Then
b = "Vide"
ListView1.ListItems(n).ListSubItems.Add , , b
Else
b = pceJointe
ListView1.ListItems(n).ListSubItems.Add , , b, "Img4"
End If
  Set pceJointe = Nothing
  Set i.Attachments(n) = Nothing
n = n + 1
Next i
ListView1.View = lvwReport
UserForm1.Label2.Caption = Cont1
UserForm1.Label3.Caption = Cont2
Application.ScreenUpdating = True

Et je vous joint un fichier test.

Merci par avance pour vos aides
 

zephir94

XLDnaute Impliqué
Code:
Dim olApp As New Outlook.Application     'création objet application Outlook
    Dim éléments_envoyés As Outlook.MAPIFolder
     Dim OLmail 'As Outlook.MailItem
Dim pceJointe As Outlook.Attachment
  Set olApp = CreateObject("Outlook.Application")
  Set olNs = olApp.GetNamespace("MAPI")
  Set olxFolder = olNs.GetDefaultFolder(6)
    Set éléments_envoyés = olApp.GetNamespace("MAPI").GetDefaultFolder(olFolderSentMail)
    Add1 = Outlook.Application.Session.Accounts.item(1).SmtpAddress
    On Error Resume Next
Application.ScreenUpdating = False
UserForm1.ListView2.ListItems.Clear
With UserForm1.ListView2
.Gridlines = True
.MultiSelect = True
    ImageList1.ImageHeight = 20 'Hauteur
    ImageList1.ImageWidth = 20 'Largeur

    '-------------------------------------------
    Set UserForm1.ListView2.SmallIcons = ImageList1
    Set UserForm1.ListView2.Icons = ImageList1
    '-------------------------------------------
Set UserForm1.ListView2.ColumnHeaderIcons = ImageList1
UserForm1.ListView2.CheckBoxes = True
With .ColumnHeaders
            .Clear
            .Add , , "", 15
            .Add , , "Sujet", 150
            .Add , , "P", 15
            .Add , , "Corps", 100
            .Add , , "Destinataire", 90
            .Add , , "Date", 60
            .Add , , "Pièces jointes", 90
        End With
End With
n = 1
For Each j In éléments_envoyés.Items
UserForm1.ListView2.ListItems.Add
UserForm1.ListView2.ListItems(n).ListSubItems.Add , , j.Subject, "env1"
If j.Importance < Val(2) Then
UserForm1.ListView2.ListItems(n).ListSubItems.Add , , j.Importance
Else
UserForm1.ListView2.ListItems(n).ListSubItems.Add , , j.Importance, "prio"
End If
UserForm1.ListView2.ListItems(n).ListSubItems.Add , , j.Body
a = "test"
UserForm1.ListView2.ListItems(n).ListSubItems.Add , , j.To
UserForm1.ListView2.ListItems(n).ListSubItems.Add , , j.SentOn
'  MsgBox i.CreationTime
  If Not j.Attachments.Count = 0 Then
                For y = 1 To j.Attachments.Count
                     Set pceJointe = j.Attachments(y)
                    Next y
End If
Set pceJointe = j.Attachments(n)
If pceJointe = "" Then
b = "Vide"
UserForm1.ListView2.ListItems(n).ListSubItems.Add , , b
Else
b = pceJointe.Filename
UserForm1.ListView2.ListItems(n).ListSubItems.Add , , pceJointe.Filename, "pcj2"
End If
  Set pceJointe = Nothing
  Set j.Attachments(n) = Nothing
n = n + 1
Next
UserForm1.ListView2.View = lvwReport
   Set olApp = Nothing
Application.ScreenUpdating = True

Ok Ce lien n'existe plus en tout objectivité le fait de partager ce code apporte quoi à la communauté au vue de la question posée qui correspondait uniquement à récupérer une variable .To ( que je cherchais ) qui correspondait aux adresses mails du ou des destinataires depuis la boite d'envoi Outlook ?
Une fois trouvé cette dernière j'ai partagé à la communauté la réponse correspondante à la hauteur de l'enjeux de la question non ?
Je serais entièrement d'accord avec toi si j'avais posé comme question :
Comment peux ton récupérer depuis Excel dans Outlook le contenu de la boite d'envoi et l'afficher dans une listeview en récupérant tous les items de la boite et surtout l'heure d'envoi et le nom des destinataires.
Concernant le premier point, ayant trouvé une réponse en même temps je l'ai retiré mais j'ai apporté naturellement à la communauté :

"
Pour l’événement Date d'envoi du mail c'est bon j'ai trouvé

C'est

Code:
.CreationTime ou j.SentOn
Car les deux me donnent le même résultat. "

En tout cas je te remercie pour m'avoir aiguillé vers une réponse
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

@zephir94
En toute objectivité, cela apporte quoi à la communauté de ne pas publier ton code?
La pluralité des codes déposés sur le forum permet toujours au lecteur des fils d'y piocher des choses intéressantes.
(une variante de syntaxe, une singularité de syntaxe, une fonctionnalité peu usitée etc...)
Par exemple, pour ce qui ce me concerne, cette syntaxe titille ma curiosité
Outlook.Application.Session.Accounts.item(1).SmtpAddress
Et si l'envie m'en prends (Sélection de la phrase dans mon browser -> clic-droit Rechercher avec)

Bref, il est toujours bon de découvrir différentes manières d'écrire du VBA.

C'est là tout ce que je voulais dire ;)

[précisions]
La présence d'emoticones dans mes messages est censée indiquer le message est rédigé en mode humour/taquinerie/dérision/auto-dérision etc..
Le message#11 appartient à ce mode.
[/précisions]
 
Dernière édition:

zephir94

XLDnaute Impliqué
Code:
Outlook.Application.Session.Accounts.item(1).SmtpAddress

Te permet simplement de récupérer ton adresse de messagerie, cela peut avoir une importance si tu as plusieurs comptes de messageries dans ton Outlook ;) et te permet en fonction de ton besoin de le récupérer dans une variable :p
Tu vois j'ai découvert depuis une semaine les listview ( grâce à mon Carburant Bio :D) et la je découvre comment piloter Outlook depuis Excel,
Maintenant je cherche un nouveau challenge ( Si tu as la réponse je suis preneur :cool: ) comment depuis Excel simuler " Envoyer/recevoir"

Amicalement

Fab
 

Staple1600

XLDnaute Barbatruc
Re,

Maintenant je cherche un nouveau challenge ( Si tu as la réponse je suis preneur :cool: ) comment depuis Excel simuler " Envoyer/recevoir"
Le préambule, c'est le pourquoi de la chose?
Parce que normalement si tu interagis avec Outlook, il est plus simple qu'Outlook soit ouvert.
En théorie, si il s'agit d'envoyer un mail depuis Excel
(voir .Send et/ou .Display)

NB: Envoyer/Recevoir peut se paramétrer dans les options d'Outlook

En gros, pourquoi tu veux simuler un "Envoyer/Recevoir" depuis Excel ?)
 

Discussions similaires

Réponses
1
Affichages
109
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 203
Messages
2 086 195
Membres
103 153
dernier inscrit
SamirN