Activer une macro (ajustement d'echelle graphe) à chaque changement de données

jojo57

XLDnaute Nouveau
bonjour, nouvelle journée nouvelle question:). Voila, j'ai un graphe avec deux courbes et le probleme c'est que le minimum en ordonnée est parfois ajustée par rapport à la plus faible valeur de ma plage, et parfois c'est 0. Quand c'est 0, on ne voit plus rien ! donc j'ai reécrit une macro, avec les moyens du bord (novice), pour faire cet ajustement:

Sub Echelle_graphe()

PHP:
With ActiveSheet.ChartObjects("Graphique 13").Chart.Axes(xlValue)
.MinimumScale = Application.Min(Range("B23:B34", "C23:C34"))
.MaximumScale = Application.Max(Range("B23:B34", "C23:C34"))
End With
End Sub

et ca marche cependant il faut automatiser ça, car la, il faut que j'excecute la macro a chaque changement de données

Maintenant les données de la plage B23-B34 et C23-C34 changent en fonction de 5 listes deroulantes (date, magasin, produit, etc...). Donc il faudrait qu'à chaque fois qu'il y ait un changement dans les listes deroulantes en cellule B3 B5 E3 E5 G5, c'est à dire un changement de données, la macro s'éxecute.

Ou peut etre un autre moyen: si les cellules de B23 a B34 ont changé(ca veut dire qu'on a touché au moins a une des listes deroulantes), alors on execute la macro echelle_graphe?

Vous pouvez m'aider svp?
 

Pierrot93

XLDnaute Barbatruc
Re : Activer une macro (ajustement d'echelle graphe) à chaque changement de données

Bonjour jojo, Michel:)

regarde ceci, à placer dans le module de la feuille concernée, click droit sur l'onglet => visualiser le code et tu colles :
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B23:C34")) Is Nothing Then
    With Me.ChartObjects("Graphique 13").Chart.Axes(xlValue)
        .MinimumScale = Application.Min(Range("B23:B34", "C23:C34"))
        .MaximumScale = Application.Max(Range("B23:B34", "C23:C34"))
    End With
End If
End Sub

bon après midi
@+
 

jojo57

XLDnaute Nouveau
Merci à vous. Pierrot ça marche. Thx. Par contre, est ce que c'est possible de faire en sorte que ce soit des chiffres ronds dans la legende? Par exemple mon min dans la legende c'est 10408763, je prefererai avoir 10408000 en minimum, c'est possible? pareil pour le max 14867446, avoir plutot 14868000?
 

Pierrot93

XLDnaute Barbatruc
Re : Activer une macro (ajustement d'echelle graphe) à chaque changement de données

Re,

essaye ceci :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B23:C34")) Is Nothing Then
    With Me.ChartObjects("Graphique 13").Chart.Axes(xlValue)
        .MinimumScale = Int((Application.Min(Range("B23:B34", "C23:C34"))) / 1000) * 1000
        .MaximumScale = Int(((Application.Max(Range("B23:B34", "C23:C34"))) / 1000) + 1) * 1000
    End With
End If
End Sub
 

Statistiques des forums

Discussions
312 480
Messages
2 088 757
Membres
103 950
dernier inscrit
Thomas Solioz