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 :

Probleme VBA Graphique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 19
    Par défaut Probleme VBA Graphique
    Bonjour ,
    J'ai un probleme assez simple mais je n'arrive pas a le resoudre sachant que je debute en vba

    Voila j'aimerai que lorsque je clique sur un commandbutton2:

    Celui ci crée un graphique ( en nuage de point)
    avec comme nom du graphique la valeur située dans combobox 4

    Ensuite pour les series : l'axe X sera toujours de la case A10 jusqua la derniere case remplie ( je sait quil y a un "Dernlign" qui fonctionne pour ca )

    Cependant le Y varie ,
    Si combobox4 = 1 alors je vais chercher les Y de B:10 a derniere ligne remplie
    Si bombox4= 2 alors je vais chercher les Y de C:10 a derniere ligne remplie
    Si bombox4= 3 alors je vais chercher les Y de B:10 a derniere ligne remplie





    Merci de m'aider , j'ai ecrit un code en partie mais il ne fonctionne pas , surtout je pensse que mes erreurs viennent a partir du moment ou jessaye d'automatiser la creation de serie avec

    "SeriesCollection(num).Values = ThisWorkbook.Sheets(......."

    Je ne sait surrement pas assez bien utiliser cette fonction.


    Merci d'avance

  2. #2
    Membre Expert Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 579
    Par défaut
    Bonsoir akuryuII,

    Est-il possible de nous montrer le code que tu as réalisé ?
    La feuille complète avec les Combo créées serait un plus !

    Curt

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    Je pense que ces quelques lignes feront l'affaire:

    - La fonction SetChartValuesRange fixe les Y d'une série pour un graphique.
    chartName est le nom du graphique surlequel il faut agir
    firstCell est le range correspondant à la première cellule d'une colonne contenant les Y.
    Si les cellules sont dans une ligne, remplace xlDown par xlToLeft.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub SetChartValuesRange(chartName As String, firstCell As Range)
        ChartObjects(chartName).Chart.SeriesCollection.Item(1).values = Range(firstCell, firstCell.End(xlDown))
    End Sub

    - La fonction ComboBox4_Change sera appelé par Excel au changement de valeur de la Combobox4.
    Lorsque la valeur de ComboBox4 change, cette fonction change les Y du graphique nommé "Graphique 1" (pour mon exemple, ce nom est adapter pour ton classeur).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub ComboBox4_Change()
        Dim col As String
        Select Case ComboBox4.Value
            Case 1
                col = "B"
            Case 2
                col = "C"
            Case 3
                col = "D"
        End Select
     
        Call SetChartValuesRange("Graphique 1", Range(col & "10"))
    End Sub

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 19
    Par défaut
    Merci des vos réponses , pour le moment je n'arrive pas a avoir le bon code encore , même avec ce que tu ma donné Blue monkey .

    Peut être je l'utilise mal , je vais re essayer.

    Je vous met en PJ un imprim écran détaillé de ce que je veux faire . Ça sera surement plus clair .

    Merci d'avance
    Images attachées Images attachées  

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonjour,

    pour le moment je n'arrive pas a avoir le bon code encore
    Qu'est ce qui ne fonctionne pas ?
    Il y a un message d'erreur ? Si oui sur quelle ligne ?

    Sinon le code suivant est d'avantage optimisé par rapport aux derniers éléments que tu as fournis.
    Il faut mettre ce code dans la feuille Recherche so. (qui contient le graphique Graphique 1 et la combobox ComboBox4
    .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
    Sub SetChartValuesRange(chartName As String, firstCell As Range)
        ChartObjects(chartName).Chart.SeriesCollection.Item(1).Values = Range(firstCell, firstCell.End(xlDown))
    End Sub
     
    Private Sub ComboBox4_Change()
        Dim TitleCell As Range
        Set TitleCell = Range("D9:K9").Find(ComboBox4.Value, LookIn:=xlValues)
        Call SetChartValuesRange("Graphique 1", TitleCell.Offset(1))
    End Sub

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 19
    Par défaut
    Merci pour ces lignes de codes malheureusement , j'ai écrit tes lignes.
    Cependant quand j'essaye de lancer la macro il me disent :

    "erreur d’exécution '1004'
    Erreur définie par l'application ou par l'objet"


    ps: j'ai recopier " tel qu'elle" tes lignes , peut etre qu'il fallais que je change des variable ...mais je ne vois pas a quel endroit... :S

    Notament ce "(1)" dans "ChartObjects(chartName).Chart.SeriesCollection.Item(1)."
    Je ne vois pas a quoi cela correspond ...

    Voila ce que j'ai ecrit


    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
    Private Sub CommandButton2_Click()
    
    'test graph
    
    
    
    'Sheets(Recherche_sol).Activate
    'Sheets(Recherche_sol).ChartObjects(graph.Name).Activate
    
    Dim nouvserie As Series
    Dim DernLigneX As Integer
    
    
    Set nouvserie = ActiveChart.SeriesCollection.NewSeries
                           ' With nouvserie
                            .MarkerStyle = xlNone
                            .MarkerBackgroundColorIndex = xlNone
                            .Border.ColorIndex = 1
                            .Border.Weight = xlThin
                            .Border.LineStyle = xlDot
                            .XValues = "=" & Worksheets(Recherche_sol).Range(Sheets(Recherche_sol).Cells(10, 1), Sheets(Recherche_sol).Cells(DernLigneX, 1))
                            .Name = ComboBox4.Value
                            .Values = "=" & Worksheets(Recherche_sol).Range(Sheets(Recherche_sol).Cells(10, 1 + .Value(5, 25)), Sheets(Recherche_sol).Cells(DernLigneX, 1 + .Value(5, 25)))
    
     DernLigneX = FeuilB.Range("A65536").End(xlUp).Row
    
    
    
    End Sub


    J'ai mit dans la case 5;25 des valeurs correspondante a chaque choix de mon combobox4 ce qui me permet de decaler la colonne des Y ( enfin c'est ce que je pense en tout cas ).


    Mais lorsque je lance la macro , excel me marque :

    " Erreur de compilation
    Reference incorrect ou non qualifiée "

    en me surlignant la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub CommandButton2_Click()

    Je n'y comprend plus rien...

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonjour,

    Citation Envoyé par akuryuII Voir le message
    Merci pour ces lignes de codes malheureusement , j'ai écrit tes lignes.
    Cependant quand j'essaye de lancer la macro il me disent :

    "erreur d’exécution '1004'
    Erreur définie par l'application ou par l'objet"

    L'erreur vient peut être du fait que le graphique utilisé ne contient pas de série.
    Lors de mes tests, j'avais créé le graphique avec une série nuage de points.
    Le code changeait simplement les données associé à la série.
    L'intérêt de procéder ainsi, est de pouvoir mettre en forme la série en direct (sans code VBA).

    Citation Envoyé par akuryuII Voir le message
    Notament ce "(1)" dans "ChartObjects(chartName).Chart.SeriesCollection.Item(1)."
    Je ne vois pas a quoi cela correspond ...
    C'est la première série du graphique.

    Si le problème persiste, poste le classeur (ou une copie des données du classeur + le graphique) pour qu'on puisse reproduire le problème.

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

Discussions similaires

  1. [XL-2013] Probleme insertion graphique suite macro VBA
    Par bagheria85 dans le forum Excel
    Réponses: 1
    Dernier message: 05/07/2015, 19h41
  2. Probleme code Vba graphique
    Par lebowsky60 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/10/2013, 16h00
  3. VBA, Graphique : Toujours à propos des ranges discontinus ..
    Par CCHEVALIER dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 28/09/2005, 09h15
  4. VBA,Graphiques :Series qui pointent sur des Range Discontinu
    Par CCHEVALIER dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/09/2005, 14h05
  5. VBA, graphiques : Acceder au Range pointé par une série
    Par CCHEVALIER dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/09/2005, 10h56

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