Rdv Outlook avec invitation via VBA

Y compris Power BI, Power Query et toute autre question en lien avec Excel
B
Boyoo974
Membre habitué
Membre habitué
Messages : 68
Inscrit le : 12 juillet 2018
Version d'Excel : 2010

Message par Boyoo974 » 25 janvier 2020, 10:02

Bonjour à tous !
J'aimerai créer une macro qui créé un Rendez vous outlook à l'aide de plusieurs colonne
J'ai une macro actuelle qui fonctionne mais elle ne permet pas d'inviter quelqu'un à ce rendez vous
Cette macro me permet juste de me mettre des rendez vous dans mon agenda et des rappels
Je vous ai mis en PJ la macro en question

Je souhaite maintenant ajouter la fonction d'invitation via 2 colonnes:
La colonne G indique les initiales de la personne à inviter
La colonne M indique l'adresse mail
L'idée est de faire comme une rechercheV pour qu'il fasse le lien entre les initiales et l'adresse mail

Je sais pas si j'ai été clair?
Après moultes recherches et test, je n'arrive à rien :(
Pouvez vous m'aider s'il vous plait ? :)

Merci en tout cas pour votre aide !!!
Test.xlsm
(27.42 Kio) Téléchargé 2 fois
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 13'572
Appréciations reçues : 755
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 25 janvier 2020, 11:02

Bonjour Boyoo

Est-ce que tous les interlocuteurs ont le même logiciel de messagerie ?
Quoi qu'il en soit, je procède autrement (car je n'aimerais pas que quelqu'un écrive directement dans mon agenda).

Solution 1 : si tous le monde est dans la même organisation, je préfère créer un agenda partagé.

Solution 2 : envoyer une invitation

Solution 3 avec google agenda ... je ne sais pas si cela fonctionne avec les autres : envoyer un mail avec un lien à cliquer qui va créer le rendez-vous ... https://github.com/InteractionDesignFou ... /google.md

Solution 4 qui a ma préférence : envoyer un mail avec un fichier .ics en pièce jointe comme ici
convoquer via email avec ICS joint.xlsm
(18.83 Kio) Téléchargé 4 fois

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
B
Boyoo974
Membre habitué
Membre habitué
Messages : 68
Inscrit le : 12 juillet 2018
Version d'Excel : 2010

Message par Boyoo974 » 25 janvier 2020, 11:12

Bonjour,
Merci pour ta réponse rapide !
On utilise tous Outlook pas Google agenda :/
J'ai vu qu'il est possible de faire avec Excel ICS
Mais je pense que ce sera pas pratique car il y aura 3 ou 4 rdv par jour, je voulais quelque-chose de plus rapide
Je ne souhaite pas écrire dans leur agenda mais envoyer une invitation qu'ils peuvent accepter ou non
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 13'572
Appréciations reçues : 755
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 25 janvier 2020, 11:24

Je ne travaille plus avec outlook, mais voici ce que j'utilisais à l'époque via outlook pour les employés de la même société ...
Sub inviter_texte()
Dim messagerie As Object, invitation As Object, participant As Object, montexte As String, cel As Range
Dim ligne As Long
    Set messagerie = CreateObject("Outlook.Application")
    Set invitation = messagerie.CreateItem(1)
    With invitation
        .MeetingStatus = 1
        .Subject = [objet]
        .Location = [lieu]
        .Start = [jour] + [heure]
        .Duration = [duree]
        If [rappel] > 0 Then
            .ReminderSet = True
            .ReminderMinutesBeforeStart = [rappel]
        Else
            .ReminderSet = False
        End If
        
        ' participants attendus
        ligne = 2
        Do Until Trim$(Cells(ligne, [attendus].Column).Value) = ""
            Set participant = .Recipients.Add(Cells(ligne, [attendus].Column).Value)
            participant.Type = 1
            ligne = ligne + 1
        Loop
        
        ' participants facultatifs
        ligne = 2
        Do Until Trim$(Cells(ligne, [facultatifs].Column).Value) = ""
            Set participant = .Recipients.Add(Cells(ligne, [facultatifs].Column).Value)
            participant.Type = 2
            ligne = ligne + 1
        Loop
        
        montexte = ""
        For Each cel In [texte]
            montexte = montexte & cel.Value & vbCrLf
        Next
        .body = montexte
        .display
        
    End With
        
End Sub
Cette macro s'appuie sur cette collection de noms ...
Capture d’écran (302).png
Capture d’écran (302).png (23.24 Kio) Vu 151 fois

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
B
Boyoo974
Membre habitué
Membre habitué
Messages : 68
Inscrit le : 12 juillet 2018
Version d'Excel : 2010

Message par Boyoo974 » 25 janvier 2020, 11:59

C'est exactement quelque chose comme ça que je recherche ! :)
Tu saurais comment intégrer la fonction d'invitation a ma macro ?
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 13'572
Appréciations reçues : 755
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 25 janvier 2020, 13:33

Je t'ai fait une fonction
Sub inviter( _
    objet As Range, _
    lieu As Range, _
    jour As Range, _
    heure As Range, _
    duree As Range, _
    rappel As Range, _
    qui As Range)
Dim messagerie As Object, invitation As Object, participant As Object
Dim ligne As Long
    Set messagerie = CreateObject("Outlook.Application")
    Set invitation = messagerie.CreateItem(1)
    With invitation
        .MeetingStatus = 1
        .Subject = objet.Value
        .Location = lieu.Value
        .Start = jour.Value + heure.Value
        .Duration = duree.Value
        .ReminderMinutesBeforeStart = 30
        Set participant = .Recipients.Add(qui.Value)
        participant.Type = 1
        .body = "bla bla bla"
        .display
    End With
End Sub
Il suffit de faire appel dans ta macro à cette fonction en indiquant où se trouve les infos.
Je n'ai pas vu l'heure et la durée du rendez-vous dans ton projet.

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
B
Boyoo974
Membre habitué
Membre habitué
Messages : 68
Inscrit le : 12 juillet 2018
Version d'Excel : 2010

Message par Boyoo974 » 25 janvier 2020, 16:05

Merci beaucoup pour la fonction !
Par contre je n'arrive pas à l'intégrer à ma macro..
Tu pourrais m'expliquer comment faire stp? Je ne comprends pas bien la :(
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 13'572
Appréciations reçues : 755
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 25 janvier 2020, 17:50

ok,
je regarde demain (mon soucis est que je ne peux pas tester)

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 13'572
Appréciations reçues : 755
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR
Téléchargements : Mes applications

Message par Steelson » 26 janvier 2020, 02:25

J'ai juste ajouté ces quelques lignes, à tester (je n'ai plus outlook)
        Dim qui As Range
        Set qui = sh.Columns("L").Find(sh.Range("G" & Lig))
        Set participant = .Recipients.Add(qui.Offset(0, 1).Value)
        participant.Type = 1
Test.xlsm
(26.92 Kio) Téléchargé 3 fois

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
B
Boyoo974
Membre habitué
Membre habitué
Messages : 68
Inscrit le : 12 juillet 2018
Version d'Excel : 2010

Message par Boyoo974 » 5 février 2020, 22:02

Salut !
J'ai ajouté le code mais aucune invitation n'est envoyé :/
Je crois qu'il n'arrive pas à récupérer l'adresse mail

Désolé de répondre aussi tardivement !
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message