XL 2010 Copie un mail via macro

Bens7

XLDnaute Impliqué
Bonjour à tous !
Voilà après plusieurs jours de recherche infructueuse je vous explique mon souhait:
Je souhaiterais un macro en étant sur Excel qui copie le dernier email (Outlook 2010) reçu de : "nomduclient@hotmail.com" présent dans ma boîte de réception (Account 1) > Dans le dossier "C://dossier/test/"

Voilà !
Merci à vous !
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Dernière édition:

Bens7

XLDnaute Impliqué
Staple 1600 merci pour ton engagement mais je me suis peut être mal exprimé je reçois en moyenne plus de 1000 mails de client par mois... certains je veux les garder dans des dossiers clients sur le DD d'autre nan... impossible de bosser avec des règles Outlook...
et ton lien aussi ne m'aide pas vraiment
 

Staple1600

XLDnaute Barbatruc
Re

Si mon lien est susceptible de t'aider
La macro que j'ai posté dans cet ancien post
contient suffisamment d’éléments de code VBA spécifique à Outlook qui sont autant de mots-clés pour de future recherche dans G..gle.

PS: 1000/mois ça ne fait 33/jours
(donc largement gérable par règle)
 

Staple1600

XLDnaute Barbatruc
Re

Donc en cherchant un peu, on trouve par exemple ceci
Code:
Sub Sample()
    Dim objNS As NameSpace
    Dim objFolder As MAPIFolder
    Dim myItems As Items
    Dim myItem As MailItem

    Set objNS = GetNamespace("MAPI")
    Set objFolder = objNS.GetDefaultFolder(olFolderInbox)

    Set myItems = objFolder.Items
    myItems.Sort "ReceivedTime", True

    If myItems.Count > 0 Then
        Set myItem = myItems.Item(1)

        Debug.Print myItem.ReceivedTime
    Else
        Msgbox "This folder doesn't have any emails/items"
    End If
End Sub
 

Staple1600

XLDnaute Barbatruc
Re,

@Bens7
Je rédige mes messages selon mes envies et mon style et sans ta permission, camarade ;)
Tu peux ou ne pas être d'accord ;) mais je reste maître de ma prose.

Pour revenir à la question, ce sont ces lignes qui importent pour trouver le mail le plus récent
Set myItems = objFolder.Items
myItems.Sort "ReceivedTime", True

If myItems.Count > 0 Then
Set myItem = myItems.Item(1)

PS: Je réponds d'abord à la question en pensant à tous ceux qui seront susceptibles de lire le fil de discussion.
Tant mieux si ma réponse aide le primo-demandeur
Sinon elle pourra peut-être aider d'autres lecteurs du fil.
 
Dernière édition:

Bens7

XLDnaute Impliqué
J'ai bien dit que demain je testerais tout de même ton code en essayant d'adapter....
Et oui je suis considéré comme débutant (ce qui peux varie selon chacun ) vue que je ne sais pas code entièrement mais modifié des codes existant...
enfin bref jesserai demain ..
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Sinon, question VBA, voir ceci à tester/adapter
Normalement avec ce code tu dois atteindre le mail le plus récent dans la boite de reception
VB:
sub test()
Const olFolderInbox = 6
Dim mapiNamespace As Outlook.NameSpace
Dim inboxFolder As Outlook.Folder
Dim unreadItems As Outlook.Items
Set mapiNamespace = Application.GetNamespace("MAPI")
Set inboxFolder = mapiNamespace.GetDefaultFolder(olFolderInbox)
Set unreadItems = inboxFolder.Items.Restrict("[Unread] = True")
unreadItems.Sort "[ReceivedTime]", True 'tester aussi avec False pour voir la différence
unreadItems.GetFirst().ReceivedTime
End Sub

Plus de détails ici sur la méthode Items.Sort
Ce lien n'existe plus
 
Dernière édition:

Bens7

XLDnaute Impliqué
Bon passons....
Je ne cherche pas le mail le plus ressent dans la boîte de réception ...je cherche le mail le plus récent mais qui comporte l'adresse presente dans la textbox1
je met ça ?:
If myItems.name=Userform1.textbox1 Then
Set myItem = myItems.Item(1)
 

Bens7

XLDnaute Impliqué
Re bonjour ...
bon on ne se comprend pas alors j';ai fait une petite simulation
le code doit etre dans excel .. ou se trouve mon tableau avec toute les adresse email et nom des dossier...
en gros : ca prend le mail specifie > le met dans le dossier du client > le suprime de outlook...

p.s dans l'exemple mettre :
adresse email: paula.test@hotmail.com
dossier : 14365

merci
 

Pièces jointes

  • MAIL.xlsm
    22.5 KB · Affichages: 28
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

@Bens7
Ton dernier fichier est bien vide
Et je n'y vois aucun code VBA interagissant avec Outlook
Si j'étais moi, je procéderai ainsi
Le dernier code (le fichier.txt) que je t'ai soumis permet à la source de sauvegarder tous les emails au format HTML ou txt sur le disque dur
On peut donc imaginer ensuite un code VBA dans Excel qui liste le noms des mails sauvegardés et copie cette liste dans une feuille Excel
On peut aussi imaginer (et il y a de nombreux exemples sur le forum et sur le web) qu'à chaque arrivée d'un mail, un fichier Excel récupère l'expéditeur, objet et la date d'envoi du mail.
L'avantage c'est que tu es sûr de ne perdre aucun mail puisque d'office ils sont sauvegardés dès leur arrivée.

Pour revenir à ton fichier exemple, on sait pas comment tu remplis les cellules de la feuille 1
(colonne A,B,C,D) ni comment tu détermines que le dossier 14365 correspond à Paula.
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16