Diagrammes ou graphiques de position et d’échelle avec Excel VBA

Si vous travaillez avec des diagrammes incorporés, vous devez d’abord déterminer exactement où ils doivent être disposés sur la feuille de calcul. Dans les articles précedentes, vous avez utilisé la méthode Add à laquelle vous avez donné les quatre arguments marge gauche, marge supérieure, largeur et hauteur. Le positionnement a été donné en points. Si vous avez déjà créé un diagramme incorporé et que vous souhaitez modifier la position du diagramme par la suite, vous devez le faire différemment. Accédez directement à un graphique incorporé et utilisez les propriétés Left et Top pour déterminer le coin supérieur gauche du graphique.

Sub GraphiquePosition()
With ActiveSheet.Shapes("Graphique1")
.Left = Range("A7").Left
.Top = Range("A7").Top
End With
End Sub

 

 

Commentaires:
 La propriété ActiveSheet vous donne un accès direct à la feuille de calcul active. Sur cette feuille de calcul, il y a un diagramme incorporé, que vous pouvez identifier en tant qu’objet forme. Un objet forme peut également être un formulaire automatique, une image clipart ou un autre objet OLE. Vous pouvez également l’utiliser pour déterminer la position d’autres éléments graphiques.

 Utilisez les propriétés Left et Top pour spécifier la position du diagramme spécifié sur la feuille de calcul. Pour ce faire, reportez-vous à la cellule A7, c’est-à-dire autrement dit, le coin supérieur gauche doit commencer dans la cellule A7.
1 Définir la hauteur et la largeur d’un diagramme
Si vous souhaitez ajuster la hauteur ou la largeur d’un diagramme incorporé ultérieurement, utilisez les propriétés Hauteur et Largeur.

Sub DefinirHauteurGraphique()
ActiveSheet.ChartObjects("Graphique 1").Height = 350
End Sub

 

Avec la propriété ActiveSheet, vous pouvez à nouveau accéder directement à la feuille active. Cette fois, cependant, vous adressez le diagramme incorporé directement via l’objet de collection ChartObjects, dont vous spécifiez la hauteur à l’aide de la propriété Height.
Si vous souhaitez uniquement ajuster la largeur d’un diagramme, utilisez la propriété Width.

Sub DefinirLargeurGraphique()
ActiveSheet.ChartObjects("Graphique 1").Width = 400
End Sub

 


2 Placer les diagrammes
Si vos diagrammes incorporés sont trop petits et que vous souhaitez les convertir en plein écran dans votre classeur, utiliser la macro suivante:

Sub GraphiqueIntegreFeuille()
ActiveSheet.ChartObjects(1).Activate
ActiveChart.Location Where:=xlLocationAsNewSheet, _
Name:="Grand diagramme"
End Sub

Commentaires:
 Accédez au premier graphique intégré de votre feuille de calcul et utilisez la méthode Location pour déplacer le graphique intégré. Avec la méthode Location, vous pouvez utiliser les constantes xlLocationAsNewSheet, xlLocationAsObject ou xlLocationAutomatic dans l’argument Where.

 Le graphique incorporé est déplacé vers une nouvelle feuille de graphique. Pour cette raison, utilisez l’argument xlLocationAsNewSheet. Dans l’argument Nom, spécifiez comment la nouvelle feuille de graphique doit être appelée.
Le cas inverse est également intéressant. Voici comment transférer un diagramme sur une feuille de diagramme en tant qu’objet dans un tableau. Comment insérer une nouvelle feuille de calcul et positionner tous les diagrammes du classeur qui se trouvent sur des feuilles de diagramme dans la feuille de calcul nouvellement insérée. Positionnez ensuite les schémas transférés, qui sont alors toujours les uns au-dessus des autres, les uns en dessous des autres et réduisez un peu les schémas intégrés.

Sub TransfererToutesFeuillesDiagramme()
Dim FeuilleCal As Object
Dim s As String
Dim i As Integer
Dim Ecke As Integer
Application.ScreenUpdating = False
Sheets.Add Before:=Worksheets(1)
Range("A1").Select
s = ActiveSheet.Name
For Each FeuilleCal In ActiveWorkbook.Sheets
FeuilleCal.Activate
If TypeName(ActiveSheet) = "Chart" Then _
ActiveChart.Location Where:=xlLocationAsObject, _
Name:=s
Next FeuilleCal
Sheets(s).Activate
Ecke = 10
For i = 1 To ActiveSheet.ChartObjects.Count
With ActiveSheet.ChartObjects(i)
.Top = Ecke
.Left = 10
.Height = 150
.Width = 350
End With
Ecke = Ecke + 160
Next i
Application.ScreenUpdating = True
End Sub

 

Commentaires:
 Désactivez la mise à jour de l’écran dans la première étape.

 Insérez ensuite une nouvelle feuille au début du classeur. Pour ce faire, utilisez la méthode Add, à laquelle vous passez l’index 1 en tant qu’argument Before.

 Enregistrez le nom de la nouvelle feuille de calcul dans la variable s pour pouvoir revenir à cette feuille de calcul ultérieurement. Dans une boucle For Each, parcourez le classeur feuille par feuille.

 Étant donné que seules les feuilles de diagramme peuvent être traitées, utilisez la fonction TypeName pour demander s’il s’agit d’une feuille de diagramme. La fonction TypeName renvoie la valeur de graphique pour une feuille de graphique et la valeur de feuille de calcul pour une table normale.

 Si une feuille de diagramme est déterminée, utilisez la méthode Location pour transférer le diagramme vers le T précédemment inséré feuille de disque.
Une fois que vous avez vérifié toutes les tables du classeur, assurez-vous que les diagrammes incorporés sont correctement disposés sur la nouvelle feuille de tableau. Excel a copié tous les diagrammes les uns sur les autres. Vous devez maintenant séparer ces diagrammes superposés et les réorganiser sur la feuille de calcul. Pour ce faire, configurez une boucle For Next dans laquelle vous distribuez tous les diagrammes insérés. Utilisez la propriété Count pour déterminer le nombre de diagrammes incorporés dans la feuille de calcul.

Dans le coin variable, vous définissez le bord supérieur du diagramme incorporé. Au début, définissez la variable sur la valeur 10 et augmentez cette variable d’au moins la hauteur définie du diagramme inséré.
Si vous souhaitez marquer tous les diagrammes incorporés dans un tableau, utilisez la macro suivante.

Sub MarquezTousDiagrammes()
With Worksheets("Feuil5")
If .Shapes.Count > 0 Then
.Shapes.SelectAll
End If
End With
End Sub

 

Commentaires:
 Au début de la macro, recherchez s’il y a des diagrammes ou d’autres objets graphiques tels que des boutons, des images clipart ou similaires dans le tableau.

 Utilisez l’instruction Shapes.Count pour cette tâche. Si cette requête renvoie une valeur> 0, il y a des »formes« dans votre table, que vous pouvez marquer à l’aide de la méthode SelectAll.
3 Diagrammes de mise à l’échelle
Avec VBA, vous avez la possibilité d’accéder à tous les éléments d’un diagramme. Par exemple, vous pouvez également modifier la mise à l’échelle d’un ou plusieurs diagrammes.
Lorsque vous créez des graphiques, Excel est basé sur l’entrée la plus élevée du tableau.

Pour cette raison, les deux diagrammes de la figure suivante sont également différents en termes de mise à l’échelle. Les dimensions sont déformées. Une mise à l’échelle uniforme serait meilleure ici.
Si vous avez intégré encore plus de diagrammes sur une feuille de calcul et que vous souhaitez utiliser la même mise à l’échelle pour tous les diagrammes à des fins de comparabilité, vous pouvez utiliser la macro suivante.

Sub DefinirMiseEchelleDiagramme()
Dim i As Integer
Dim valeurMax As Long
Dim Etape As Integer
valeurMax = WorksheetFunction.Max(ActiveSheet.UsedRange)
valeurMax = valeurMax * 1.1
Etape = valeurMax / 5
For i = 1 To ActiveSheet.ChartObjects.Count
ActiveSheet.ChartObjects(i).Select
With ActiveChart.Axes(xlValue)
.MinimumScale = 0
.MaximumScale = valeurMax
.MajorUnit = Etape
End With
Next i
End Sub

 

Commentaires:

 Dans la première étape, vous obtenez la valeur la plus élevée sur la feuille de calcul. Cette valeur doit représenter la valeur la plus élevée de la mise à l’échelle avec une petite prime plus tard. Pour ce faire, utilisez la fonction Max que vous appliquez à la propriété UsedRange et enregistrez le résultat de celle-ci dans Variables valeurMax.

 Ajoutez 10 pour cent à la valeur obtenue de cette manière, de sorte que la plus grande sauie ne pende pas directement sous le bord supérieur et ait encore un peu d’air. Pour ce faire, utilisez la variable valeurMax avec un facteur de 1,1, ce qui donne exactement 10%.

 À l’étape suivante, vous déterminez la taille de pas à laquelle les lignes de division horizontales doivent être tracées. Donc vous pourriez décider d’autoriser exactement cinq lignes de division horizontales. Pour ce faire, divisez la variable valeurMax par la valeur 5 et enregistrez le résultat à partir de celle-ci dans l’étape Variables.

 Ensuite, configurez une boucle For Each, qui parcourt tous les diagrammes incorporés de la feuille tibiae et démarre la mise à l’échelle uniforme.

Utilisez l’instruction ChartObjects.Count pour déterminer le nombre de diagrammes incorporés dans la feuille de calcul.

 À l’aide de la méthode Select, vous activez un diagramme après l’autre dans la boucle et appliquez les propriétés suivantes à l’axe:
La propriété MinimumScale représente la valeur minimale d’un grand axe et est définie sur 0 dans l’exemple. Avec la propriété MaximumScale, vous annoncez la valeur la plus élevée de l’axe des tailles, que vous prenez à partir de la valeur de la variable. Utilisez la propriété MajorUnit pour définir la largeur de pas du grand axe. Vous pouvez trouver la valeur pour cela dans l’étape Variables.

S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
Voir tous les commentaires

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x