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 :

configurer un graphique via une macro


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 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Par défaut configurer un graphique via une macro
    bonjour
    serait il possible svp d'avoir de l'aide pour le pbl suivant:
    j'aimerais creer une macro qui puisse tracer un graphique dont les abscisses seraient les cellules de la colonne 1 de mon tableau (que j'aurai selectionnées seulement, je ne prend pa forcement tte la colonne), et les ordonnées seraient 2 séries dans lesquelles figureraient les elements correspondant à l'abscisse dans les 2 autres colonnes de mon tableau.
    Et enfin j'aimerais savoir sil est possible de mettre daans le nom du graphique le titre au dessus de mon tableau...
    Je rame depuis qq tps sur ça du coup jai simplifié le pbl ac un fichier plutot soft en données..
    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éclairé Avatar de bastou93
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 217
    Par défaut
    Bonjour,

    Je ne peut te dire comment faire pour la sélection toi meme de la colonne1 mais voici le code que je mettrai sans compter ce problème:

    à savoir que tu peux "tous" paramétrer comme dans Excel avec une macro le mieux quand j'ai un doute, j'enregistre une macro ou j'ajoute un titre par exemple et je récupère le code et le met en forme bref...


    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
     
     
    Private Sub Tracer()
     
    Set Sh = ActiveSheets
    Set Grf = Sh.ChartObjects.Add(140,10,600,210) 'Taille de ton graphe
    Grf.Name = Graphe1
    with Grf.Chart
      .HasTitle=True 'Possède un titre
      .Chartitle.text = "MON TITRE"
      .CharType = MON TYPE DE GRAPHE
      .SeriesCollection.NewSeries 'Crée une nouvelle série
      with .SeriesCollection(1)
        .Name = "prévu"
        .Values = Range("B5:B12")
        .XValues = Range("A5:A12")
      end with
      .SeriesCollection.NewSeries 'Crée une nouvelle série
      with .SeriesCollection(2)
        .Name = "prévu"
        .Values = Range("C5:C12")
        .XValues = Range("A5:A12")
      end with
    end with
    set grf = nothing
    set sh = nothing
     
    Voila bon après tu peux le rendre plus dynamique en changeant 12 par la derniere ligne de ton tableau ... mais voila l'idée
    Bastien

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Par défaut
    Slt!!
    Ben en fait c plus compliqué que prévu!
    En fait je voulais adapter le code à mon cas précis.
    Evidemment ça fonctionne pa trop
    en fait jaimerais pouvoir utiliser les données que je stock dans le tableau créé au tt début et les utiliser dans mon graph...
    Une idée sur la façon d'integrer ces conditions lorsque je renseigne mes abscisses et ordonnées???????
    P.S:
    les coms sur le code VBA devraient vs aider a vous situer..

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Sub Tracer()
     
    Dim i As Integer
    Dim str() As String
    Dim iIndex As Integer ' nombre d'élements selectionnés
     
    'Initialisation: aucun éléement n'est selectionné
    iIndex = 0
     
    'Boucle sur les élements de la listBox; Les index des Listbox commencent par zéro
    For i = 0 To Choix_operateur.ListBox1.ListCount - 1
     
    'Test: élement coché
        If Choix_operateur.ListBox1.Selected(i) = True Then
     
    'Ajouter un élement à la liste des noms cochés
           iIndex = iIndex + 1
           ReDim Preserve str(iIndex)
           str(UBound(str)) = Choix_operateur.ListBox1.List(i)
     
       End If
    Next i
     
     
    'Créer un graphique et régler les propriétés
    Set grf = ActiveSheet.ChartObjects.Add(140, 10, 600, 210) 'Taille de ton graphe
    grf.Name = Graphe1
    With grf.Chart
      .HasTitle = True 'Possède un titre
     
    'Reprise des dates choisies dans le titre du graphique
      .Chartitle.Text = "PM du " & Cells([RowNo], [6]).Value & " au " & Cells([RowNb], [6]).Value
     
    'Choix Type de graphique: Histogramme 2D
     
    .CharType = xlBuiltIn
     
    'Inserer deux series, chacune representant les données dans un tableau, liées aux valeurs de la série
    'Crée une nouvelle série
    .SeriesCollection.NewSeries
      With .SeriesCollection(1)
        .Name = "Actions planifiées"
    'pour le moment j'ai mis des colonnes entieres de tableau mais j'aimerais en fait
    'y mettre seulement les données de ces colonnes dont le nom (abscisse apparait dans mon tableau str
    'que j'ai créé au tout debutt du tableau
        .Values = Range("=PMmain!$W$16:$W$24")
        .XValues = Range("=PMmain!$H$16:$H$24")
      End With
     
     
      .SeriesCollection.NewSeries 'Crée une nouvelle série
      With .SeriesCollection(2)
        .Name = "Actions réalisées"
        .Values = Range("=PMmain!$X$16:$X$24")
        .XValues = Range("=PMmain!$H$16:$H$24")
      End With
    End With
    Set grf = Nothing
    Set sh = Nothing
     
     
     
     
     
     
     
    End Sub
    G aussi un souci au niveau du titre de mon graphique.
    un problème de synthaxe certainement..

  4. #4
    Membre éclairé Avatar de bastou93
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 217
    Par défaut
    Salut a toi,

    Je n'ai pas beaucoup de temps la tout de suite mais je peux te lancer une idée qui m'est venu en tete:

    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 tab() as integer
     
    'je reprend ton code
    If Choix_operateur.ListBox1.Selected(i) = True Then
           iIndex = iIndex + 1
           ReDim Preserve tab(iIndex)
           tab(UBound(str)) = Choix_operateur.ListBox1.List(i)
    end if
     
    'voila on va dire que mon tab est comme ceci:
    'tab = ['A',B',C']
     
    '...
     
    .Values = Array(tab[0],tab[1]...)

    G aussi un souci au niveau du titre de mon graphique.
    un problème de synthaxe certainement..
    C'est normale j'ai zapé les " "

    Voila je ne peux tester le code mais sa devrai marché

    Bastien

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Par défaut
    Bastien je te remercie vraimt du tps que tu m'accordes!

    Avt de me remettre à coder j'ai une question qui pourrait me simplifier la vie...
    Serait il plus simple de faire une première macro qui crée un tableau dans une nvelle page, et où elle insère les noms cochés, puis, de renseigner à coté une fonction dt le resultat est en gros 'la ligne où figure "... pour reconstituer les colonnes de données selon les cases cochées.

    Il resterait ensuite à faire une seconde macro qui tracerait le graphique tt simplement à partir de ce nouveau mini tableau ( le code étant je pense quasi identique à la premiere version que tu m'as livrée...)

    G créé un exemple excel simpliste avec des commentaires pour que tu puisses comprendre ce que je cherche à avoir (parfois c dûr de me comprendre...mm si je me relis )
    Perso je pense qu'après tt cke tu viens de mdire ce serait ptetr moins casse tête...
    Fichiers attachés Fichiers attachés

  6. #6
    Membre éclairé Avatar de bastou93
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 217
    Par défaut
    Salut,

    Je ne vois pas tes listbox... tu les a mise ou c'est moi?

    Bastien

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Par défaut Graphique sous conditions
    Bonjour forum,

    Malgré de nombreuses recherches depuis qq jours par ci par là, je ne parviens pas à arriver à mes fins. Je débute sur VBA, et bien que je m'applique je peine à trouver mes marques. Je viens donc chercher un peu d'aide svp.

    Objectif: Je souhaite pouvoir faire tracer un graphique avec comme abscisses les données cochées dans la listBOX1 (suivre le seul bouton du fichier...)
    et comme ordonnées, les données (Actions planifiées et actions réalisées)RELATIVES à CES abscisses (ces données se trouvent à la fin de mon tableau de calculs)

    Exemple : Si je selectionne seulement un nom dans la listbox, je veux avoir un histogramme sur un nouvel onglet qui montre 2 barres ac les deux données.
    Si je selectionne i noms, je veux avoir i abscisses avec 2 barres chacunes...)

    J'ai d'ores et déjà commencé une macro mais je suis vraiment dépassé donc si vous voulez bien me donner un coup de main je vous en serez vraiment reconnaissant!
    Merci d'avance pour vos réponses et n'hésitez pas si je n'ai pas été clair.
    Fichiers attachés Fichiers attachés

  8. #8
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Par défaut
    Si ça avait été le cas j'en serais pas encore là...
    Je peine un max avec la synthaxe!! j'arrive pa trop à m'en sortir!
    Du coup J'ai supprimé tout ce qui marchait sur le fichier pr faire moins lourd et j'essaye d'exposer clairement mon pbl du moment..

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 40
    Par défaut
    Salut à tous!
    J'ai finalement changé de plan vu que d'autres forumeurs m'ont conseillé efficacement sur la façon de récupérer mes données...
    J'ai du coup créé les séries directement et là j'essaye de les tracer comme j'ai déjà expliqué... Mais ça a pas l'air de pas convenir il n'y a rien de tracé:
    est ce que l'un d'entre vous voit où ça pourrait clocherau niveau du 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
    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    Private Sub Tracer()
     
    Dim i As Integer
    Dim str() As String
    Dim plan() As Integer
    Dim real() As Integer
    Dim eff() As Long
    Dim rg As Range
    Dim iIndex As Integer ' nombre d'élements selectionnés
     
    'Constitution des séries de données à tracer
    '*******************************************
     
    'Initialisation: aucun élément n'est selectionné
    iIndex = 0
     
    'Boucle sur les élements de la listBox; Les index des Listbox commencent par zéro
    For i = 0 To Choix_operateur.ListBox1.ListCount - 1
     
    'Test de haut en bas de listeBox: élement coché?
        If Choix_operateur.ListBox1.Selected(i) = True Then
     
    'Ajouter un élement à la liste des noms cochés
           iIndex = iIndex + 1
           ReDim Preserve str(iIndex)
           ReDim Preserve plan(iIndex)
           ReDim Preserve real(iIndex)
           ReDim Preserve eff(iIndex)
     
    'On récupère l'élement coché et on l'insère à la fin de la liste
           str(UBound(str)) = Choix_operateur.ListBox1.List(i)
     
    'On récupère le numéro de la ligne où figure le nom selectionné
           Set rg = Sheets("PMmain").Range("H16:H24").Find(Choix_operateur.ListBox1.List(i))
           If Not rg Is Nothing Then
           plan(UBound(plan)) = Sheets("PMmain").Cells(rg.Row, 23).Value
           real(UBound(real)) = Sheets("PMmain").Cells(rg.Row, 24).Value
           eff(UBound(real)) = Sheets("PMmain").Cells(rg.Row, 26).Value
           End If
     
       End If
    Next i
     
    'Construction du graphique
    '*************************
    'Créer un graphique et régler les propriétés
    Set Sh = ActiveSheets
    Set grf = Sh.ChartObjects.Add(140, 10, 600, 210) 'Taille du graphe
    grf.Name = Graphe1
    With grf.Chart
    'type de graphe: histogramme
      .CharType = xlColumnClustered
     
    'Inserer deux series, chacune representant les données dans un tableau, liées aux valeurs de la série
    'Crée une nouvelle série
    .SeriesCollection.NewSeries
      With .SeriesCollection(1)
        .Name = "Actions planifiées"
        .Values = Range("=plan()")
        .XValues = Range("=str()")
      End With
     
     
      .SeriesCollection.NewSeries 'Crée une nouvelle série
      With .SeriesCollection(2)
        .Name = "Actions réalisées"
        .Values = Range("=real()")
        .XValues = Range("=str()")
      End With
    End With
    Set grf = Nothing
    Set Sh = Nothing
    End Sub
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. création d'un graphique via une macro
    Par matraveler dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/08/2011, 16h30
  2. [MACRO]Créer un menu via une macro
    Par wismerhill dans le forum VBA Access
    Réponses: 5
    Dernier message: 28/03/2007, 12h06
  3. [ODBC]connexion a sybase via une macro excel
    Par ricoree78 dans le forum Sybase
    Réponses: 3
    Dernier message: 06/10/2006, 16h52
  4. [VBA-E]Filtre via une macro sur Excel
    Par jamal.b dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/04/2006, 15h35

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