Creation d un graphique a plage de donnes variables

badbad

XLDnaute Junior
Bonjour,
Un tout petit problème qui me rends chèvre (je dois avoir la solution devant les yeux mais je ne la voie pas ce qui est frustrant...).

Je cherche a générer un graphique dans une feuille Excel après avoir appuyé sur un bouton. Le bouton permet de connaitre de quelle colonne les données proviennent et en fonction de cela je regarde les lignes non vides pour déterminer la longueur de la plage de donnée pour le graphique.

Dans ma macro (voir fichier ci-joint) j ai le code suivant:

Charts.Add
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=Sheets("DQP (3)").Range(Cells(7, Colone), Cells(Derniere_Ligne, Colone)), PlotBy _
:=xlColumns

la valeur colonne étant attribuée en fonction du bouton sélectionné et la valeur Derniere_Ligne est en fonction de la dernière case non vide de la colonne.

Lorsque j effectue ceci je me retrouve avec le message d erreur:
"la methode 'cell' de l objet '-Global' a échouée..... ce que je ne comprends pas puisque cette façon de définir un Range marche pour moi dans d autres macros...

Si vous pouviez jeter un coup d œil ce serrait gentil. Pour lancer la macro il suffit d appuyer sur le bouton "Accélération"

Merci par avance
Cordialement
Alexandre BESSY
 

Pièces jointes

  • Forum_Exce5.xls
    46.5 KB · Affichages: 77

nouv

XLDnaute Occasionnel
Re : Creation d un graphique a plage de donnes variables

bonjour badbad,
effectivement, il y a quelque chose d'agaçant dans le problème
seule méthode trouvée pour l'instant, c'est de sélectionner d'abord

Code:
...
End If
   
    Range(Cells(7, Colone), Cells(Derniere_Ligne, Colone)).Select
    Charts.Add
    ActiveChart.ChartType = xlXYScatter
[COLOR="SeaGreen"]'    ActiveChart.SetSourceData Source:=Worksheets("DQP (3)").Range(Cells(7, Colone), Cells(Derniere_Ligne, Colone)), PlotBy:=xlColumns

    'ActiveChart.SeriesCollection(1).XValues = "='DQP (3)'!R7C2:R10C2"[/COLOR]
    ActiveChart.Location Where:=xlLocationAsObject, Name:="DQP (3)"
 [COLOR="SeaGreen"]  ' xlLocationAsObject[/COLOR]
    With ActiveChart

si ça peut te permettre d'avancer en attendant le pourquoi du comment :

><>
 

mécano41

XLDnaute Accro
Re : Creation d un graphique a plage de donnes variables

Bonjour,

J'ai juste ajouté un Range intermédiaire (nommé essai) et ça marche. Mais je ne sais pas pourquoi (je ne suis pas très avancé en VBA!) :

Dim Name As String
Dim Colone As Integer
Dim essai As Range

Sub Graph()
' Macro1 Macro
' Macro recorded 4/13/2007 by DFJ
Dim Derniere_Ligne As Integer
Dim selection As String
ActiveWorkbook.Worksheets("DQP (3)").Activate
Derniere_Ligne = 9
If Cells(13, Colone) <> "" Then
Derniere_Ligne = 13
ElseIf Cells(12, Colone) <> "" Then
Derniere_Ligne = 121
ElseIf Cells(11, Colone) <> "" Then
Derniere_Ligne = 11
ElseIf Cells(10, Colone) <> "" Then
Derniere_Ligne = 10
End If
Set essai = Sheets("DQP (3)").Range(Cells(7, Colone), Cells(Derniere_Ligne, Colone))
Charts.Add
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=essai, PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).XValues = "='DQP (3)'!R7C2:R10C2"
ActiveChart.Location Where:=xlLocationAsObject, Name:="DQP (3)"
'xlLocationAsObject
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = Name
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
End Sub

Cordialement
 

Catrice

XLDnaute Barbatruc
Re : Creation d un graphique a plage de donnes variables

Bonjour,

A tout hasard, une solution de graphique lié à une plage de données variable sans macro.
 

Pièces jointes

  • graphMobile.xls
    29.5 KB · Affichages: 110
  • graphMobile.xls
    29.5 KB · Affichages: 113
  • graphMobile.xls
    29.5 KB · Affichages: 112

badbad

XLDnaute Junior
Re : Creation d un graphique a plage de donnes variables

CB60 à dit:
Bonjour à tous
Avec les élements de Mouv et quelques modifs dans la macro

Meric pour cette solution, il n y a qu un petit defaut, cela ne prends plus en compte les valeurs des X (colone precende a celle de la plage de donnes).

Une idee?
De mon cote je comprends bien que c est la ligne:
ActiveChart.SeriesCollection(1).XValues = "='DQP (3)'!R7C2:R10C2"

qui definit cela mais je n arrive pas a comprendre la signification de la valeur de la plage: "='DQP (3)'!R7C2:R10C2"...

Merci a vous
Cordialement
Alexandre BESSY
 

nouv

XLDnaute Occasionnel
Re : Creation d un graphique a plage de donnes variables

salut badbad

ActiveChart.SeriesCollection(1).XValues = "='DQP (3)'!R7C2:R10C2"

j'avais vu cette ligne sur ton premier code mais comme les séries n'étaient pas toujours sur ces cellules là, je l'avais purement et simplement virer et... je l'ai oublié ensuite.

donc petites modif au code de CB60 (en rouge)

Code:
End If
End If
   [COLOR="Red"]Set donnees = Range(Cells(7, Colone), Cells(Derniere_Ligne, Colone))
   Set serie = Range(Cells(7, Colone - 1), Cells(Derniere_Ligne, Colone - 1))[/COLOR]
    Charts.Add
[COLOR="Red"]    ActiveChart.SetSourceData Source:=donnees, PlotBy:=xlColumns
    ActiveChart.SeriesCollection(1).XValues = serie[/COLOR]
    ActiveChart.ChartType = xlXYScatter

dis nous
><>
 

badbad

XLDnaute Junior
Re : Creation d un graphique a plage de donnes variables

Merci beaucoup cela correspond a ce que j avais trouve de mon cote en attendant: Xzone = "='DQP (3)'!R7C" & Colone - 1 & ":R" & Derniere_Ligne & "C" & Colone - 1 mais ta methode est beaucoup plus propre.

Encore merci pour votre aide

Cordialement
Alexandre BESSY
 

Discussions similaires

Statistiques des forums

Discussions
312 201
Messages
2 086 171
Membres
103 152
dernier inscrit
Karibu