Probleme d'ajout de donnees dans un graph

Résolu
unglued Messages postés 24 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 28 mars 2008 - 27 mars 2008 à 17:46
unglued Messages postés 24 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 28 mars 2008 - 28 mars 2008 à 13:54
Bonjour,

voici mon probleme,

Je voudrais faire une mise a jour automatique d'un graph.
Mon malheur est que je ne trouve pas la bonne ligne de commande pour lui donner ces valeurs,
j'ai  testé plusieurs possibilités mais aucune ne fonctionne, et je me demande donc si la facon dont je veux update mon graph peux fonctionné en la commandant depuis VB.


en fait j'ai des valeur eparpillées dans une collonne, jai recuperer le nom de chaque cellules qui m'interresse dans une variable de type string, et je voudrais envoyer cette variable pour que mon graph repere les nouvelle donnees
la ligne de commande ressemble a ca :
ActiveChart.SeriesCollection(1).XValues = _
        Worksheets("Overview").Range(axe_X)         'axe_X etant ma variable string contenant mes cellules


Je sais ou ce trouve le probleme, mais je n'arrive pas a le resoudre:
ma variable axe_X contient mes valeur de cellules
ex: "B11,B15,B19,B23"

et d'apres mes test
ActiveChart.SeriesCollection(1).XValues =
n'accepte pas que les cellules ne se touche pas,
c'est a dire que quand j'ecrit range("B11:B23") ca marche (avec bien sur les cellule dont je ne veux pas : B12, B13,B14 etc...)
Et quand j'ecrit range("B11,B15,B19,B23") ca ne marche pas :(

je vous joint egalement mon petit programme si jamais ca vous interresse...


Sub thickness_update()



Dim axe_X As String
Dim axe_Y As String
Dim ligne As String



Sheets("Overview").Select



axe_X = "B11"
axe_Y = "R11"



Range("B15").Select



Do While Selection.Value <> 0



    ligne = Selection.Row
    axe_X = axe_X & ",B" & ligne
    axe_Y = axe_Y & ",R" & ligne



    Range("B" & ligne).Select
    Selection.End(xlDown).Select



Loop

Sheets("Thickness").Select
ActiveChart.SeriesCollection(1).XValues = _   'Cette ligne bloque
        Worksheets("Overview").range(axe_X)

ActiveChart.SeriesCollection(1).Values = _      'Ainsi que celle-ci
        Worksheets("Overview").range(axe_Y)
End Sub





Si jamais vous avez des infos ou des idee sur la facon dont je peux regler ce probleme je suis preneur !!!

Merci a vous

2 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
28 mars 2008 à 04:31
Salut,

il n'est effectivement pas possible de creer un graph directement a`partir de donnés eparpillées sur une ou plusieur feuille.
Donc 2 solutions,
la 1ere, peut etre la plus simple, est d'avoir un tableau intermediaire dans une feuille caché, dans le quel tu regroupes les donnés.
la 2ieme consiste a ecrire directement les valeurs dans la "SeriesCollection" voulue sous la forme: XValues = "={1,2.5,3,1,0,6.8,10}"

Sub DataGraph()
    Dim ValeurAxeX As String, Dim ValeurAxeY As String, i As Long, separateur As String
    ValeurAxeX = "={"
    ValeurAxeY = "={"
    separateur = ","
    ActiveSheet.ChartObjects("Chart 1").Activate
    For i = 11 To 23 Step 4 'avec cette boucle on concatene les valeurs des cellules des colonnes B et R toute les 4 cellules        If i 23 Then separateur "}"
        ValeurAxeX = ValeurAxeX & Worksheets("Overview").Range("B" & i).Value & separateur
        ValeurAxeY = ValeurAxeY & Worksheets("Overview").Range("R" & i).Value & separateur
    Next
    With ActiveChart.SeriesCollection("1")
        .XValues = ValeurAxeX
        .Values = ValeurAxeY
    End With
End Sub

en suite comme il n'y pas de lien directe le graph ne sera pas mis a jour automatiquement donc il te faudras utilisé l'evenement change de la feuille qui contient les donnés pour verifier si une des donnés a changée et lancer la macro pour mettre a jour le graph si c'est bien le cas

Vala

A+
3
unglued Messages postés 24 Date d'inscription mercredi 9 janvier 2008 Statut Membre Dernière intervention 28 mars 2008
28 mars 2008 à 13:54
OK merci
Je vais tester de faire ca en macro et si ca marche pas je ferais une table cachee sur laquelle je viendrais prendre les donnees,

Sinon personne a le numero de telephone des concepteurs d'excel que je les allumes sur le fait kon ne puisse pas gerer mon probleme en maccro mais kon puisse le faire a la main ??? :P
0
Rejoignez-nous