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)