Graphique VBA avec 2 colonnes variables et disjointes

Résolu/Fermé
padbollevrai Messages postés 51 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 18 mars 2015 - Modifié par padbollevrai le 12/05/2014 à 12:47
padbollevrai Messages postés 51 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 18 mars 2015 - 15 mai 2014 à 13:36
Bonjour,

Je débute en VBA et je cherche à faire un gaphique à partir d'une feuille.
J'ai cherché mais je n'ai pas trouvé de cas similaire au mien. Voici ce que je dois faire:

Créer un graphique avec Cycles en abcisse, Stiffness en ordonnée.
Les colonnes sont de longueur variable, il y a donc une détection de la dernière ligne (Lastline).
La colonne Stiffness se situe toujours en U, début en U4.

La colonne Cycles peut se situer n'importe ou entre A et T. Il faut donc la détecter: C'est la colonne numéro "Col".

Le graphique doit être créé sur la feuille existante CHART.

En bref, la plage de cellules serait du genre :
("Col & 4 : Col & Lastline") ET ("U4 : U & Lastline") avec la bonne synthaxe.

Voici le code que j'ai créé :

Sub Graph()

Dim Col As Integer, Cycle As Integer, Lastline As Integer
Sheets("OUTPUT").Select
Application.ScreenUpdating = False

 Lastline = Range("A" & Rows.Count).End(xlUp).Row  'Detection derniere ligne

For Col = 1 To 20                            'detection colonne Cycles
  Select Case Cells(3, Col)
    Case "Cycle"
        Cycle = Col
    Case Else
  End Select
Next

Charts.Add                               'Creation graphique
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets("2006").Range("Col & 4:Col" & Lastline & ",U4 : U" & Lastline), PlotBy:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="Chart"
With ActiveChart
.HasTitle = True

.Axes(xlCategory, xlPrimary).HasTitle = True

.Axes(xlValue, xlPrimary).HasTitle = True

End With


End Sub



Evidemment, cela ne marche pas: Ouverture dans une nouvelle feuille, prend toutes les colonnes entre Col et T au lieu de ne prendre que ces deux là, etc.


Pouvez-vous m'aider ?

Merci !
A voir également:

3 réponses

padbollevrai Messages postés 51 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 18 mars 2015 1
12 mai 2014 à 16:05
J'ai réussi à faire un graphique qui foncitonne avec des valeurs de plages fixes, mais pas avec quelque chose de variable. J'ai essayé d'utiliser la fonction range dans la déclaration des données mais cela me renvoie une erreur. Voici le code :

Sub Graph()

Dim Col As Integer, Cycle As Integer, Lastline As Integer
Sheets("OUTPUT").Select
Application.ScreenUpdating = False

 Lastline = Range("A" & Rows.Count).End(xlUp).Row  'détection de la dernière ligne

For Col = 1 To 20
  Select Case Cells(3, Col)
    Case "Cycle"     'détection de la colonne "cycle"
        Cycle = Col
    Case Else
  End Select
Next
Sheets("GRAPH").Select
    ActiveSheet.Shapes.AddChart.Select    'Ecriture du graphique
    ActiveChart.ChartType = xlXYScatter
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(1).Name = "='OUTPUT'!$U$1"
    ActiveChart.SeriesCollection(1).XValues = Worksheets("OUTPUT").Range(Cells(4, Cycle), Cells(Lastline, Cycle)) 'ligne qui pose problème
    ActiveChart.SeriesCollection(1).Values = "='OUTPUT'!$U$4:$U$1669"
    ActiveChart.ApplyLayout (3)
    ActiveChart.Axes(xlValue).AxisTitle.Select
    
    ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Number of Cycles"
    
    ActiveChart.Axes(xlValue).AxisTitle.Select
    
    ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Stiffness"
    
    ActiveChart.ChartArea.Select




End Sub



Comment feriez-vous pour déclarer une plage de graphique avec des variables ?

Merci !
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 12/05/2014 à 17:23
Bonjour,

'lettre de la colonne
LC = Split(Cells(8, Col).Address, "$")(1)

ActiveChart.SetSourceData Source:=Sheets("2006").Range(LC & "4:" & LC & Lastline & ",U4:U" & Lastline), PlotBy:=xlColumns
0
padbollevrai Messages postés 51 Date d'inscription mercredi 1 avril 2009 Statut Membre Dernière intervention 18 mars 2015 1
15 mai 2014 à 13:36
Décidément ! Merci
0