Macro : Zoom sur un graphique (changement d'échelle)

Gisamark

XLDnaute Junior
Macro : Zoom sur un graphique (changement d'échelle) [RESOLU]

[RESOLU]

Bonjour tout le monde,

J'ai créé une macro pour faire un zoom sur un graphique via un changement d'échelle. (voir code plus bas)
Avant de pouvoir faire ce zoom, il faut séléctionner un graphique.
La macro marche parfaitement quand je l'exécute par la barre d'outil.
Mais j'aimerais pouvoir la lancer en cliquant sur un bouton ; le problème, c'est que lorsque je clique sur ce bouton, mon code plante.
Merci de votre aide. :)

Le code : (j'ai mis en rouge la ligne qui fait planter)

Code:
Function GraphPresent() As Boolean
[COLOR="SeaGreen"]'On test la présence d'un graphe dans ActiveChart[/COLOR]
    If ActiveChart Is Nothing Then
        GraphPresent = False
        MsgBox "Veuillez séléctionner un graphique."
    Else
       GraphPresent = True
    End If
End Function


Sub ZoomPlus()
    
If Not GraphPresent Then Exit Sub [COLOR="SeaGreen"]'On lance la macro seulement si un graphe est séléctionné[/COLOR]    
Dim Min As Long
Dim Max As Long
Dim Range As Long [COLOR="SeaGreen"]'Range sera égal à Max-Min[/COLOR]

    [COLOR="SeaGreen"]'Zoom sur les abscisses[/COLOR]
    [COLOR="Red"]ActiveChart.Axes(xlCategory).Select[/COLOR]
    With ActiveChart.Axes(xlCategory)
        Min = .MinimumScale
        Max = .MaximumScale
        Range = Max - Min
      [COLOR="SeaGreen"]'on change l'échelle pour qu'elle corresponde à un zoom x2 des aires[/COLOR]
        .MinimumScale = Min + Range * 0.15
        .MaximumScale = Max - Range * 0.15
     End With
        
    [COLOR="SeaGreen"]'Zoom sur les ordonnées (idem que pour les abscisses)[/COLOR]
    ActiveChart.Axes(xlValue).Select
    With ActiveChart.Axes(xlValue)
        Min = .MinimumScale
        Max = .MaximumScale
        Range = Max - Min
      [COLOR="SeaGreen"]'on change l'échelle[/COLOR]
        .MinimumScale = Min + Range * 0.15
        .MaximumScale = Max - Range * 0.15
    End With
End Sub

Par ailleurs, ça n'a rien à voir, mais que signifie le "xl" dans Axes(xlValue) et Axes(xlCategory) ?
Merci.
 
Dernière édition:

john

XLDnaute Impliqué
Re : Macro : Zoom sur un graphique (changement d'échelle)

Bonjour,

Voilà une solution, ce n'est peut être pas LA solution mais ça fonctionne sans problème.

Par contre pour ce qui est de la signification du "xl" j'en sais trop rien...

Bonne journée.

John
 

Pièces jointes

  • zoom_graphique.xls
    36 KB · Affichages: 582

Gael

XLDnaute Barbatruc
Re : Macro : Zoom sur un graphique (changement d'échelle)

Bonjour Gisamark, bonjour John,

John, ta solution est un zoom d'affichage, mais si j'ai bien compris, il faut faire un zoom du graphique lui-même en changeant les échelles des axes.

Lorsque tu clicques sur un bouton, la sélection en cours est annulée et ton grahique n'est plus sélectionné. Si tu veux passer par un bouton, il faut activer le graphique dans la macro:

Code:
    'Zoom sur les abscisses
    [COLOR=red]ActiveSheet.ChartObjects("Graphique 1").Activate[/COLOR]
    ActiveChart.Axes(xlValue).Select
    With ActiveChart.Axes(xlValue)

@+

Gael
 

Gisamark

XLDnaute Junior
Re : Macro : Zoom sur un graphique (changement d'échelle)

Merci pour ta réponse John mais ce n'est pas ce que j'attend.
(ton fichier agrandi la fenêtre du graphique ; cf la pièce jointe pour voir la différence)

J'ai mis mon fichier en pièce jointe.
Je répète, ma macro fonctionne quand je clique sur Outils --> Macro --> Exécuter.
Par contre, une fois que je l'ai affectée à un bouton, le code plante en cliquant sur le bouton.

Il y a un problème avec ActiveChart, mais je ne sais pas comment le régler.

Merci de votre aide.
 

Pièces jointes

  • ZoomViaEchelle.xls
    26 KB · Affichages: 467

Gisamark

XLDnaute Junior
Re : Macro : Zoom sur un graphique (changement d'échelle)

Oups je viens de voir ton post Gael ! :D

Merci de ta réponse ; elle est presque parfaite, mais je ne connais pas le nom du graphe. :(

Comment puis-je contourner ce problème ?
Sachant que je n'aurais qu'un seul graphe affiché dans cette feuille, y a-t-il une fonction qui puisse sélectionner le graphe ?
Ou tout simplement, est-il possible de donner un nom au graphe durant sa création ?

Encore merci.
 
Dernière édition:

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Macro : Zoom sur un graphique (changement d'échelle)

Bonjour à tous,

pour connaître facilement le nom du graphe,

démarrer l'enregistrement de macro
sélectionner le graphe
arreter l'enregistrement de macro
aller voir le code généré Alt+F11 -----> le nom du graphe s'y trouve

à+
.
 

Gisamark

XLDnaute Junior
Re : Macro : Zoom sur un graphique (changement d'échelle)

Salut Laurent, merci de ta réponse, mais ça ne m'aide pas. ;)
Je me suis peut-être mal exprimé : je ne connais pas le nom du graphe... car il change tout le temps !
L'utilisateur de mon application va tracer plusieurs graphes différents, et donc le nom va changer souvent. ("graphique 63", "graphique 64", "graphique 65", etc...)
 

Gisamark

XLDnaute Junior
Re : Macro : Zoom sur un graphique (changement d'échelle)

Merci Gael c'est parfait ! :)
Merci à tous ceux qui ont essayé de m'aider. ;)

Je vais sûrement poster mon application quand elle sera finie, car je n'en ai trouvé aucune équivalente sur le net après des heures de recherche. (bien qu'il n'y ait rien de compliqué)
Ca pourra peut-être aider certains à l'avenir.
 

Discussions similaires

Réponses
0
Affichages
151
Réponses
1
Affichages
166
Réponses
4
Affichages
706

Statistiques des forums

Discussions
312 207
Messages
2 086 238
Membres
103 162
dernier inscrit
fcfg