Choisir les valeurs qui s'affichent sur un axe d'un graphique en VBA

Bonjour,

J'ai ce graphique avec 2 ordonnées.
Un axe correspond à une profondeur en mètres et l'autre à l'altimétrie relative de cette profondeur, en m/au niveau de la mer.

image image

L'échelle inversée fonctionne pour la profondeur mais pas pour l'axe de l'altimétrie.

Ma profondeur 0 est bien localisée sur le graphe mais j'aimerais que l'axe de droite commence en haut par la valeur de 25.00 (correspondante au "0") sauf que cet axe commence en bas par la valeur la plus petite (soit ici 14.65).

C'est une macro qui génère ce graphique en fonction de la profondeur. La macro règle aussi la taille du graphique en fonction des valeurs maximales de mes courbes ainsi que l'écart de mes valeurs (ici = 1).

L'altimétrie du niveau 0 étant également une variable à définir avant de générer les tableaux, je ne peux donc pas utiliser la formule .MaximumScale.

Je cherche donc globalement, une formule ou une macro qui me permettra de déterminer les valeurs qui s'affichent sur mon axe, en forçant la valeur "0" ?

Merci d'avance !

Bonsoir,

Avez-vous fait ceci:

Clic droit sur l'axe vertical de droite, sélectionnez "Mise en forme de l'axe" et :

bratak

Cdlt

Merci, mais si j'inverse l'ordre des valeurs, c'est la plus petite valeur qui sera en haut et la plus grande valeur en bas, les profondeurs de l'autre axe ne correspondront donc plus :/

Bonjour,

Avec le fichier joint (sans données confidentielles), ce serait plus pratique.

Cdlt

Bonjour,

Ci-joint le fichier.

Pour cet exemple, j'aimerais que les valeurs qui s'affichent sur l'axe des ordonnées de droite correspondent avec les valeurs de l'axe de gauche.
Qu'il n'y ait plus de 9,50 ; 7,50 ; 6,50... mais 10, 8 , 6,.... correspondant aux valeurs 0 ; 2 ; 4...

L'axe secondaire affiche les valeurs de la case F45 (-10.50) et remonte par pas de 1, je voudrais donc que cet axe commence par afficher la case F4 (10).

Sachant que j'utilise déjà une macro avec minimum et maximum scale afin que le graphique s'adapte aux valeurs du tableau qui varient en fonction de la profondeur.

N'hésitez pas à me dire si je ne suis pas clair.

Merci de votre aide.

Bonjour,

Vous voulez dire ceci?

bratak

Cdlt

Dans l'idée oui.

Mais comme dans l'ordre d'exécution:

1) On définit une profondeur

2) La macro calcule toutes les données Y1 Y2 Y3 et Y4 sur une plage de profondeur [0; x]

3) La macro règle les minimum et les maximum des axes en fonction des données pour que le graphique soit lisible, clair et optimal.

Je ne veux/peux donc pas régler manuellement le problème, je pense avoir besoin d'une commande de macro qui définit les valeurs affichées sur l'axe.

Mais déjà, est-ce que cela correspond à ce que vous vouliez?

****************************************************************************

Ensuite, pour le macro, vous écrivez:

Sachant que j'utilise déjà une macro avec minimum et maximum scale afin que le graphique s'adapte aux valeurs du tableau qui varient en fonction de la profondeur.

Il suffit de l'inclure dans la macro existante, si vous ne savez pas le faire, mettez à disposition votre macro et nous verrons comment l'adapter.

Cdlt

bonjour Bratak, Arturo84,

on ajoute une 5ième série avec les données d'un tableau "TBL_Altitude". Les données de ce tableau sont les points qu'on veut voir à droite. On utilise les valeurs min, max et intervalle de l'axe Y et vos données A3:F45. Il n'y a pas un 2ième axe Y.

A adapter à vos voeux.

Bonjour,

Arthuro83, c'est ce que je veux en effet.

Ma macro :

ActiveSheet.ChartObjects("Graphique 7").Activate
With Application.ActiveChart.Axes(xlCategory, xlPrimary) 'Axe X
.MinimumScale = ActiveSheet.Range("X3").Value
.MaximumScale = ActiveSheet.Range("X4").Value
.MajorUnit = ActiveSheet.Range("X5").Value
End With
With Application.ActiveChart.Axes(xlValue, xlPrimary) 'Axe Y m/TN
.MinimumScale = ActiveSheet.Range("Y3").Value
.MaximumScale = ActiveSheet.Range("Y4").Value
.MajorUnit = ActiveSheet.Range("Y5").Value
End With
With Application.ActiveChart.Axes(xlValue, xlSecondary) 'Axe Y m NGF
.MinimumScale = ActiveSheet.Range("Y7").Value
If Range("A4").Value < 0 Then
.MaximumScale = ActiveSheet.Range("N2").Value
Else
.MaximumScale = ActiveSheet.Range("N3").Value
End If
.MajorUnit = ActiveSheet.Range("Y5").Value
End With

Merci BsAIv, je vais essayer d'adapter ta macro avec la mienne. Merci d'avoir bien détaillé toutes les formules. J'avais imaginé que mon problème aurait pu se régler en une petite ligne :)

re,

mon problème aurait pu se régler en une petite ligne :)

Si la valeur maximale de Y était 20 au lieu de 20,5, oui ...

avec votre macro adaptée

Rechercher des sujets similaires à "choisir valeurs qui affichent axe graphique vba"