Bonjour à tous,
J'ai finalement trouvé ma solution sur une discussion MSDN. Il faut remplacer la commande :
Set myApt = oApp.CreateItem(1)
par
Set myApt = oFolder.Items.Add(1)
En résumé, voici la procédure pour exporter des tâches MS Project vers Outlook, dans un calendrier spécifique.
Il doit être possible de faire tout ça directement depuis MS Project, mais je n'ai pas les compétences pour développer cela.
1. Récupérer l'ID du calendrier dans Outlook
Créer un nouveau module dans l'éditeur Visual Basic d'Outlook, et y insérer le code ci-dessous :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Option Explicit
Sub GetOutlookFolderID()
'Determines the Folder ID of Folder
Dim olapp As Outlook.Application
Dim olfolder As Outlook.MAPIFolder
Dim MyData As New DataObject
Set olapp = CreateObject("Outlook.Application")
Set olfolder = olapp.GetNamespace("MAPI").PickFolder
olfolder.Display
MyData.SetText (olfolder.EntryID)
MyData.PutInClipboard 'Copie l'ID du calendrier sélectionné dans le presse papier, afin de le récupérer facilement
Set olfolder = Nothing
Set olapp = Nothing
End Sub |
- Exécuter la macro GetOutlookFolderID()
- Sélectionner le calendrier souhaité dans l'arborescence qui est apparue
- L'ID du calendrier sélectionné est alors copiée dans le presse-papier
2. Exporter des tâches depuis MS Project vers le calendrier sélectionné dans Outlook
Créer un nouveau module dans l'éditeur Visual Basic de MS Project, et y insérer le code ci-dessous :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| Sub Export_tache_calendrier_specifique_Outlook()
'Déclaration des variables
Dim myTask As Task
Dim oApp As Object
Dim oNameSpace As Object
Dim oFolder As Object
Dim myApt As Object
'Sélection du calendrier dans Outlook
On Error Resume Next
Set oApp = CreateObject("Outlook.Application")
Set oNameSpace = oApp.GetNamespace("MAPI")
Set oFolder = oNameSpace.GetFolderFromID("ID_Calendrier") 'Récupérer l'ID avec le script VBA dans Outlook, qui copiera la valeur dans le presse-papier
For Each myTask In ActiveSelection.Tasks
Set myApt = oFolder.Items.Add(1) 'Sélection du calendrier selon l'ID et ajout de la tâche en cours
With myApt
.Start = myTask.Start
.End = myTask.Finish
.Subject = myTask.Name & " (Tâche MS Project)"
.Categories = myTask.Project
.Body = myTask.Notes
.Save
End With
Next myTask
End Sub |
Copier l'ID qui est dans le presse-papier à la place du texte "ID_Calendrier" dans la macro.
À l'exécution de la macro, la tâche (ou les tâches) sélectionnée(s) dans MS Project sera(ont) ajoutée(s) dans le calendrier cible.
Partager