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 :

Positionner un graphique avec VBA


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
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 36
    Par défaut Positionner un graphique avec VBA
    Bonjour
    j'ai fait une macro qui permet d'afficher un graphique mais j'aimerai bien lui affecter une position bien précise sur ma feuille excel, voici mon code:
    Merci pour votre aide
    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
    Sub KPI1()
    'macro pour l histogramme
    Dim sh As Worksheet
    Dim chrt As Chart
    Dim chrto As ChartObject
    Dim sc As SeriesCollection
    Dim ser As Series
     
     
            Set sh = Sheets("Indicateur")
            With sh
     
     
     
                 For Each chrto In .ChartObjects
     
                      chrto.Delete               'Supprimer l'ancien histogramme
                 Next chrto
     
                 Set chrt = .Shapes.AddChart.Chart
                 With chrt
                     Set sc = .SeriesCollection       'Définir les series avec les quelles on va travailler
                     Set ser = sc.NewSeries
     
                     With ser
                          .Name = Range("A1").Offset(7, 0).Value
                          .XValues = Range(sh.Range("A1").Offset(0, 1), sh.Range("A1").End(xlToRight))
                          .Values = Range(sh.Range("A8").Offset(0, 1), sh.Range("A8").End(xlToRight))
                          .ChartType = xlColumnClustered             'Type du graphique qui est histogramme
                     End With
                End With
     
                Set chrt = Nothing
            End With
            Set sh = Nothing
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mxitzny Voir le message
    Bonjour,

    A tester.

    Si votre onglet ne contient qu'un seul histogramme, vous pourriez modifier les propriétés Top et Left de votre objet Chrto après la construction du graphe avec le même genre de boucle qui vous sert à détruire.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 36
    Par défaut
    Bonjour
    Je compte mettre de graphique dans le même onglet, voici la macro du deuxième 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
    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
    47
    48
    49
    Sub KPI2()
    'macro pour le graph ligne
    Dim sh As Worksheet
    Dim chrt As Chart
    Dim chrto As ChartObject
    Dim ser As Series
    Dim ser1 As Series
    Dim ser2 As Series
     
            Set sh = Sheets("Indicateur")
            With sh
     
                 For Each chrto In .ChartObjects
                      chrto.Delete               'Supprimer l'ancien histogramme
                 Next chrto
     
                 Set chrt = .Shapes.AddChart.Chart
                 With chrt
                     Set sc = .SeriesCollection       'Définir les series avec les quelles on va travailler
                     Set ser = sc.NewSeries
                     Set sc = .SeriesCollection
                     Set ser1 = sc.NewSeries
                     Set sc = .SeriesCollection
                     Set ser2 = sc.NewSeries
                     With ser
                          .Name = Range("A1").Offset(2, 0).Value
                          .XValues = Range(sh.Range("A1").Offset(0, 1), sh.Range("A1").End(xlToRight))
                          .Values = Range(sh.Range("A3").Offset(0, 1), sh.Range("A3").End(xlToRight))
                          .ChartType = xlLine             'Type du graphique qui est histogramme
                     End With
                     With ser1
                          .Name = Range("A1").Offset(4, 0).Value
                          .XValues = Range(sh.Range("A1").Offset(0, 1), sh.Range("A1").End(xlToRight))
                          .Values = Range(sh.Range("A5").Offset(0, 1), sh.Range("A5").End(xlToRight))
                          .ChartType = xlLine             'Type du graphique qui est histogramme
                     End With
                     With ser2
                          .Name = Range("A1").Offset(6, 0).Value
                          .XValues = Range(sh.Range("A1").Offset(0, 1), sh.Range("A1").End(xlToRight))
                          .Values = Range(sh.Range("A7").Offset(0, 1), sh.Range("A7").End(xlToRight))
                          .ChartType = xlLine             'Type du graphique qui est histogramme
                     End With
                End With
     
                Set chrt = Nothing
            End With
            Set sh = Nothing
     
    End Sub
    Merci pour votre aide

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mxitzny Voir le message
    La destruction de vos objets ChartObjet est incohérente dans ce cas.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 36
    Par défaut
    Est ce que vous avez une solution à me proposer s'il vous plait, une solution qui me permettra d'afficher les deux indicateurs et les positionner correctement sur la feuille excel ?
    Merci pour votre aide.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par mxitzny Voir le message
    Il vous suffit de créer une variable ChartObjet dans votre code et de la rattacher au graphique avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set MonChartObject = chrt.parent
    Vous pourrez ensuite lui attribuer la position souhaitée.

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

Discussions similaires

  1. Interface graphique avec vba
    Par Maissa2013 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/04/2012, 00h12
  2. créer un graphique avec VBA
    Par raskoblomov dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/04/2010, 20h18
  3. construire un graphique avec VBA
    Par Solenne86 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/07/2009, 02h22
  4. Quelles possibilités graphiques avec VBA ?
    Par popsmelove dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/02/2008, 16h35
  5. [VBA-E] graphique avec plage de donnees variable
    Par gigs dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 03/04/2006, 14h50

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