IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

changer l´échelle graphique par bouton commande [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 27
    Par défaut changer l´échelle graphique par bouton commande
    Bonjour,

    Pour mon travail j´ai besoin de créer une commande permettant à l´utilisateur de changer l´abscisse max d´un graphe comme le montre l´image


    Sachant que ce bouton et cette textbox doivent être crées par vba (je ne peux pas l´implémenter manuellement car la feuille excel est crée par vba).

    Seulement j´ai un bug lors de l´exécution à la ligne où j´appelle la valeur dans la textbox:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        ActiveSheet.Buttons.Add(1036.5, 25.5, 98.25, 39.75).Select
        Selection.OnAction = "PERSONAL.XLSB!Makro5"
     
        ActiveSheet.OLEObjects.Add(ClassType:="Forms.TextBox.1", Link:=False, _
            DisplayAsIcon:=False, Left:=994.5, Top:=90, Width:=78, Height:=27). _
            Select

    Puis la macro 5 appellée par clic sur le bouton:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Sub Makro5()
    '
    ' Makro5 Makro
    '
     
    'Supprimer graphe
     
    Sheets("ChartSheet").Select
        Range("L5").Select
        ActiveSheet.ChartObjects("Diagramm 1").Activate
        ActiveChart.Parent.Delete
     
     
    'Créer un nouveau graphe
     
    ActiveSheet.Shapes.AddChart.Select
        ActiveChart.ChartType = xlXYScatterLinesNoMarkers
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(1).Name = "='Data'!$B$1"
        ActiveChart.SeriesCollection(1).XValues = "='Data'!$A$4:$A$65536"
        ActiveChart.SeriesCollection(1).Values = "='Data'!$B$4:$B$65536"
     
        ActiveChart.ApplyLayout (8)
     
        ActiveChart.HasTitle = True
     
     
        With ActiveChart.Axes(xlCategory)
        .HasTitle = True
        .AxisTitle.Text = "Time"
        .MaximumScale = TextBox1.Text   '<--------BUG ICI
        End With
     
     
        With ActiveChart.Axes(xlValue)
        .MaximumScale = 300
        End With
     
        With ActiveChart.Parent
        .Left = 25
        .Top = 100
        .Width = 950
        .Height = 450
        End With
     
    End Sub
    Voilà c´est peut-être juste une erreur de syntaxe mais je n´ai pas trouvé la solution.

    Je vous remercie pour votre réponse.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 107
    Par défaut
    TextBox1.text renvoi une chaine de caractère.
    Essaies de convertir cette chaine en nombre comme ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .MaximumScale = Str(TextBox1.Text)

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 27
    Par défaut
    Merci pour votre réponse rapide.

    Ca ne marche pas : cette même ligne bug toujours mais je vais déjà conserver Str(TextBox1.Text) plutot que TextBox1.Text.

    Vu que j´ai plusieurs classeurs excel ouverts (1 classeur contenant le code source et 1 classeur crée par ce code source et contenant le graphe, le bouton et la textbox) peut-être faut-il préciser dans quel classeur se trouve l´objet TextBox1 ou c´est pas la peine ?
    (je suis plutôt débutant en VB)

    Pour information, j´ai testé de remplacer
    Str(TextBox1.Text)

    par
    Val(TextBox1.Value)

    mais sans succès...
    Une idée d´où peut venir l´erreur?

    Bonjour,

    Je relance ce sujet car je n´ai pas eu d´autre réponse depuis hier matin et je suis pas mal bloqué.
    Je fais ceci pour le boulot, et je ne peux pas finaliser le programme sans régler ce problème. Je vous serez donc très reconnaissant si vous pouviez accorder un peu de temps à mon problème.

    J´a testé autre chose sans plus de succés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .MaximumScale = Str(ActiveSheet.Shapes("TextBox1").Text)
    Personne n´a une idée?

    Bonjour,

    Si vous souhaitez plus d´informations n´hésitez pas.
    J´ai l´impression que TextBox1 n´est pas reconnu. Je ne sais pas pourquoi, peut-être qu´il n´est pas dans le bon endroit dans l´arborescence. Ou parce que ce bouton a été crée par une macro...

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 27
    Par défaut
    Bonjour,

    Aujourd´hui j´ai essayé de modifier mon programme :
    Au lieu de récupére la valeur d´une textbox je récupère la valeur d´une case pour changer l´échelle graphique.
    Cela donne ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      With ActiveChart.Axes(xlCategory)
        .HasTitle = True
        .AxisTitle.Text = "Time"
        .MaximumScale = Str(ChartSheet.Range("Q8").Value)   '<--- BUG
        End With
    Mais le programme bug toujours à la ligne en question, j´ai testé aussi simplement
    .MaximumScale = ChartSheet.Range("Q8").Value
    Mais pas mieux.
    Je suis débutant et je ne vois vraiment pas d´où peut venir ce bug. Ca fait une semaine que je bloque dessus...

    En espérant une réponse que je n´ai pas eue depuis une semaine. Je vous remercie.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 27
    Par défaut
    Bonjour,

    J´ai trouvé la solution :

    Pour changer léchelle graphique d´un graphe à partir de la valeur d´une textbox / d´une case (dans ce cas d´une case) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        With ActiveChart.Axes(xlCategory)
        .HasTitle = True
        .AxisTitle.Text = "Time"
        .MinimumScale = Sheets("ChartSheet").Range("P8").Value       'CHANGE Xmin PAR LA VALEUR DE LA CASE P8
        .MaximumScale = Sheets("ChartSheet").Range("Q8").Value     'CHANGE Xmax PAR LA VALEUR DE Q8
        End With
     
        With ActiveChart.Axes(xlValue)
        .MinimumScale = Sheets("ChartSheet").Range("P11").Value     'CHANGE Ymin PAR LA VALEUR DE P11
        .MaximumScale = Sheets("ChartSheet").Range("Q11").Value    'CHANGE Ymax PAR LA VALEUR DE Q11
     
        End With
    ChartSheet est le nom de la feuille dans laquelle se trouve les cases en question.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2000] ouverture tableau par bouton commande
    Par cavrom dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/04/2011, 16h11
  2. Réponses: 4
    Dernier message: 19/02/2008, 16h35
  3. graphique comment changer le nom par defaut de la serie
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/12/2007, 19h01
  4. ouvrir lien hypertexte par bouton de commande
    Par tomas dans le forum IHM
    Réponses: 4
    Dernier message: 18/06/2007, 08h58
  5. Réponses: 12
    Dernier message: 23/06/2006, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo