Microsoft 365 Organiser un graphe en VBA

Pernin

XLDnaute Nouveau
Bonjour,

Je débute en VBA, donc je fais souvent appel à vous (mais toujours après une longue session de recherche), excusez moi pour cela...

Je souhaite réaliser un bouton qui puisse lancer une macro qui afficherait un graphe selon un tableau, et selon un critère. Pour cela j'ai réalisé un code, je me suis inspiré de plusieurs choses trouvées sur internet. Tout peut être modifié.

Le code fonctionne mais m'affiche un graphe dont les axes x et y sont inversés... Rien de très méchant, je sais le modifier manuellement, mais j'aimerai (pour la satisfaction d'avoir un bel outil) ne pas avoir à le faire. De plus j'aimerai que le nom des lignes se retrouvent dans le graphe... On le retrouve dans les colonnes mais pas les lignes :( .

Vous retrouverez un fichier anonyme pour vous aider ! Si vous avez la moindre piste de solution, n'hésitez pas je suis preneur !

Je vous remercie pour le temps accordé !

Passez une excellente journée.

Cordialement,
Greg
 

Pièces jointes

  • TEST XLDL Graphique.xlsm
    25.1 KB · Affichages: 8

Pernin

XLDnaute Nouveau
Bonjour,

Je débute en VBA, donc je fais souvent appel à vous (mais toujours après une longue session de recherche), excusez moi pour cela...

Je souhaite réaliser un bouton qui puisse lancer une macro qui afficherait un graphe selon un tableau, et selon un critère. Pour cela j'ai réalisé un code, je me suis inspiré de plusieurs choses trouvées sur internet. Tout peut être modifié.

Le code fonctionne mais m'affiche un graphe dont les axes x et y sont inversés... Rien de très méchant, je sais le modifier manuellement, mais j'aimerai (pour la satisfaction d'avoir un bel outil) ne pas avoir à le faire. De plus j'aimerai que le nom des lignes se retrouvent dans le graphe... On le retrouve dans les colonnes mais pas les lignes :( .

Vous retrouverez un fichier anonyme pour vous aider ! Si vous avez la moindre piste de solution, n'hésitez pas je suis preneur !

Je vous remercie pour le temps accordé !

Passez une excellente journée.

Cordialement,
Greg
Je suis tout à fait conscient que je m'embête à faire des macros, je pourrais faire un graphe par mois ça conviendrait très bien, mais j'ai envie d'aller chercher la petite bête, la petite subtilité qui rendra l'outil agréable à utiliser.
 

vgendron

XLDnaute Barbatruc
Hello
Dans la mesure où tu ne spécifies qu'une colonne de données pour ton graphique, excel en fait directement une série de données y
pour créer ton graphique comme tu le souhaites, utilise l'enregistreur de macro pour voir le code à récuperer et adapter

en attendant, je me suis permis de simplifier ton code
VB:
Sub Book4CréationGraphiqueIntégréAvecChartObject()

Dim Graph As ChartObject
Dim n
Dim graphiqueIntégré As ChartObject

With ActiveSheet
    If .ChartObjects.Count > 0 Then 'si il y a un graphique
        .ChartObjects.Delete 'on efface tous les graphiques
    End If
    n = .Range("R4").Value
    Set graphiqueIntégré = .ChartObjects.Add(Left:=800, Width:=380, Top:=80, Height:=200)
    graphiqueIntégré.Chart.SetSourceData Source:=.Range(n & "1:" & n & "70")
End With
End Sub
 

Pernin

XLDnaute Nouveau
Hello
Dans la mesure où tu ne spécifies qu'une colonne de données pour ton graphique, excel en fait directement une série de données y
pour créer ton graphique comme tu le souhaites, utilise l'enregistreur de macro pour voir le code à récuperer et adapter

en attendant, je me suis permis de simplifier ton code
VB:
Sub Book4CréationGraphiqueIntégréAvecChartObject()

Dim Graph As ChartObject
Dim n
Dim graphiqueIntégré As ChartObject

With ActiveSheet
    If .ChartObjects.Count > 0 Then 'si il y a un graphique
        .ChartObjects.Delete 'on efface tous les graphiques
    End If
    n = .Range("R4").Value
    Set graphiqueIntégré = .ChartObjects.Add(Left:=800, Width:=380, Top:=80, Height:=200)
    graphiqueIntégré.Chart.SetSourceData Source:=.Range(n & "1:" & n & "70")
End With
End Sub
Je vais regarder cela, je te remercie.
 

Pernin

XLDnaute Nouveau
Hello
Dans la mesure où tu ne spécifies qu'une colonne de données pour ton graphique, excel en fait directement une série de données y
pour créer ton graphique comme tu le souhaites, utilise l'enregistreur de macro pour voir le code à récuperer et adapter

en attendant, je me suis permis de simplifier ton code
VB:
Sub Book4CréationGraphiqueIntégréAvecChartObject()

Dim Graph As ChartObject
Dim n
Dim graphiqueIntégré As ChartObject

With ActiveSheet
    If .ChartObjects.Count > 0 Then 'si il y a un graphique
        .ChartObjects.Delete 'on efface tous les graphiques
    End If
    n = .Range("R4").Value
    Set graphiqueIntégré = .ChartObjects.Add(Left:=800, Width:=380, Top:=80, Height:=200)
    graphiqueIntégré.Chart.SetSourceData Source:=.Range(n & "1:" & n & "70")
End With
End Sub
Et concernant le nom des éléments qui composent le graphique, tu as des idées ?
 

vgendron

XLDnaute Barbatruc
autre optimisation de ta macro pour ne prendre que les lignes contenant des données

plus besoin du nom de la colonne en R4
VB:
Sub Book4CréationGraphiqueIntégréAvecChartObject()

Dim Graph As ChartObject
Dim n As Long
Dim GraphiqueIntégré As ChartObject

With ActiveSheet
    If .ChartObjects.Count > 0 Then 'si il y a un graphique
        .ChartObjects.Delete 'on efface tous les graphiques
    End If
    NomMois = .Range("R3")
    Set trouve = .Rows(1).Find(NomMois)
    If Not trouve Is Nothing Then
        n = trouve.Column
    End If

    LastLine = .Range("B" & .Rows.Count).End(xlUp).Row 'dernière ligne de la colonne B
    Set Données = .Cells(1, n).Resize(LastLine, 1)
    
    Set GraphiqueIntégré = .ChartObjects.Add(Left:=800, Width:=380, Top:=80, Height:=200)
    GraphiqueIntégré.Chart.SetSourceData Source:=Données
End With
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 608
Messages
2 111 113
Membres
111 044
dernier inscrit
MauriceLebon