[VBA Excel] Création d'un graphique

Nyck0las Messages postés 83 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 4 septembre 2014 - 7 déc. 2007 à 11:23
caco64 Messages postés 69 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 14 décembre 2007 - 12 déc. 2007 à 01:22
Bonjour,

je suis en train de réaliser une macro pour traiter un ensemble de données.

Pour diverses caractéristiques, j'ai calculé la valeur d'un individu ainsi que le minimum, le max, la moyenne et la médiane d'un échantillon comparatif.

Ce que j'aimerais faire, c'est réaliser une sorte d'histogramme permettant de caractériser l'individu en question.
Chacune des colonnes correspondrait à une caractéristique, la hauteur de la colonne serait la valeur pour cet individu. J'aimerais également faire figurer pour chaque colonne les grandeurs de l'échantillon (min, max, moy et med). J'espère que je suis suffisament clair ...

quelqu'un aurait-il quelques pistes pour m'orienter ??

merci

9 réponses

Nyck0las Messages postés 83 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 4 septembre 2014
7 déc. 2007 à 14:57
j'ai trouvé comment faire pour superposer en utilisant les styles personnalisés de graphs mais par contre j'ai d'autres soucis


j'ai crée un tableau


dim TabG
TabG=array()


que je remplis ainsi


ReDim TabG(0 To 5, 1 To 4)
    For i = 1 To 4
        TabG(0, i) = Cells(1, ColN + i)
        TabG(1, i) = Cells(2, ColN + i)
        For j = 2 To 5
            TabG(j, i) = Cells(LgEt - 2, ColN + i)
        Next
    Next


et je m'en sers ensuite comme donnée source pour mon graph


For i = 1 To 5
    ActiveChart.SeriesCollection(i).XValues = TabG.Rows(0)
    ActiveChart.SeriesCollection(i).Values = TabG.Rows(i)
Next


mais çà ne marche pas, çà coince sur les dernières lignes avec l'erreur 13 : incompatibilité de type
caco64 Messages postés 69 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 14 décembre 2007
8 déc. 2007 à 00:58
Je ne connais pas cette propriété rows et je me demande si le problème ne vient pas de là.
Un truc qui marche consiste à stocker les valeurs dans un tabeau à une seule dimension.
Si tu l'appelle mes_valeurs = array()
ActiveChart.SeriesCollection(i).XValues = mes_vleurs marche bien
Mais cela suppose de redéfinir les valeurs contenues dans mes_valeurs à chaque boucle, en fonction de celles stockées dans TabG

Autrement basiquement, tu écris les valeurs dans une variable string contenant les valeurs séparées par des virgules et ça marche bien aussi.
ActiveChart.SeriesCollection(i).XValues = "3,6,7"

La haine aveugle n'est pas sourde
Nyck0las Messages postés 83 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 4 septembre 2014
10 déc. 2007 à 11:29
J'ai réécrit mon code en utilisant des strings comme l'as suggéré :

Dim TabG(0 To 5) As String

j'affecte les valeurs à chaque TabG(i) par concaténation et ensuite j'utilise ces données par :

For i = 1 To 5
    ActiveChart.SeriesCollection(i).XValues = TabG(0)
    ActiveChart.SeriesCollection(i).Values = TabG(i)
Next

mais çà coince encore, voici le message :

Erreur d'exécution 1004 : la méthode SeriesCollection de l'objet _Chart a échoué

et la première ligne activechart est surlignée
Nyck0las Messages postés 83 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 4 septembre 2014
10 déc. 2007 à 11:33
la macro me trace la première série du graph et bloque après

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nyck0las Messages postés 83 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 4 septembre 2014
10 déc. 2007 à 14:42
aucune idée en vue ?????
caco64 Messages postés 69 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 14 décembre 2007
10 déc. 2007 à 22:30
Ton problème vient du fait que tu dois créer les séries qui n'existent pas encore avant de les définir.

Donc là, tu fais la modif suivante :

ActiveSheet.ChartObjects("Graphique 2").Activate
nse = ActiveChart.SeriesCollection.Count
For i = 1 To 5
    If i > nse Then ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(i).XValues = TabG(0)
    ActiveChart.SeriesCollection(i).Values = TabG(i)
Next

Et là, ça devrait fonctionner.

La haine aveugle n'est pas sourde
Nyck0las Messages postés 83 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 4 septembre 2014
11 déc. 2007 à 11:11
super merci beaucoup, çà marche !!!!!!!!!
caco64 Messages postés 69 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 14 décembre 2007
12 déc. 2007 à 01:21
caco64 Messages postés 69 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 14 décembre 2007
12 déc. 2007 à 01:22
Pas de quoi.

La haine aveugle n'est pas sourde
Rejoignez-nous