Recherche un expert en graphique VBA

Bonjour le forum,

Je recherche une personne qui maitrise le graphique en vba car je n'arrive pas à trouver de solution à mon problème.

Dans mon USF Graphique, j'ai intégré des combobox qui me permet de choisir la période.

je crée mon graphique qui se met dans l'image de USF.

Mon problème concerne la taille de mon graphique, à partir du moment ou je choisis une période large mon graphique est illisible

J'aimerais l'agrandir en fonction des données qui se trouve dans les axes Y et X

Je vous mets un bout de fichier.

merci d'avance aux personnes qui m'aiderons

20ex.xlsm (214.66 Ko)

Pour ce qui me concerne, j'ai été amené à forcer l'échelle par VBA que ce soit en Y et X. Je trouve ça assez pratique. ON calcule les valeurs et on les transmet au graphe.

Ci-joint un exemple:

Sub Creation_Graphe_CAC_40(Titre As Variant, DateDeb_CAC As Date, DateFin_CAC As Date, MinScale_CAC As Variant, MaxScale_CAC As Variant)

Dim Feuille As Chart

Dim Nom_Feuille As Variant

Dim Ma_Feuille As Worksheet

' *************************** Suppression graphe si existant ************************************************

'Evite erreur si graphe "Graphe_CAC_40" existe déja (suppression puis recréation).

Nom_Feuille = "Graphe_CAC_40"

For Each Feuille In Charts

If Nom_Feuille = Feuille.Name Then

'Evite de demander la confirmation de suppression.

Application.DisplayAlerts = False

'Supprime la feuille graphique pour la recréer ensuite.

Sheets(Nom_Feuille).Delete

'Autorise de nouveau la confirmation de suppression.

Application.DisplayAlerts = True

End If

Next Feuille

' ******************************** Constitution du GRAPHE CaC_40 *****************************************

Set Ma_Feuille = ThisWorkbook.Worksheets("Feuille_Graphe_CAC_40")

'Ajoute un nouveau graphe.

Charts.Add

With ActiveChart

'Sélectionne un type de graphe et la source.

.ChartType = xlXYScatterLinesNoMarkers

'Etiquettes du graphe en "D1:G1" et données stockées dans "Plage_Donnees_CAC"

'Utilisation de l'instruction Union pour fournir une plage de données non contigues

.SetSourceData Union(Ma_Feuille.Range("D1:G1"), Ma_Feuille.Range("Plage_Donnees_CAC")), _

PlotBy:=xlColumns

.Location Where:=xlLocationAsNewSheet

'Force le Nom de la feuille graphique créée.

.Name = "Graphe_CAC_40"

.HasTitle = True

.Axes(xlCategory, xlPrimary).HasTitle = False

.Axes(xlValue, xlPrimary).HasTitle = False

'Formatage axe abscisse (Date)

.Axes(xlCategory).TickLabels.NumberFormat = "mm/yyyy"

'Mise en forme du titre suivant "Titre" transmis par Sub.

With ActiveChart.ChartTitle

.Characters.Text = Titre

.Border.LineStyle = xlContinuous

.Interior.ColorIndex = 43

.Characters.Font.ColorIndex = 2

.Font.Size = 15

.Font.ColorIndex = 6

'Positionne le titre correctement.

.Left = 200

.Top = 20

End With

'Format Zone de graphique en Jaune et encadrée.

.ChartArea.Interior.ColorIndex = 19

.ChartArea.Border.LineStyle = xlContinuous

'Zone de traçage en Gris et dimensionnée.

With ActiveChart.PlotArea

.Interior.ColorIndex = 2

.Height = 370

.Top = 75

.Left = 20

.Width = 690

.Border.ColorIndex = 16

End With

.Legend.Left = 10

.Legend.Top = 8

'Forcage de l'échelle avec DateDeb et DateFin transmis par Sub.

With ActiveChart.Axes(xlCategory)

.MinimumScale = DateDeb_CAC

.MaximumScale = DateFin_CAC

.MinorUnit = 91

.MajorUnit = 182

.Crosses = xlAutomatic

.MajorTickMark = xlOutside

.MinorTickMark = xlOutside

.TickLabelPosition = xlNextToAxis

End With

'Force la valeur "mini" et "max"de l'échelle des Y transmis par Sub.

'Force graduations secondaires

With ActiveChart.Axes(xlValue)

.MinimumScale = MinScale_CAC

.MaximumScale = MaxScale_CAC

.CrossesAt = MinScale_CAC

.MinorTickMark = xlOutside

End With

'Force la valeur verte pour la courbe MM50.

With ActiveChart.SeriesCollection(3).Border

.ColorIndex = 10

.Weight = xlThin

.LineStyle = xlContinuous

End With

'Quadrillage mineur principal pour graphe

.SetElement (msoElementPrimaryValueGridLinesMinorMajor)

End With

'Positionne le graphe après la feuille de calcul.

ActiveChart.Move After:=Worksheets(Worksheets.Count)

End Sub

Re,

Merci pour la proposition,

Tu aurais un fichier exemple, pour faire du pas à pas?

Si cela peut t'aider. J'ai coupé beaucoup de choses dans le fichier. Reste la partie "Cac40" opérationnelle.

Tu sélectionnes "Portefeuilles Actions dans le Ribbon et dedans il est possible d'utiliser la partie Cac40 en choisissant la durée et en cliquant sur "Evolution du Cac_40.

En fait je l'ai adapté à la présentation que je voulais.

Cordialement.

Rechercher des sujets similaires à "recherche expert graphique vba"