Pb d'échelle sur un graphique

  • Initiateur de la discussion Anita
  • Date de début
A

Anita

Guest
Bonjour au forum!!

J'ai un tableau stats de 2 lignes. A partir de celui-ci je construit un graphique en courbes que je personnalise ensuite. Je me définis pour mon axe ordonnées une échelle avec mini et maxi.

Seul hic, c'est que suivant le tableuax ces mini/maxi ne sont jamais les mêmes.....

Existe-t il une possibilité par VBA de déterminer lui même ces deux valeurs à fin d'obtenir un graphique bien lisible entre ces deux valeurs?

Ex de tablaeu:

S 1 S 2 S 3 S 4 S 5
A 102,4 82,1 94,7 102,5 92,0
B 96,1 83,7 95,2 102,5 86,5

Un grand merci a celle ou celui qui me dépatouillera.
bonne journée :)
 

Creepy

XLDnaute Accro
Bonjour le Forum, Anita,

Premièrement il faut savoir qu'il y a un bug dans excel. Par macro si tu mets les lignes :
.MinimumScaleIsAuto = True
.MaximumScaleIsAuto = True
sur True, ca ne marche pas, l'echelle automatique décone plein tube. Donc il faut les définir toi même !

Voici le code que j'utilsie pour mettre mes echelles à la bonne taille, sachant que mon graph comporte deux axes

Code:
Dim MinX As Double, MaxX As Double
Dim MinY As Double, MaxY As Double
Dim MinY1 As Double, MinX1 As Double
Dim FinX As Integer, Annee As Integer


FinX = Feuil1.Range('C7').End(xlToRight).Column
MaxX = Application.WorksheetFunction.Max(Feuil1.Range(Cells(8, 3), Cells(8, FinX)))
MinX = Application.WorksheetFunction.Min(Feuil1.Range(Cells(8, 3), Cells(8, FinX)))

MaxY = Application.WorksheetFunction.Max(Feuil1.Range(Cells(9, 3), Cells(9, FinX)))
MinY = Application.WorksheetFunction.Min(Feuil1.Range(Cells(9, 3), Cells(9, FinX)))

MaxX = MaxX + 0.5
MaxY = MaxY + 0.5
MinX1 = MinX
MinY1 = MinY
MinX = MinX - 0.5
MinY = MinY - 0.5
puis dans les propriété du graphqiue :
Code:
ActiveChart.Axes(xlValue).Select
    
    With ActiveChart.Axes(xlValue)
    .CrossesAt = CDec(Feuil1.Range('D5').Value)
    .MinimumScaleIsAuto = True
    .MaximumScaleIsAuto = True
    .MinimumScale = MinY
    .MaximumScale = MaxY
    
    If Feuil1.Range('K5').Value = 'OUI' Then
    .MajorTickMark = xlOutside
    .MinorTickMark = xlNone
    .TickLabelPosition = xlNextToAxis
    End If
    
    End With
    
ActiveChart.Axes(xlCategory).Select
    With ActiveChart.Axes(xlCategory)
      .CrossesAt = CDec(Feuil1.Range('C5').Value)
      .MinimumScaleIsAuto = True
      .MaximumScaleIsAuto = True
      .MinimumScale = MinX
      .MaximumScale = MaxX
    
    If Feuil1.Range('K5').Value = 'OUI' Then
    .MajorTickMark = xlOutside
    .MinorTickMark = xlNone
    .TickLabelPosition = xlNextToAxis
    End If
     
    End With
Voila en esperant que cela t'aide

++

Creepy
 
A

Anita

Guest
Creepy, J'ai un petit souscis d'application car trop peu familiarisé avec le VBA.
As tu un exemple de fait. Si oui ne le zip pas change juste l'extension xls en zip. Car je ne dispose pas de dézippeur. Si ce n'est pas possible envois le zippé je le déziperais chez un ami...

Mille merci encore :)
 

Discussions similaires

Statistiques des forums

Discussions
312 337
Messages
2 087 392
Membres
103 536
dernier inscrit
komivi