Travailler avec des graphiques

Dans Word 2007 Service Pack 2 (SP2) et les ultérieures, vous pouvez accéder à des graphiques et les manipuler par programmation à l’aide du modèle objet VBA dans Word. L’objet graphique dans Word est dessiné par la même implémentation de couche de dessin Office partagée utilisée par Excel. Ainsi, si vous êtes familiarisé avec le modèle objet graphique dans Excel, vous pouvez facilement migrer du code VBA Excel qui manipule des graphiques dans du code VBA Word.

Utilisation de l’objet Chart

Dans Word, un graphique est représenté par un objet Chart. L’objet Chart est contenu dans une collection InlineShapes ou Shapes. Vous pouvez utiliser la collection InlineShapes ou la collection Shapes de l’objet Document pour ajouter des graphiques ou accéder à des graphiques existants. Vous utilisez la méthode AddChart pour les deux collections, en spécifiant le type de graphique et son emplacement dans le document, afin d’ajouter un nouveau graphique.

Vous pouvez utiliser la propriété HasChart pour déterminer si un objet InlineShape ou Shape contient un graphique. Si HasChart renvoie la valeur True, vous pouvez alors utiliser la propriété Chart pour obtenir une référence à un objet Chart qui représente le graphique. À ce stade, l'implémentation est pratiquement identique à celle d'Excel et le code VBA peut être transféré entre les deux programmes dans la plupart des cas.

Par exemple, l'exemple de code VBA suivant ajoute un nouvel histogramme empilé 2D à la feuille de calcul active dans Excel et définit les sources de données du graphique sur la plage A1:C3 de la feuille de calcul Sheet1.

Sub AddChart_Excel()
    Dim objShape As Shape
    
    ' Create a chart and return a Shape object reference.
    ' The Shape object reference contains the chart.
    Set objShape = ActiveSheet.Shapes.AddChart(XlChartType.xlColumnStacked100)
    
    ' Ensure the Shape object contains a chart. If so,
    ' set the source data for the chart to the range A1:C3.
    If objShape.HasChart Then
        objShape.Chart.SetSourceData Source:=Range("'Sheet1'!$A$1:$C$3")
    End If
End Sub

En comparaison, l'exemple de code VBA suivant ajoute un nouvel histogramme empilé 3D au document actif et définit les données sources du graphique sur la plage A1:C3 des données de graphique associées au graphique.

Sub AddChart_Word()
    Dim objShape As InlineShape
    
    ' Create a chart and return a Shape object reference.
    ' The Shape object reference contains the chart.
    Set objShape = ActiveDocument.InlineShapes.AddChart(XlChartType.xlColumnStacked100)
    
    ' Ensure the Shape object contains a chart. If so,
    ' set the source data for the chart to the range A1:C3.
    If objShape.HasChart Then
        objShape.Chart.SetSourceData Source:="'Sheet1'!$A$1:$C$3"
    End If
End Sub

Principales différences entre les objets Chart dans Word et dans Excel

Bien que la manière de travailler avec des graphiques soit pratiquement identique dans Excel et dans Word, il est utile d'identifier les différences entre ces deux implémentations :

  • La création ou la manipulation par programme d'un objet ChartData dans Word requiert l'exécution d'Excel.

  • Les proprietés et méthodes relatives aux graphiques permettant de manipuler la feuille de graphique ne sont pas implémentées. Le concept de feuille de graphique est spécifique à Excel. Les feuilles de graphique n'étant pas utilisées dans Word, les méthodes et les propriétés utilisées pour référencer ou manipuler une feuille de graphique ont été désactivées pour ces applications.

  • Les propriétés et méthodes qui, dans Excel normalement, prennent une référence d’objet Range prennent désormais une adresse de plage dans Word. L’objet Range dans Word diffère de l’objet Range dans Excel. Pour éviter la confusion, le modèle d’objet de graphique dans Word accepte des chaînes d’adresse de plage comme « ='Sheet1'!$A$1:$D$5 » dans les propriétés et méthodes (comme la méthode SetSourceData de l’objet Chart) qui acceptent les objets Range dans Excel.

  • Un nouvel objet, ChartData, a été ajouté aux modèles objets VBA pour Word afin de fournir un accès aux données sous-jacentes liées ou incorporées pour un graphique. À chaque graphique sont associées les données utilisées pour dessiner le graphique dans Word. Les données du graphique peuvent soit être liées à partir d'un classeur Excel externe, soit être incorporées dans le graphique lui-même. L'objet ChartData encapsule l'accès aux données pour un graphique donné dans Word. Par exemple, l’exemple de code VBA suivant affiche, puis réduit, les données de graphique pour chaque graphique contenu dans le document actif dans Word.

Sub ShowWorkbook_Word() 
    Dim objShape As InlineShape 
     
    ' Iterates each inline shape in the active document. 
    ' If the inline shape contains a chart, then display the 
    ' data associated with that chart and minimize the application 
    ' used to display the data. 
    For Each objShape In ActiveDocument.InlineShapes 
        If objShape.HasChart Then 
 
            ' Activate the topmost window of the application used to 
            ' display the data for the chart. 
            objShape.Chart.ChartData.Activate 
             
            ' Minimize the application used to display the data for 
            ' the chart. 
            objShape.Chart.ChartData.Workbook.Application.WindowState = -4140 
        End If 
    Next 
End Sub 

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.