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 :

[VBA] Problème graphique [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut [VBA] Problème graphique
    Bonjour à tous,

    J'ai un petit problème avec un fichier excel (je suis sous Excel 2007) :

    Voilà donc j'ai un classeur excel, avec un tableau. Quand je clique sur une cellule "entreprise", là où il y a marqué "Entreprise N°", cela sélectionne ma plage de données puis crée un graph dans une nouvelle feuille, comme sur les images suivantes :

    Mon tableau :



    Quand je clique sur une cellule entreprise :



    Puis la génération du graphique :



    Comme on peut le voir le graph créé se met dans une nouvelle feuille Graph.

    Or je voudrais quand je clique sur "Entreprise N°" que le code vérifie si une feuille nommée "Graph" existe et si elle existe qu'il me la supprime. Je n'arrive pas du tout à le faire, malgré mes différentes recherches.

    Je joins mon code qui ne doit pas être très académique, mais j'ai l'habitude de développer en VB.net, et là en VBA je suis je dois l'avouer complètement perdu, déjà l'intellisense de Visual Studio me manque crucialement.

    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    Dim r2006, r2007, r2008, r2009, r2010, rtotal, rannee As Range
     
    ligne = Target.Row
    colonne = Target.Column
     
    If colonne = 2 And ligne > 7 Then
     
    'Permet de prendre la plage des valeurs souhaité
    Set r2006 = Worksheets("Communes").Range(Worksheets("Communes").Cells(ligne, 4), Worksheets("Communes").Cells(ligne + 2, 4))
    Set r2007 = Worksheets("Communes").Range(Worksheets("Communes").Cells(ligne, 6), Worksheets("Communes").Cells(ligne + 2, 6))
    Set r2008 = Worksheets("Communes").Range(Worksheets("Communes").Cells(ligne, 8), Worksheets("Communes").Cells(ligne + 2, 8))
    Set r2009 = Worksheets("Communes").Range(Worksheets("Communes").Cells(ligne, 10), Worksheets("Communes").Cells(ligne + 2, 10))
    Set r2010 = Worksheets("Communes").Range(Worksheets("Communes").Cells(ligne, 12), Worksheets("Communes").Cells(ligne + 2, 12))
    Set rannee = Union(Worksheets("Communes").Cells(7, 4), Worksheets("Communes").Cells(7, 6), Worksheets("Communes").Cells(7, 8), Worksheets("Communes").Cells(7, 10), Worksheets("Communes").Cells(7, 12))
     
    'Regroupe les différentes plages de valeurs
    Set rtotal = Union(r2006, r2007, r2008, r2009, r2010)
    rtotal.Select
     
    'ajoute le nouveau graph
        ThisWorkbook.Charts.Add.Select
        ActiveChart.ChartType = xl3DColumnClustered
        ActiveChart.SetElement (msoElementChartTitleCenteredOverlay)
        ActiveChart.ChartTitle.Text = Cells(ligne, colonne).Value
        ActiveChart.SeriesCollection(1).XValues = rannee
        ActiveChart.SeriesCollection(1).Name = "=""CA1"""
        ActiveChart.SeriesCollection(2).Name = "=""CA2"""
        ActiveChart.SeriesCollection(3).Name = "=""CA3"""
        ActiveSheet.Name = "Graph"
     
    End If
     
    End Sub

    J'ai essayé ceci mais cela ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim ws As Worksheet
     
    For Each ws In Worksheets
     
    If ws.Name = "Graph" Then
     
    ws.Delete
     
    End If
     
    Next
    Merci de vos réponses.
    Geeker c'est comme manger, on ne peut pas s'en passer !!!

    Tout est objet !!!

    ____________________________________

    http://www.geekingmania.com

  2. #2
    Membre éclairé Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Points : 813
    Points
    813
    Par défaut
    Bon ben c'est résolu :

    La collection n'était pas Worksheets mais Charts :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim gs As Chart
     
    For Each gs In Charts
     
    If gs.Name = "Graph" Then
     
    gs.Delete
     
    End If
     
    Next
    Geeker c'est comme manger, on ne peut pas s'en passer !!!

    Tout est objet !!!

    ____________________________________

    http://www.geekingmania.com

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

Discussions similaires

  1. VBA Problème de syntaxe - manipulation graphique Excel
    Par JeanDan dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 03/10/2011, 10h15
  2. [Cacti ] Problèmes graphiques
    Par seumeneur dans le forum Développement
    Réponses: 2
    Dernier message: 23/07/2006, 16h14
  3. [DEBUTANT - VBA] Problèmes de ComboBox
    Par _Maniak dans le forum Général VBA
    Réponses: 13
    Dernier message: 10/03/2006, 10h02
  4. [Excel - VBA] Problème de suppression de lignes...
    Par beholder2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2005, 17h27
  5. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24

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