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 :

pb creation graphique Userform


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut pb creation graphique Userform
    Bonjour à tous,
    je suis débutant dans le VBA, et je dois faire un petit fichier pour mon travail.

    J'ai un tableau qui se remplis au fur et a mesure (un petit formulaire qu'on rempli) et j'aimerais en sortir un graphique dans un userform (question pratique).

    Pour cela j'avais commencé par enregistrer une macro sous excel pour comprendre comment créer un tableau, puis je les modifié en mettant une variable pour choisir les coordonnées.

    voici le code d'origine :
    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
     
    Private Sub CommandButton1_Click()
     
    'Déclaration de la variable plage pour la textbox'
        plage = TextBox1.Value
     
    'Création d'un graphique a partir de la plage selectionner via la variable'
        Charts.Add
    'définit le type de graphique, Courbe'
        ActiveChart.ChartType = xlLine
    'définit la page d'affichage du graphique, ainsi que la plage'
        ActiveChart.SetSourceData Source:=Sheets("SRV32005").Range(plage)
        ActiveChart.Location Where:=xlLocationAsObject, Name:="SRV32005"
        With ActiveChart
    'affichage du titre'
            .HasTitle = True
    'nom du titre'
            .ChartTitle.Characters.Text = "Graphique de l'Espace Disque Dur"
    'affichage du titre pour l'axe des absices'
            .Axes(xlCategory, xlPrimary).HasTitle = True
    'nom du titre de l'axe des absices'
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Dates"
    'affichage du titre pour l'axe des ordonnés'
            .Axes(xlValue, xlPrimary).HasTitle = True
    'nom du titre de l'axe des ordonnés'
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Tailles (Go)"
        End With
    End sub
     
    Private Sub CommandButton2_Click()
        Unload graphique
    End Sub
    Avec ce code mon graphique ce créait dans ma feuille excel.

    En fouillant un peu sur le net, j'ai trouvé un code qui permet d'insérer le graphique dans un userform.
    J'ai essayé de modifier le code pour ne pas utiliser de listbox et le remplacer par une variable via une textbox mais je n'arrive pas à le faire fonctionner.

    voici le code que j'ai trouvé :

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
     
    Option Explicit
    Option Base 1
     
       'Nota:
       'Utilisez l'objet WCChart pour la bibliothèque OWC9.
       'Dim Cht As WCChart
     
    'Bibliothèques OWC10 et OWC11
    Dim Cht As ChChart
    Dim C
     
    Private Sub UserForm_Initialize()
        Dim x As Byte
     
     
        Set C = ChartSpace1.Constants
        'Ajoute le graphique
        Set Cht = ChartSpace1.Charts.Add
     
        'Alimentation Listbox (Données de la plage G2:G6)
        ' x = 2 to 7 donc entre la ligne du jusqu'a la ligne 7
        For x = 2 To 7
        ' cells(x, 7) récupère les champs dans la liste box a partir de la cellule 7
            ListBox1.AddItem Cells(x, 7)
        Next x
    End Sub
     
     
     
    Private Sub CommandButton1_Click()
    Dim i As Integer, x As Integer
    Dim j As Integer
    Dim Tableau(7), plage(7)
     
    'suppression des séries existantes dans le ChartSpace
    For i = Cht.SeriesCollection.Count To 1 Step -1
        Cht.SeriesCollection.Delete i - 1
    Next i
     
    'Définit les abscisses(plage de cellules H1:N1)
    ' i= 1 to 7 défini les cellules pour faire le graphique
    For i = 1 To 7
        Tableau(i) = Cells(1, 7 + i)
    Next i
     
    With Cht
        'Permet l'affichage des légendes
        .HasLegend = True
        'Affiche les légendes sous le graphique
        .Legend.Position = chLegendPositionBottom
        'Attribue un titre
        .HasTitle = True
        .Title.Caption = "Mon graphique"
    End With
     
     
    'Définit le type de graphique
    If ToggleButton1.Caption = "Graphique en Barre" Then
        'histogramme en barre
        Cht.Type = C.chChartTypeBarClustered3D
        Else
       'histogramme en colonne
        Cht.Type = C.chChartTypeColumnClustered3D
    End If
     
     
    'Boucle sur les éléments de la listbox
    For j = 0 To ListBox1.ListCount - 1
        'Identifie les items sélectionnés
        If ListBox1.Selected(j) = True Then
     
            'Création de la 1ere série
            If Cht.SeriesCollection.Count > 0 Then Cht.SeriesCollection.Add
     
            'Récupération des ordonnées pour chaque série
            For i = 1 To 7
                plage(i) = Cells(j + 2, 7 + i)
            Next i
     
            With Cht
                'Ajoute le tableau d'abscisses
                .SetData C.chDimCategories, C.chDataLiteral, Tableau
                'Ajoute la légenge pour chaque serie
                .SeriesCollection(x).Caption = Cells(j + 2, 7)
                'Affiche valeur de chaque point
                .SeriesCollection(x).DataLabelsCollection.Add
                'Définit la position des valeurs affichées (au dessus par défaut)
                    'Dans la barre pour cet exemple
                .SeriesCollection(x).DataLabelsCollection(0).Position = chLabelPositionCenter
                'Les valeurs de l'histogramme seront affichées en couleur blanche.
                .SeriesCollection(x).DataLabelsCollection(0).Font.Color = RGB(255, 255, 255)
                'Ajoute le tableau d'ordonnées ( Plage() )
                .SeriesCollection(x).SetData C.chDimValues, C.chDataLiteral, plage
                'Définit la couleur de la série
                .SeriesCollection(x).Interior.Color = 50000 * (j + 1)
            End With
     
            x = x + 1
            'Efface le contenu du tableau
            Erase plage
        End If
    Next j
     
    End Sub
     
     
    'Définit le type de graphique
    Private Sub ToggleButton1_Click()
        If ToggleButton1.Caption = "Graphique en Barre" Then
            ToggleButton1.Caption = "Graphique en colonne"
            Else
            ToggleButton1.Caption = "Graphique en Barre"
        End If
    End Sub
    Merci d'avance pour l'aide que vous pourrez m'apporter.

  2. #2
    Membre averti Avatar de delphine35
    Femme Profil pro
    Analyste BO
    Inscrit en
    Novembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste BO

    Informations forums :
    Inscription : Novembre 2009
    Messages : 265
    Points : 377
    Points
    377
    Par défaut
    Ou est ce que ca bloque exactement ? Pourquoi changer la listbox ?

    Tu n'aurais pas le fichier a joindre ?
    Delphine35
    « N’attribuez jamais à la malveillance ce qui s’explique très bien par l’incompétence. » - Napoléon Bonaparte

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    la listebox n'est pas ce que je recherche.
    C'est un fichier qui j'ai trouvé sur internet pour m'aider a comprendre comment fonctionnais un graphique dans un userform.

    Pour ma part j'aimerais juste un paramétrage simple.

    Une variable que je rentre (exemple : B9: D12) coordonnée de mon tableau et qu'on affiche le graphique par rapport a ces coordonnées.

    J'ai continué a chercher un peu et j'ai recommencé le code pour afficher mon graphique dans un userform, pour le moment je suis à ca :

    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
     
    Private Sub CommandButton1_Click()
     
    Dim mongraphe As ChChart
    Dim mafeuille As Worksheet
    Dim plagedonnees As Range
     
    var1 = TextBox1.Value
     
    Set mongraphe = ChartSpace1.Charts.Add
    With mafeuille
        Set plagedonnees = .Range(var1)
        Set mongraphe = .ChartObjects.Add
    End With
     
    End Sub
    mais j'ai une erreur sur la ligne "Set plagedonnees = .Range(var1)"

    merci de ton votre aide

  4. #4
    Membre averti Avatar de delphine35
    Femme Profil pro
    Analyste BO
    Inscrit en
    Novembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste BO

    Informations forums :
    Inscription : Novembre 2009
    Messages : 265
    Points : 377
    Points
    377
    Par défaut
    Tu n'as pas defini la variable "mafeuille" avant le with :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set mafeuille = Worksheets("Feuil1")
    Delphine35
    « N’attribuez jamais à la malveillance ce qui s’explique très bien par l’incompétence. » - Napoléon Bonaparte

  5. #5
    Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Meme si je veux afficher le graphique dans un userform il faut rajouter ce paramétrage ?

    Humm je vais tester

    Edit : bon l'erreur est passé plus bas maintenant ^^!

    Set mongraphe = .ChartObjects.Add

    reedit : J'ai plus de message d'erreur qui s'affiche, mais j'ai pas de graph non plus

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/08/2008, 14h36
  2. Creation graphique avec une plage de données
    Par mat-tech dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 10/06/2008, 13h55
  3. procedure de creation "graphique" de CB 128 et 2/5i
    Par waspy59 dans le forum VB.NET
    Réponses: 9
    Dernier message: 20/05/2008, 17h28
  4. {VBA Excel}Questions sur la creation graphique
    Par ferronimus dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 06/08/2007, 10h37
  5. Réponses: 1
    Dernier message: 03/05/2006, 10h17

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