OVH Cloud OVH Cloud

Ordre de grandeur -aide pour ine formule

2 réponses
Avatar
Patrick BASTARD
Bonjour, vous.

J'ai un nouveau problème à soumettre à votre sagacité.

Un graphique dynamique à partir d'une liste déroulante et de index/equiv,
2 séries de valeur à chaque fois : Objectif (en courbe) et Réalisé (en
histogramme)

L'ordre de grandeur des valeurs à représenter est hétérogène, en fonction du
choix dans la liste :
1er exemple : Objectif : 50 000 (réalisé entre 30 000 et 65 000)
2° exemple : Objectif : 800 (réalisé entre 500 et 1 000)
3° exemple : Objectif : 1.234 (réalisé entre 1.200 et 1.500)
4° exemple : Objectif : 7.00% (réalisé entre 5.00 et 12.00%)
5° exemple : Objectif : 99.50% (rélisé entre 96.00 et 100.00%)

Pour paramétrer l'échelle du graphique, je cherche une formule indiquant les
valeurs min et max des séries choises, pour les récupérer afin de renseigner
MaximumScale et MinimumScale dans une macro.
Mais je m'y perds avec arrondi, min et max, de manière à ce que les valeurs
min et max retournées soient:
1° -significatives, quel que soit l'ordre de grandeur de la série concernée,
2° - arrondies de manière à avoir une échelle cohérente sur le graphe.

Si vous avez déjà été confrontés à ce type de problème, ou si vous avez des
idées, elles seront les bienvenues.

Sinon, bon dimanche quand même.
;-)


--
Bien cordialement,
P. Bastard

2 réponses

Avatar
Nicolas B.
Salut Patrick,

Avec les valeurs d'ordonnée en B2:B99 :

Sub Echelle()

Dim Mini As Double, Maxi As Double
Dim Mult As Double

Mini = WorksheetFunction.Min([B2:B99])
Maxi = WorksheetFunction.Max([B2:B99])
Mult = Int(WorksheetFunction.Log10(Maxi - Mini))


With ActiveSheet.ChartObjects("Graphique 1").Chart.Axes(xlValue)
.MinimumScale = WorksheetFunction.RoundDown(Mini, -Mult)
.MaximumScale = WorksheetFunction.RoundUp(Maxi, -Mult)
End With

End Sub

Attention : ça ne marche qu'avec des valeurs positives.


A+
Nicolas B.

Bonjour, vous.

J'ai un nouveau problème à soumettre à votre sagacité.

Un graphique dynamique à partir d'une liste déroulante et de index/equiv,
2 séries de valeur à chaque fois : Objectif (en courbe) et Réalisé (en
histogramme)

L'ordre de grandeur des valeurs à représenter est hétérogène, en fonction du
choix dans la liste :
1er exemple : Objectif : 50 000 (réalisé entre 30 000 et 65 000)
2° exemple : Objectif : 800 (réalisé entre 500 et 1 000)
3° exemple : Objectif : 1.234 (réalisé entre 1.200 et 1.500)
4° exemple : Objectif : 7.00% (réalisé entre 5.00 et 12.00%)
5° exemple : Objectif : 99.50% (rélisé entre 96.00 et 100.00%)

Pour paramétrer l'échelle du graphique, je cherche une formule indiquant les
valeurs min et max des séries choises, pour les récupérer afin de renseigner
MaximumScale et MinimumScale dans une macro.
Mais je m'y perds avec arrondi, min et max, de manière à ce que les valeurs
min et max retournées soient:
1° -significatives, quel que soit l'ordre de grandeur de la série concernée,
2° - arrondies de manière à avoir une échelle cohérente sur le graphe.

Si vous avez déjà été confrontés à ce type de problème, ou si vous avez des
idées, elles seront les bienvenues.

Sinon, bon dimanche quand même.
;-)




Avatar
Patrick BASTARD
Bonjour, *Nicolas B.*
J'ai lu ton post %
avec le plus grand intéret :

J'ai testé, mais certaines valeurs (les valeurs<0) génèrent une erreur.
Cette formule "imbuvable", fruit de mon imagination débordante, semble
fonctionner :
=SI(F35>10000;(ENT(F35/1000)-1)*1000;SI(F35>1000;(ENT(F35/100)-1)*100;SI(F35>100;(ENT(F35/10)-1)*10;SI(F35>10;(ENT(F35)-1);SI(F35>1;(ENT(F35)+1);SI(F35>0.1;(ENT(F35*100)-1)/100;SI(F35>0.01;(ENT(F35*100)-1)/100;MIN(B10:D10))))))))
mais je n'ai pas fini de tester.

Si vous connaisssez plus simple, je suis preneur...

--
Bien cordialement,
P. Bastard


Salut Patrick,

Avec les valeurs d'ordonnée en B2:B99 :

Sub Echelle()

Dim Mini As Double, Maxi As Double
Dim Mult As Double

Mini = WorksheetFunction.Min([B2:B99])
Maxi = WorksheetFunction.Max([B2:B99])
Mult = Int(WorksheetFunction.Log10(Maxi - Mini))


With ActiveSheet.ChartObjects("Graphique 1").Chart.Axes(xlValue)
.MinimumScale = WorksheetFunction.RoundDown(Mini, -Mult)
.MaximumScale = WorksheetFunction.RoundUp(Maxi, -Mult)
End With

End Sub

Attention : ça ne marche qu'avec des valeurs positives.


A+
Nicolas B.

Bonjour, vous.

J'ai un nouveau problème à soumettre à votre sagacité.

Un graphique dynamique à partir d'une liste déroulante et de
index/equiv, 2 séries de valeur à chaque fois : Objectif (en courbe)
et Réalisé (en histogramme)

L'ordre de grandeur des valeurs à représenter est hétérogène, en
fonction du choix dans la liste :
1er exemple : Objectif : 50 000 (réalisé entre 30 000 et 65 000)
2° exemple : Objectif : 800 (réalisé entre 500 et 1 000)
3° exemple : Objectif : 1.234 (réalisé entre 1.200 et 1.500)
4° exemple : Objectif : 7.00% (réalisé entre 5.00 et 12.00%)
5° exemple : Objectif : 99.50% (rélisé entre 96.00 et 100.00%)

Pour paramétrer l'échelle du graphique, je cherche une formule
indiquant les valeurs min et max des séries choises, pour les
récupérer afin de renseigner MaximumScale et MinimumScale dans une
macro. Mais je m'y perds avec arrondi, min et max, de manière à ce que
les
valeurs min et max retournées soient:
1° -significatives, quel que soit l'ordre de grandeur de la série
concernée, 2° - arrondies de manière à avoir une échelle cohérente
sur le graphe. Si vous avez déjà été confrontés à ce type de problème, ou
si vous
avez des idées, elles seront les bienvenues.

Sinon, bon dimanche quand même.
;-)