IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Project Discussion :

Macro dans Microsoft Project


Sujet :

VBA Project

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Points : 346
    Points
    346
    Par défaut Macro dans Microsoft Project
    Bonjour,

    je ne suis pas un grand connaisseur des macros et ci-dessous je vous transmets le code d'une macros dont le but serait de transmettre dans un calendrier spécifique dans Outlook ("Suivis de projets") les tâches qui ont été définies dans MS-Project. Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
    32
    33
    34
    Option Explicit
     
    Public myOLApp As Outlook.Application
    Sub Export_Msproject_Outlook()
    Dim myTask As Task
    Dim myItem As Outlook.AppointmentItem
     
     
    Dim myNamespace As Outlook.NameSpace
     
      On Error Resume Next
      Set myOLApp = CreateObject("Outlook.Application")
     
      Set myNamespace = myOLApp.GetNamespace("MAPI")
     
      'Ne fonctionne pas !!!
      'Set myOLApp.ActiveExplorer.CurrentFolder = _
        myNamespace.GetDefaultFolder(olFolderCalendar).Folders("Suivis de projets")
     
     
      For Each myTask In ActiveSelection.Tasks
     
        Set myItem = myOLApp.CreateItem(olAppointmentItem)
        With myItem
          .Start = myTask.Start
          .End = myTask.Finish
          .Subject = myTask.Name & " (Suivi de Projet)"
          .Categories = myTask.Project
          .Body = myTask.Notes
          .Save
        End With
      Next myTask
     
    End Sub
    Avec ce code, cela crée les événements dans mon calendrier standard, alors que j'aiemrais que cela aille dans le calendier "Suivis de projets".
    Dans Outlook, ce calendrier "Suivis de projets" se trouve dans le dossier "Mes Calendriers" et est au même niveau que le dossier "Calendier".

    Est-ce quelqu'un saurait comment changer le calendrier par défaut afin que les tâches s'ajoutent dans le bon calendrier?

    Par avance merci pour votgre aide.

    Cédric

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    J'ai exactement la même problématique que Cedric B., et mes connaissances en VBA sont quasi nulles.

    J'ai légèrement avancé sur le sujet, mais je n'arrive toujours pas à envoyer la tâche de MS Project dans un calendrier spécifique.
    Pour y arriver, il faut définir l'emplacement de ce calendrier. Il y apparemment 2 méthodes :
    • Récupérer le chemin du calendrier : je n'y suis pas arrivé
    • Récupérer l'ID du calendrier : j'y suis arrivé avec une macro trouvée sur le net, légèrement modifiée


    Voici le code à implanter dans un module dans Outlook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    À l'exécution de cette macro dans Outlook, une fenêtre va s'ouvrir, dans laquelle il faut sélectionner le calendrier cible.
    L'ID du calendrier cible est alors copiée dans le presse-papier Windows, ce qui permet de facilement l'intégrer à la macro dans MS Project.


    Mais je ne sais pas comment utiliser cette ID. Sur certains forums, j'ai vu des commandes de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set oApp = CreateObject("Outlook.Application")
    Set oNameSpace = oApp.GetNamespace("MAPI")
    Set oFolder = oNameSpace.GetFolderFromID("Numéro de l'ID récupérée dans Outlook").Item.Add(olAppointmentItem)
    Mais je ne sais pas comment utiliser "oFolder" dans le code que j'ai trouvé, qui est identique à celui de Cedric B. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Sub TEST_Export_Selection_To_OL_Appointments()
        Dim myTask As Task
        Dim oApp As Object
        Dim oNameSpace As Object
        Dim oFolder As Object
        Dim myApt As Object
     
      On Error Resume Next
      Set oApp = CreateObject("Outlook.Application")
      Set oNameSpace = oApp.GetNamespace("MAPI")
      Set oFolder = oNameSpace.GetFolderFromID("Numéro de l'ID récupérée dans Outlook").Item.Add(olAppointmentItem)
     
        For Each myTask In ActiveSelection.Tasks
            Set myApt = oApp.CreateItem(1)
            With myApt
                .Start = myTask.Start
                .End = myTask.Finish
                .Subject = myTask.Name & " (Tâche Project)"
                .Categories = myTask.Project
                .Body = myTask.Notes
                .Save
            End With
        Next myTask
     
    End Sub
    J'ai essayé d'intégrer "oFolder" dans la ligne qui crée le RDV dans Outlook, mais sans succés, en raison de mes maigres connaissances en VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set myApt = oFolder.CreateItem(1)
    Set myApt = oApp.oFolder.CreateItem(1)
    etc...
    Merci d'avance pour toute aide sur le sujet.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Bonjour à tous,

    J'ai finalement trouvé ma solution sur une discussion MSDN. Il faut remplacer la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set myApt = oApp.CreateItem(1)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    1. Exécuter la macro GetOutlookFolderID()
    2. Sélectionner le calendrier souhaité dans l'arborescence qui est apparue
    3. 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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

Discussions similaires

  1. [Débutant] SQL Server Database Project dans Microsoft Visual Studio Professional 2013
    Par yaciin dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 27/08/2014, 12h42
  2. Réponses: 8
    Dernier message: 26/10/2010, 16h05
  3. Réponses: 1
    Dernier message: 15/05/2008, 09h08
  4. Réponses: 1
    Dernier message: 19/12/2006, 14h08
  5. Macro dans excel permettant de voir si un fichier est ouvert
    Par VirginieGE dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/08/2004, 07h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo