Procédure : Utiliser VBA pour ajouter une commande personnalisée au ruban (traduction automatique)

Dernière modification : mardi 8 février 2011

S’applique à : Office 2010 | Project 2010 | Project Server 2010 | SharePoint Server 2010

Important

Cet article a été traduit automatiquement, voir l’avertissement. Vous pouvez consulter la version en anglais de cet article ici.

Cet article montre comment ajouter par programmation un onglet et une commande personnalisés à l’interface utilisateur Fluent (le ruban) à l’aide de VBA dans Microsoft Project 2010. Le bouton personnalisé appelle une macro dans le projet qui change la couleur de la cellule Nom de la tâche des tâches planifiées manuellement. Le code VBA peut être utilisé pour un projet spécifique ou être ajouté au modèle de projet global pour modifier le ruban pour tous les projets créés ou ouverts sur l’ordinateur local.

Project 2010 utilise l'interface utilisateur Fluent avec un ruban, comme le font les autres applications Microsoft Office 2010. Vous pouvez ajouter manuellement des onglets, des groupes et des boutons sur le ruban sous l'onglet Personnaliser le Ruban de la boîte de dialogue Options de Project . Pour ouvrir Options de Project, cliquez sur Options dans la vue Backstage.

Project 2010 ayant un format de fichier binaire, pour modifier par programme, le ruban, vous devez utiliser la méthode SetCustomUI dans VBA. Vous pouvez également utiliser le modèle d'objet PIA (Primary Interop Assembly) pour le développement de compléments de code managé pour Project 2010. Le chemin d'accès de l'assembly PIA est C:\Program Files (x86)\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office14\Microsoft.Office.Interop.MSProject.dll.

Conseil

Vous pouvez utiliser la méthode SetCustomUI dans l'assembly PIA pour développer des compléments de code managé, Project 2010 prend également en charge du Concepteur de ruban dans Microsoft Visual Studio 2010, qui est un moyen plus facile de créer des onglets personnalisés, les groupes et les autres contrôles du ruban. Pour obtenir un exemple qui effectue le même travail que la macro VBA dans cet article, consultez Procédure : Utiliser du code géré pour ajouter une commande personnalisée au ruban (traduction automatique).

Pour plus d'informations sur la méthode SetCustomUI, consultez l'aide de VBA dans Project 2010. Pour plus d'informations sur les commandes XML pour la modification du ruban, consultez le Centre pour développeurs Interface utilisateur Office Fluent (éventuellement en anglais).

Notes

Avertissement traduction automatique : cet article a été traduit par un ordinateur, sans intervention humaine. Microsoft propose cette traduction automatique pour offrir aux personnes ne maîtrisant pas l’anglais l’accès au contenu relatif aux produits, services et technologies Microsoft. Comme cet article a été traduit automatiquement, il risque de contenir des erreurs de grammaire, de syntaxe ou de terminologie.

Procédure 1. Pour créer un projet et la macro de test

  1. Créez un projet de test de ruban personnalisé. Par exemple, créez un projet nommé Bascule couleur de cellule pour les interventions manuelles.

  2. Ouvrez l'éditeur Visual Basic (VBE), développez le nœud VBAProject dans le volet des Projet et puis double-cliquez sur ThisProject pour ouvrir la page de code.

  3. Créez une macro à utiliser pour l'essai. Cet exemple utilise la macro ToggleManualTasksColor, mais vous pouvez utiliser une autre macro.

    Option Explicit
    
    Sub ToggleManualTasksColor()
        Dim tsks As Tasks
        Dim t As Task
        Dim rgbColor As Long
    
        Set tsks = ActiveProject.Tasks
    
        For Each t In tsks
            If (Not t Is Nothing) And (Not t.Summary) Then
                SelectTaskField Row:=t.ID, Column:="Name", rowrelative:=False
                rgbColor = ActiveCell.CellColorEx
    
                If t.Manual Then
                    ' Check whether the manual task color is white.
                    If rgbColor = &HFFFFFF Then
                        Font32Ex CellColor:=&HF0D9C6  ' Change the background to light blue.
                    Else
                        Font32Ex CellColor:=&HFFFFFF  ' Change the background to white.
                    End If
                Else
                    ' The task is automatically scheduled, so change the background to white.
                    Font32Ex CellColor:=&HFFFFFF
                End If
            End If
        Next t
    End Sub
    

    La macro ToggleManualTasksColor utilise la nouvelle méthode de Font32Ex de Project 2010, plutôt que la méthode FontEx, afin que les couleurs peuvent être exprimées en valeurs RVB hexadécimales.

    Notes

    Les couleurs hexadécimales dans Project 2010 sont exprimés dans l'ordre de B-G-r. Par exemple, & HFF0000 est bleu pur. Vous pouvez utiliser l'équivalent décimal, par exemple 15784390 est la même valeur bleu clair comme & HF0D9C6, mais il est plus facile de déterminer la couleur lorsque vous utilisez des valeurs hexadécimales.

  4. Ajouter certaines tâches planifiées automatiquement et certaines tâches planifiées manuellement au projet et exécutez la macro pour vous assurer qu'il fonctionne.

La procédure 2 montre comment modifier le ruban pour exécuter l'exemple de macro.

Procédure 2. Pour créer la macro qui modifie le ruban

  1. Créer les données XML pour l'argument ribbonXml dans la méthode SetCustomUI. Un éditeur XML permet de créer un code XML valide les modifications de ruban complexes. Par exemple, le code XML suivant a été mis en forme dans Microsoft Visual Studio.

    <mso:customUI xmlns:mso="http:="//schemas.microsoft.com/office/2009/07/customui">
      <mso:ribbon>
        <mso:qat/>
        <mso:tabs>
          <mso:tab id="highlightTab" label="Highlight=" insertBeforeQ="mso:TabFormat">
            <mso:group id="testGroup" label="Test" autoScale="true=">
              <mso:button id="highlightManualTasks" label="Toggle Manual Task Color"
                          imageMso="DiagramTargetInsertClassic=" onAction="ToggleManualTasksColor="/>
            </mso:group>
          </mso:tab>
        </mso:tabs>
      </mso:ribbon>
    </mso:customUI>
    

    Lorsqu'elle est appliquée au ruban Project 2010, les données XML effectue les opérations suivantes :

    • L'élément mso:qat est vide, afin qu'il n'a aucun effet sur la barre d'outils Accès rapide.

    • L'élément mso:tab crée un onglet nommé Surlignage et l'insère avant de l'onglet Format du ruban. L'attribut id peut être une valeur alphanumérique unique arbitraire, sans espaces. L'attribut id peut être utilisé par d'autres actions pour faire référence à un onglet spécifique.

    • L'élément mso:group crée un groupe nommé Test sur l'onglet mise en Surlignage .

    • L'élément mso:button crée un bouton nommé Couleur des tâches bascule manuelle qui utilise l'image nommée DiagramTargetInsertClassic dans la collection d'icône Microsoft Office. Lorsque le bouton est activé, l'attribut OnAction indique qu'il s'exécute la macro ToggleManualTasksColor.

      Conseil

      Pour utiliser une image, vous pouvez effectuer une des opérations suivantes :

      • Sous l'onglet Personnaliser le Ruban de la boîte de dialogue Options de Project , ajouter une commande à l'un des groupes existants dans le ruban, renommez la commande définir l'icône et puis exporter la personnalisation en tant que le fichier ProjectCustomizations.exportedUI. Pour facilement voir la structure XML, copiez le fichier contenu dans un fichier XML dans Visual Studio et format puis de la totalité du fichier (appuyez sur Ctrl-E et appuyez sur D). Le nom de l'image est la valeur de l'attribut imageMso de la commande que vous avez ajouté.

      • Téléchargez le 2007 Office System Add-In : galerie d'icônes, puis ouvrez la galerie dans Microsoft Excel.

      • Pour afficher les icônes et les noms des icônes disponibles dans les applications Microsoft Office 2010, téléchargez la complément Office 2010 : galerie d'icônes.

      • Créer une icône et utiliser le nom de fichier et le chemin d'accès.

  2. Créez une macro qui exécute la méthode SetCustomUI. Dans la macro AddHighlightRibbon suivante, chaque ligne de code XML est copiée dans une ligne de la variable ribbonXml et ensuite chaque caractère de guillemet de la ligne XML est doublée afin que la chaîne de ribbonXml contient le caractère guillemet. La mise en forme XML est conservée pour faciliter la lisibilité, autant que possible.

    Private Sub AddHighlightRibbon()
        Dim ribbonXml As String
    
        ribbonXml = "<mso:customUI xmlns:mso=""https://schemas.microsoft.com/office/2009/07/customui"">"
        ribbonXml = ribbonXml + "  <mso:ribbon>"
        ribbonXml = ribbonXml + "    <mso:qat/>"
        ribbonXml = ribbonXml + "    <mso:tabs>"
        ribbonXml = ribbonXml + "      <mso:tab id=""highlightTab"" label=""Highlight"" insertBeforeQ=""mso:TabFormat"">"
        ribbonXml = ribbonXml + "        <mso:group id=""testGroup"" label=""Test"" autoScale=""true"">"
        ribbonXml = ribbonXml + "          <mso:button id=""highlightManualTasks"" label=""Toggle Manual Task Color"" "
        ribbonXml = ribbonXml + "imageMso=""DiagramTargetInsertClassic"" onAction=""ToggleManualTasksColor""/>"
        ribbonXml = ribbonXml + "        </mso:group>"
        ribbonXml = ribbonXml + "      </mso:tab>"
        ribbonXml = ribbonXml + "    </mso:tabs>"
        ribbonXml = ribbonXml + "  </mso:ribbon>"
        ribbonXml = ribbonXml + "</mso:customUI>"
    
        ActiveProject.SetCustomUI (ribbonXml)
    End Sub
    
  3. Exécutez la macro AddHighlightRibbon, pour vérifier si elle fonctionne.

    Conseil

    Pour supprimer une personnalisation du ruban, créez une macro qui SetCustomUI s'exécute, où le paramètre contient un élément vide mso:ribbon, telle que la suivante : ribbonXml = "<mso:customUI xmlns:mso=""https://schemas.microsoft.com/office/2009/07/customui"">" & "<mso:ribbon></mso:ribbon></mso:customUI>"

Procédure 3 montre comment exécuter la macro AddHighlightRibbon lorsque vous ouvrez le projet de test. Pour exécuter la macro pour tous les projets sur l'ordinateur local, reportez-vous à la section 4 de la procédure.

Procédure 3. Pour modifier le ruban lorsque vous ouvrez le projet

  1. Ajoutez un gestionnaire d'événements Project_Open, comme suit :

        Private Sub Project_Open(ByVal pj As Project)
            AddHighlightRibbon
        End Sub
    
  2. Enregistrez et fermez le projet de test.

  3. Ouvrez de nouveau le projet de test.

Lorsque vous ouvrez le projet de test, la macro Project_Open exécute la macro AddHighlightRibbon, qui ajoute l'onglet mise en Surlignage le ruban. En cliquant sur Couleur des tâches bascule manuel sur l'onglet se transforme Surlignage la couleur d'arrière-plan des tâches planifiées manuellement (Figure 1).

La figure 1. À l'aide de la commande du ruban personnalisé

Utilisation de la commande de ruban personnalisée

Dans la procédure 3, l'onglet mise en Surlignage est ajouté uniquement lorsque vous ouvrez le projet de test spécifique qui inclut le code de macro. Procédure 4 montre comment utiliser la macro dans le modèle de projet global afin qu'il modifie le ruban pour tous les projets qui sont créés ou ouverts sur l'ordinateur local.

Procédure 4. Pour modifier le ruban pour tous les projets locaux

  1. Ouvrez Visual Basic Editor, développez le nœud ProjectGlobal dans le volet des Projet et double-cliquez sur ThisProject (Global.MPT) pour ouvrir la page de code pour le modèle de projet global.

  2. Copiez tout le code dans l'exemple à la page de code ThisProject (Global.MPT) .

  3. Modifiez le Gestionnaire d'événements à partir de l'événement Project_Open à l'événement Project_Activate, comme suit :

        Private Sub Project_Activate(ByVal pj As MSProject.Project)
            AddHighlightRibbon
        End Sub
    
  4. Enregistrez le projet en cours et quittez Project 2010.

  5. Démarrez Project 2010, qui crée un nouveau projet vide.

Lorsqu'un nouveau projet est créé, ou lorsqu'un projet est ouvert, le Gestionnaire d'événements Project_Activate dans le fichier Global.MPT exécute la macro AddHighlightRibbon, comme dans la procédure 3.

Si vous laissez le Gestionnaire d'événements Project_Open et les macros liées dans le projet de test, lorsque vous ouvrez le projet de test, le Gestionnaire d'événements Project_Open s'exécute en premier et exécute le Gestionnaire d'événements Project_Activate dans le fichier Global.MPT. Vous pouvez facilement trouver l'ordre des événements en ajoutant une instruction de message dans les gestionnaires d'événements, tels que l'exemple suivant :

    Private Sub Project_Open(ByVal pj As Project)
        If (Not pj Is Nothing) Then
            MsgBox "Opening project: " & pj.Name
        End If
        
        AddHighlightRibbon
    End Sub

Lorsque vous copiez un gestionnaire d'événements à partir d'un projet spécifique de Global.MPT, il est conseillé de supprimer le Gestionnaire d'événements du projet d'origine.

Notes

Si un gestionnaire d'événements appelle une deuxième macro qui apporte une modification du ruban différent avec la méthode SetCustomUI, le deuxième appel substitue à la première. Pour effectuer les deux modifications de ruban, vous devez combiner les données XML dans le paramètre ribbonXml dans un seul appel de SetCustomUI.

Exemple

Le code suivant montre l'exemple VBA complet pour le projet de test, en utilisant le Gestionnaire d'événements Project_Open.

    Option Explicit
    
    Sub ToggleManualTasksColor()
        Dim tsks As Tasks
        Dim t As Task
        Dim rgbColor As Long
        
        Set tsks = ActiveProject.Tasks
        
        For Each t In tsks
            If (Not t Is Nothing) And (Not t.Summary) Then
                SelectTaskField Row:=t.ID, Column:="Name", rowrelative:=False
                rgbColor = ActiveCell.CellColorEx
            
                If t.Manual Then
                    ' Check whether the manual task color is white.
                    If rgbColor = &HFFFFFF Then
                        Font32Ex CellColor:=&HF0D9C6  ' Change the background to light blue.
                    Else
                        Font32Ex CellColor:=&HFFFFFF  ' Change the background to white.
                    End If
                Else
                    ' The task is automatically scheduled, so change the background to white.
                    Font32Ex CellColor:=&HFFFFFF
                End If
            End If
        Next t
    End Sub
    
    Private Sub Project_Open(ByVal pj As Project)
        AddHighlightRibbon
    End Sub
    
    
    Private Sub AddHighlightRibbon()
        Dim ribbonXml As String
        
        ribbonXml = "<mso:customUI xmlns:mso=""https://schemas.microsoft.com/office/2009/07/customui"">"
        ribbonXml = ribbonXml + "  <mso:ribbon>"
        ribbonXml = ribbonXml + "    <mso:qat/>"
        ribbonXml = ribbonXml + "    <mso:tabs>"
        ribbonXml = ribbonXml + "      <mso:tab id=""highlightTab"" label=""Highlight"" insertBeforeQ=""mso:TabFormat"">"
        ribbonXml = ribbonXml + "        <mso:group id=""testGroup"" label=""Test"" autoScale=""true"">"
        ribbonXml = ribbonXml + "          <mso:button id=""highlightManualTasks"" label=""Toggle Manual Task Color"" "
        ribbonXml = ribbonXml + "imageMso=""DiagramTargetInsertClassic"" onAction=""ToggleManualTasksColor""/>"
        ribbonXml = ribbonXml + "        </mso:group>"
        ribbonXml = ribbonXml + "      </mso:tab>"
        ribbonXml = ribbonXml + "    </mso:tabs>"
        ribbonXml = ribbonXml + "  </mso:ribbon>"
        ribbonXml = ribbonXml + "</mso:customUI>"
        
        ActiveProject.SetCustomUI (ribbonXml)
    End Sub

Sécurité

Pour définir la sécurité des macros, cliquez sur Options dans la vue Backstage (sous l'onglet Fichier sur le ruban), puis effectuez les opérations suivantes :

  1. Dans la boîte de dialogue Options de Project , cliquez sur l'onglet Centre de gestion de la confidentialité et puis cliquez sur Paramètres du Centre de gestion de la confidentialité.

  2. Dans la boîte de dialogue Centre de gestion de la confidentialité , cliquez sur l'onglet Paramètres des macros .

  3. Pour pouvoir tester les macros non signées, cliquez sur Désactiver toutes les macros avec notification, cliquez sur OKet puis cliquez à nouveau sur OK .

Lorsque vous essayez d'exécuter une macro non signée, Project affiche la boîte de dialogue de Notification de sécurité de Microsoft Project . Cliquez sur Activer les macros pour exécuter les macros dans le projet.

Conseil

Lorsque vous signez numériquement un projet macro, vous pouvez ouvrir le projet sans voir la boîte de dialogue de Notification de sécurité de Microsoft Project . L'article de signer numériquement votre projet de macro s'applique à tous les produits de Microsoft Office 2010 qui utilisent VBA, y compris Project 2010.

Voir aussi

Tâches

Procédure : Utiliser du code géré pour ajouter une commande personnalisée au ruban (traduction automatique)

Référence

Modifications des tables du modèle objet VBA (traduction automatique)

Autres ressources

Using the Project.Open Event

Office Fluent User Interface Developer Center

2007 Office System Add-In : galerie d'icônes

complément Office 2010 : galerie d'icônes

de signer numériquement votre projet de macro