aide pour modifier les sources d'un graphique

  • Initiateur de la discussion Bebe-Flipper
  • Date de début
B

Bebe-Flipper

Guest
voila, je fais un graphique sous excel. j'ai créé 3 graphique, pour les mettres en forme directement.

Ce que je voudrais pouvoir faire, qu'apres une selection dans une combo_box, il aille a la ligne correspondant dans ma page excel, et qu'il s'en serve comme donnée source pour mon graph

exemple:

je choisis la ligne 12 dans ma combo_box:
il me prends toutes les cellules de cette ligne la comme source pour la serie de mon graph. (jusqu'a ce qu'il rencontre une cellule vide)
(les 3 graph fonctionnant sous le meme principe, j'ai besoin que d'une explication ;) )


Mais j'arrive pas a trouver comment on fait.

Quelqu'un pourrait m'aider, svp, si cette methode est possible ?
C'est assez urgent :(

Merchi D'avance
 
T

Ti

Guest
voici une façon de faire :

Option Explicit
'Ti
Sub NouvelleSource(Graph As ChartObject, PlageSource As Range)
Dim Source As String
Source = "=" & PlageSource.Worksheet.Name & "!" & PlageSource.Address(, , xlR1C1)
With Graph.Chart
.SeriesCollection(1).Values = Source
End With
End Sub

Sub Test()
Dim Plage As Range, Graph As ChartObject
On Error GoTo erreur
'ici F1 est le nom de la feuille où se trouvent le graphique et les valeurs
With F1
Set Plage = .Range("A6", .Range("A6").End(xlToRight))
Set Graph = .ChartObjects(1)
'tu pourrais aussi écrire
'Set Graph = .ChartObjects("GraphTest")
End With
'pour modifier le 1er graphique
NouvelleSource Graph, Plage
Exit Sub
erreur:
MsgBox "Erreur !", vbCritical
End Sub
 
B

Bebe-Flipper

Guest
merci bcp :)

Je pense que ca correspond, je vais tester ca, et je te dis si c'est bon, mais je te fais confiance :)

Il me manquait juste la maniere de mettre les nouvelles sources :)

Hum, question:

Je sais que pour la methode Cells(ligne, colonne), ligne et colonne peuvent etre des chiffre.

Mais dans une plage, on est obliger de mettre une lettre ?
et dans ce cas, est ce qu'il est possible de recuperer la lettre de la colonne ?

Merci encore pour le code :)
 
T

Ti

Guest
non, pour définir la plage de mon exemple , tu pourrais remplacer

Set Plage = .Range("A6", .Range("A6").End(xlToRight))

par

Set Plage = Range(.Cells(6, 1), .Cells(6, 1).End(xlToRight))

Ainsi plus de lettres.
 

Discussions similaires

Statistiques des forums

Discussions
312 504
Messages
2 089 087
Membres
104 026
dernier inscrit
bernard58