VBA envoyer un mail à un contact du GAL outlook sous condition

Fermé
ValentinD - 25 janv. 2018 à 14:24
 ValentinD - 25 janv. 2018 à 14:38
Bonjour,

Je travaille dans une grosse entreprise qui n'a rien à voir avec l'informatique. Amateur de programmation (vraiment amateur malheureusement, donc désolé si j'explique mal ou si j'ai mal rédigé le code plus bas), par plaisir j'ai codé un petit fichier sous Excel 2010 qui a attiré le regard de mes chefs.

Les gens doivent insérer leur nom dans une case qui comporte une data validation sous forme de liste en fonction de leur bâtiment. Le fichier envoie un mail à la personne en fonction du nom inséré dans la cellule. Pour l'instant je compare le nom inséré à une liste préencodée sur une autre feuille du classeur.Le problème c'est que 250 personnes c'est déjà ennuyant à encoder mais là je dois le faire pour 20000 personnes environ.

Tout ça est encodé dans le global adress list d'outlook mais je ne sais pas comment prendre les données et les utiliser dans mon fichier. Pour être concret, je dois d'abord sélectionner le bâtiment, si je choisis le bâtiment 1 je ne dois plus voir que dans ma liste de noms les noms A, B et C, si je prends le bâtiment 2 je dois voir les noms D, E et F . Si j'ai choisi bâtiment 1 , je prends le nom A je dois envoyer un mail à A. Comment aller chercher l'information du bâtiment dans le GAL d'outlook pour ne sélectionner que les mails de ce bâtiment et puis envoyer le mail à la personne sélectionnée? J'espère avoir bien expliqué et que quelqu'un pourra m'aider à réaliser ça.



Sub Bouton46_Cliquer()


Dim Appli As Object
Dim SessionOutlook
Dim confirmation
Dim nom As String, batiment As String





Const Chemin As String = "C:\Program Files (x86)\Microsoft Office\Office14\OUTLOOK.EXE"
nom = Range("B2")
batiment = Range("B6")

On Error Resume Next
Set Appli = GetObject(, "Outlook.Application")

If Appli Is Nothing Then

SessionOutlook = Shell(Chemin, 1)

End If

ActiveWorkbook.EnvelopeVisible = False 'l'en-tête de composition de message électronique et la barre d'outils d'enveloppe ne sont pas visibles

For i = 1 To 250

If Range("B10").Value = Sheets("Mails").Range("A" + CStr(i)).Value Then


confirmation = Sheets("Mails").Range("B" + CStr(i)).Value
Exit For

End If

Next

Set OlApp = CreateObject("Outlook.application")
Set MyItem = OlApp.CreateItem(olMailItem)


With MyItem

.Body = "Bonjour"
.To = confirmation
.Subject = "action sd"
.Attachments.Add ActiveWorkbook.Path & "\" & batiment + " " + nom & ".xlsm"
.OriginatorDeliveryReportRequested = True 'demande une confirmation d'envoi
.Send

End With

MsgBox ("Mail de confirmation de la prise en charge de l'action envoyé au relais EHS et à l'initiateur de la SD")



End Sub

A voir également:

1 réponse

Voici des printscreen de ce que je fais en ce moment
https://image.noelshack.com/minis/2018/04/4/1516887271-projet1.png

https://image.noelshack.com/minis/2018/04/4/1516887271-projet2.png

https://image.noelshack.com/minis/2018/04/4/1516887271-projet3.png
0