Modifier un graphique avec une scrollbar.

Dudulle32 Messages postés 42 Date d'inscription mercredi 10 mai 2006 Statut Membre Dernière intervention 31 janvier 2014 - 22 août 2008 à 20:15
Dudulle32 Messages postés 42 Date d'inscription mercredi 10 mai 2006 Statut Membre Dernière intervention 31 janvier 2014 - 23 août 2008 à 16:45
Bonjour à tous.

Je suis en train de faire une petite application qui vas recuperer des valeurs et les afficher sur un graph de points.
Ces valeurs peuvent être faibles ou importantes, aussi il faut jouer avec l'echelle de l'axe des absices pour voir ce que l'on veux.
J'ai donc tenter d'utiliser une scrollbar pour modifier l'aspect du graph (modifier le maximum de l'echelle); j'ai fais un essai en definissant des valeurs possibles de 0 à 100 pour les valeurs de la scrollbar, et un defilement mini de 1.

Voici le code utilisé:

Private Sub ScrollBar1_Change()

    ActiveSheet.ChartObjects("Graphique 2").Activate
    ActiveChart.Axes(xlValue).Select
    With ActiveChart.Axes(xlValue)
        .MinimumScaleIsAuto = True
        .MaximumScale =ScrollBar1.Value
        .MinorUnitIsAuto = True
        .MajorUnitIsAuto = True
        .Crosses = xlAutomatic
        .ReversePlotOrder = False
        .ScaleType = xlLinear
        .DisplayUnit = xlNone
    End With
      
End Sub

Seulement ça ne marche pas... Le graphique se modifie une fois, et si je clique à nouveau sur le controle de la scrollbar pour la faire defiler excel plante.
Mon code comporte il une erreur ? faut il proceder autrement ?

Merci d'avance pour toute reponse qui pourra m'aider.

3 réponses

cs_akim77 Messages postés 73 Date d'inscription lundi 12 avril 2004 Statut Membre Dernière intervention 17 septembre 2008 4
23 août 2008 à 11:42
Salut,

 Avant de donner une valeur  à  MaximumScale tu dois faire MaximumScaleIsAuto = False
 sinon, effectivement et curieusement, ça plante plante Excel.

J'ai essayé avec le code ci-dessous (adapté a mon graphique) et ça fonctionne:

Private Sub ScrollBar1_Change()
    ActiveSheet.ChartObjects("Graphique 2").Activate
    ActiveChart.Axes(xlValue).Select
    With ActiveChart.Axes(xlValue)
        .MaximumScaleIsAuto = False
        .MaximumScale = ScrollBar1.Value
        .MinimumScaleIsAuto = False
        .MinimumScale = 0
    End With
End Sub

Akim
0
cs_akim77 Messages postés 73 Date d'inscription lundi 12 avril 2004 Statut Membre Dernière intervention 17 septembre 2008 4
23 août 2008 à 16:32
J'ai fait un nouvel essai et j'ai eus un plantage Excel avec
le même fichier.



Après moult essais, le problème n'apparaît pas, quand je mets une tempo à la
fin de la macro.


Je pense que l'événemet "ScrollBar1_Change()" se produit très souvent et comme le temps d'éxecution de la macro est relativement long , çà fini par planter Excel.




Private Sub
ScrollBar1_Change()
    ActiveSheet.ChartObjects("Graphique
1").Activate
    ActiveChart.Axes(xlValue).Select
    With ActiveChart.Axes(xlValue)
        .MaximumScaleIsAuto = False
        .MaximumScale = ScrollBar1.Value
        .MinimumScaleIsAuto = False
        .MinimumScale = 0
    End With








   
Application.Wait Now +
TimeValue("00:00:01") 'tempo une seconde






End Sub

Il y a surement une solution plus élegante que je te laisse chercher.
En fait avec .MaximumScaleIsAuto = True, ça fonctionne aussi. (c'était une fausse piste mais ça semblait logique non !)

A+

Akim
0
Dudulle32 Messages postés 42 Date d'inscription mercredi 10 mai 2006 Statut Membre Dernière intervention 31 janvier 2014
23 août 2008 à 16:45
Bonjour

Je viens d'essayer d'ajouter une tempo, et ça plante encore...
Ce n'est pas grave; j'utiliserai une textbox et l'utilisateur renseignera le maximum d'echelle lui même.
Merci pour ton intervention.
0
Rejoignez-nous