Graphique VBA avec 2 colonnes variables et disjointes

Résolu
padbollevrai Messages postés 58 Statut Membre -  
padbollevrai Messages postés 58 Statut Membre -
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 !

3 réponses

  1. padbollevrai Messages postés 58 Statut Membre 1
     
    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
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  3. padbollevrai Messages postés 58 Statut Membre 1
     
    Décidément ! Merci
    0