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 :

Dimensionnement de la zone de traçage d'un graph


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 130
    Points : 71
    Points
    71
    Par défaut Dimensionnement de la zone de traçage d'un graph
    Bonjour,
    j'ai un problème de dimensionnement de la zone de traçage de mon graph. J'ai écrit le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            ActiveChart.PlotArea.Select
            ActiveChart.PlotArea.Left = 3
            ActiveChart.PlotArea.Top = 33
            ActiveChart.PlotArea.Width = 176
            ActiveChart.PlotArea.Height = 86
    Et ça marche pas pourtant quand je fais avec l'enregistreur de macro il me marque ça donc je ne comprends pas. Est ce que quelqu'un peut m'aider?
    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    ActiveChart correspond au graphe sélectionné... Est-ce que ton graphe à redimentionner est sélectionné quand tu démarres ta macro?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 130
    Points : 71
    Points
    71
    Par défaut
    oui

    Je ne comprends pas car quand je fais du pas à pas ça marche le code que j'ai écrit mais quand je fais pas du pas à pas il me redimensionne pas la zone de traçage.
    Comment je peux faire pour forcer le redimensionnement?

  4. #4
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Je n'ai pas d'explications. Chez moi, ça marche très bien.

    Tu remet (à la main) les dimensions à peu près telles qu'elles étaient avant de faire un autre test?

    J'ai un peu modifié ton code pour éliminer les redondances.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub TailleZoneTracage()  ' pas d'accents dans les noms
        With ActiveChart.PlotArea
            ' Voir la position et la taille acutelles dans la
            ' fenêtre d'exécution (Ctrl + G).
            Debug.Print .Left, .Top, .Width, .Height
            ' Appliquer les nouvelles dimensions.
            .Left = 3
            .Top = 33
            .Width = 176
            .Height = 86
        End With
    End Sub
    J'ai même fait ceci (qui modifie la taille de tout le graphe):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub TailleDuGraphique()
        Dim nomGraph As String, pos As Integer
        ' le nom du graphe débute par le nom de la feuille et un espace
        nomGraph = ActiveChart.Name 
        ' trouver la position de l'espace
        pos = InStr(nomGraph, " ")  
        ' ne garder que le nom 
        nomGraph = Right(nomGraph, Len(nomGraph) - pos)du graphe
        ' modifier les dimensions du graphe
        With ActiveSheet.Shapes(nomGraph)
            .ScaleWidth 0.6, msoFalse, msoScaleFromTopLeft
            .ScaleHeight 0.65, msoFalse, msoScaleFromTopLeft
        End With
    End Sub
    [Edit : petit ajout] Même chose en plus court:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub TailleDuGraphe()
        With ActiveSheet.Shapes(Right(ActiveChart.Name, _
                Len(ActiveChart.Name) - InStr(ActiveChart.Name, " ")))
            .ScaleWidth 0.6, msoFalse, msoScaleFromTopLeft
            .ScaleHeight 0.65, msoFalse, msoScaleFromTopLeft
        End With
    End Sub

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 130
    Points : 71
    Points
    71
    Par défaut
    bonjour à tous,
    j'ai tenté ce que tu m'as donné zaza et encore une fois quand je le fais pas à pas ça marche et quand je le fais d'un coup ça ne marche pas mais ça ne m'affiche pas de message d'erreur.
    Donc pour l'obliger à le faire j'ai créé une autre macro à coté qui est la suivante:
    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
        Sheets("Récap").Activate  
            Dim FL1 As Worksheet
            Set FL1 = ActiveSheet
            With FL1.Shapes(FL1.Shapes.Count)
                .Select            
            End With
            ActiveChart.PlotArea.Select
           With ActiveChart.PlotArea
            ' Voir la position et la taille acutelles dans la
            ' fenêtre d'exécution (Ctrl + G).
            Debug.Print .Left, .Top, .Width, .Height
            ' Appliquer les nouvelles dimensions.
            .Left = 3
            .Top = 33
            .Width = 176
            .Height = 86
            End With
    La ligne en bleu pose un problème (elle me donne un message d'erreur 1004: la méthode select de la plotarea a échoué) mais pourtant il faut que je sélectionne la zone de traçage avant de la dimensionner et si j'écris pas la ligne en bleu ça marche pas dans tout les cas.
    Est ce que quelqu'un aurait une idée qui pourrait m'aider?
    Merci d'avance.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 130
    Points : 71
    Points
    71
    Par défaut
    J'ai toujours un problème avec mon dimensionnement de zone de traçage. J'ai tourné autrement ma macro mais je comprends pas ça ne marche toujours pas. Voici mon code:
    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
            Dim FL1 As Worksheet
            Set FL1 = ActiveSheet       
            With FL1.Shapes(FL1.Shapes.Count)
                .Select            
            End With      
        ActiveChart.ChartArea.Select   
        ActiveChart.PlotArea.Select
        Selection.Left = 3
        Selection.Top = 33
        Selection.Width = 176
        Selection.Height = 86
        Selection.Width = 178
        Selection.Height = 86    
        ActiveChart.ChartArea.Select
    La ligne en bleu me pose problème. J'ai une erreur 1004: la méthode select de la classe chartArea a échoué.
    Est ce que quelqu'un peut m'aider. Je ne comprends pas pourquoi ça plante.
    Merci d'avance.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 130
    Points : 71
    Points
    71
    Par défaut
    Bon j'ai encore modifié ma macro:
    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
            Dim FL1 As Worksheet
            Set FL1 = ActiveSheet
            
            With FL1.Shapes(FL1.Shapes.Count)
                .Select            
            End With
        With ActiveChart.PlotArea
            .Select
            .Left = 3
            .Top = 33
            .Width = 176
            .Height = 86
            .Width = 178
            .Height = 86
        End With
    Quand je sélectionne a la main la zone de traçage la macro marche. Si je ne mets pas de select (ligne bleu) la macro ne me redimensionne pas la zone de traçage. Mais quand je l'écris dans ma macro ça plante.
    Est ce que quelqu'un peut m'aider??
    Merci d'avance.

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Déjà une explication sur ton message précédent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            Dim FL1 As Worksheet
            Set FL1 = ActiveSheet       
            With FL1.Shapes(FL1.Shapes.Count)
                .Select            
            End With
    Avec ce code tu peux modifier les dimensions du graphe, pas de la zone de traçage.
    Et avec ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Activate
        ActiveChart.ChartArea.Select
        ActiveChart.PlotArea.Select
        Selection.Left = 3
        Selection.Top = 33
        Selection.Width = 178
        Selection.Height = 86
    Tu dis

  9. #9
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour tlm,

    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
    Sub test_dim_graph()
    Dim FL1 As Worksheet
    Dim ChObj As ChartObject
     
    Set FL1 = Sheets("feuil1")
    Set ChObj = FL1.ChartObjects(FL1.ChartObjects.Count)
     
    'pour dimensionner le graphique
    With ChObj
        .Height = 400
        .Width = 600
        .Top = [C5].Top
        .Left = [C5].Left
    End With
     
    'pour dimensionner la zone de traçage
    With ChObj.Chart.PlotArea
        .Height = 300
        .Width = 450
        .Left = 5
        .Top = 35
    End With
     
    End Sub
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  10. #10
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Je ne comprends pas pourquoi tous ces .Select qui, de toutes façons, ralentissent l'exécution du code... Si tu as remarqué, j'avais dit que je ferais des changements dans ton code... J'ai utilisé un bloc With... End With pour éviter la répétition (qui me tue...) et j'ai éliminé les .Select (qui m'achèvent...).

    Mais surtout, dis nous clairement ce que tu veux faire:
    - Modifier la taille de la zone de traçage ?
    - ou modifier la taille de tout le graphe ?

    [Edit] Tiens! Je viens de voir le code de fring (salut). Je crois que tu as la solution qui est plus propre que de passer par les Shapes qui, en fait, sont n'importe quoi!

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 130
    Points : 71
    Points
    71
    Par défaut
    Merci à tous!
    j'essaie vos solutions et je vous dis si cela marche chez moi.
    Zaza ce que je veux faire c'est bien modifier la taille de la zone de traçage.
    Encore merci beaucoup à tous. Je vous tiens au courant dès que j'ai testé le code.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 130
    Points : 71
    Points
    71
    Par défaut
    J'ai testé vos codes: le code de fring marche bien et celui de ouskel'n'or aussi néanmoins quand je les teste plusieurs fois celui de ouskel'n'or à un pourcentage de succès plus important donc j'ai adopté ce dernier. Merci beaucoup à tous.

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

Discussions similaires

  1. Zone de traçage d'un graphique
    Par doctorante 2013 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 23/06/2015, 07h25
  2. [XL-2010] Positionnement de la zone de traçage avec PlotArea
    Par horemheb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/03/2013, 15h46
  3. [XL-2007] graphique zone de traçage
    Par splifferwolf dans le forum Excel
    Réponses: 1
    Dernier message: 11/02/2011, 20h47
  4. position graphique et format zone de traçage
    Par DIDIDIDA dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/07/2008, 09h46
  5. [JpGraph] Zones de texte dans un graphe
    Par benoit_68 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 11/07/2006, 10h55

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