Problème macro création graph avec page de données variable

nonolegolfeur

XLDnaute Nouveau
Bonjour,

Cela faisait un bon moment que je n'avais pas eu besoin d'avoir recours à vos conseils, mais la je bloque vraiment !

Je vais essayer d'être aussi clair que possible :

Le tableau :

Le tableau extrèmement basique, il permet de connaitre le nombre d'évenements survenus sur des appareils XYZ chaque jour.

- En première ligne des dates, chaque collone correspond à une date différentes, (on ne connait pas le nombre de dates...)
- Les lignes sous les dates contiennent des valeurs numériques qui correspondent à des evenements survenus sur des appareils.

Le but : Créer un graph suivant les dates que l'utilisateur entrera dans une form (ou autre moyen de spécifier de rentrer des données...)

En bref, l'utilisateur arrive, rentre les dates qui l'intéresse puis la macro se charge de créer un graph en prenant les valeurs correspondantes aux dates et à l'appareil qu'il a choisis.


Le problème :
Mon gros problème se situe au niveau de la définition des variables, comment explique à Excel qu'il doit prendre telle ligne et telle colone en fonction des dates que l'utilisateur aura entré.


Le type de graph que je veux créer :


Code :
Code:
Sub Graph_test()
 
    Charts.Add
    ActiveChart.ChartType = xlLineMarkers
    ActiveChart.SetSourceData Source:=Sheets("Data").Range("A1:F2"), PlotBy:= _                                      
' Ici on a Range("A1:F2") mais si l'appareil choisis correspondant à la ligne 3 on aurait : Range("A1:F1,A3:F3")
 
 
        xlRows
    
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Data"
    
    With ActiveChart
        .HasAxis(xlCategory, xlPrimary) = True
        .HasAxis(xlValue, xlPrimary) = True
    End With
    
    ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
    ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False
 
End Sub

Juste un exmple : si le tableau contient des dates entre le 01/06 [A2] et le 30/06[AE2] et que l'utilisateur decide de tracer un graph 10/06 au 20/06 pour un appareil situé en ligne 4 alors le range devra être : ("K1:U1,K4:U4")

Donc si quelqu'un à une piste pour déclarer les variables et pour rechercher le bon range, ça serai SUPER !!!

@+ Arnaud
 

Staple1600

XLDnaute Barbatruc
Re : Problème macro création graph avec page de données variable

Bonjour

Peut-etre de quoi t'inspirer


SOURCE:http://peltiertech.com/Excel/ChartsHowTo/QuickChartVBA.html#addseries
Code:
Sub EmbeddedChartFromScratch()
    Dim myChtObj As ChartObject
    Dim rngChtData As Range
    Dim rngChtXVal As Range
    Dim iColumn As Long

    ' make sure a range is selected
    If TypeName(Selection) <> "Range" Then Exit Sub

    ' define chart data
    Set rngChtData = Selection

    ' define chart's X values
    With rngChtData
        Set rngChtXVal = .Columns(1).Offset(1).Resize(.Rows.Count - 1)
    End With

    ' add the chart
    Set myChtObj = ActiveSheet.ChartObjects.Add _
        (Left:=250, Width:=375, Top:=75, Height:=225)
    With myChtObj.Chart

        ' make an XY chart
        .ChartType = xlXYScatterLines

        ' remove extra series
        Do Until .SeriesCollection.Count = 0
            .SeriesCollection(1).Delete
        Loop

        ' add series from selected range, column by column
        For iColumn = 2 To rngChtData.Columns.Count
            With .SeriesCollection.NewSeries
                .Values = rngChtXVal.Offset(, iCOlumn - 1)
                .XValues = rngChtXVal
                .Name = rngChtData(1, iColumn)
            End With
        Next

    End With

End Sub
 

nonolegolfeur

XLDnaute Nouveau
Re : Problème macro création graph avec page de données variable

Merci de ta réponse,

En fait mon principal problème c'est de trouver les coordonnées des colones de la date de début et de fin...

Quand un utilisateur aura rentré 2 dates, j'aimerais connaître le numéro de la collone qui à la date, la ligne est définis par le materiel.

Donc en gros j'aurais

.Range(Collone_Date_Debut & 1: Collone_Date_Fin & 1, Collone_Date_Debut & i: Collone_Date_Fin)

@+ Arnaud
 

nonolegolfeur

XLDnaute Nouveau
Re : Problème macro création graph avec page de données variable

Oui effectivement, ça peut aider !!!

Voila mon fichier, j'ai créé un mini userform basic pour rentrer les données, le code et directement dans l'userform (plus particulièrement dans le code du Bouton "Generate Graph"

Regarde la pièce jointe Test macro graph.xls

J'ai déjà écris la condition pour le choix du materiel et posé mes variables, maintenant me reste plus qu'à faire correspondre mes noms de variable avec leurs positions, et c'est là ou je bloque !!

Merci !
 

Pièces jointes

  • Test macro graph.xls
    40.5 KB · Affichages: 93
  • Test macro graph.xls
    40.5 KB · Affichages: 92

nonolegolfeur

XLDnaute Nouveau
Re : Problème macro création graph avec page de données variable

Merci pour vos réponses !

Alors j'ai résolu une partie de mon problème pour créer un graph en choississant quelles données on veut utiliser, j'ai utiliser cette solutions :

Code:
Set r1 = Sheets("Data").Range(Cells(1, DebutX), Cells(1, FinX))
Set r2 = Sheets("Data").Range(Cells(i, DebutX), Cells(i, FinX))
Set ranges = Union(r1, r2)

'Et ensuite plus bas dans le code 

ActiveChart.SetSourceData Source:=ranges,

Pour ce qui est du i je l'ai et ça fonctionne si je met des valeur à la place des DebutX et FinX (Numéro de la collone de la date de début et de Fin)

Donc je recherche quelle fonction VBA peut me donnée le numéro de la collone des valeurs choisis !

En gros si le Lundi 24 et en Collone F et le Samedi 30 en collone L alors DebutX sera égale à 6 et
FinX sera égal à 12

Ou si vous avez d'autres solutions merci aussi !!!

Attached my file : Regarde la pièce jointe Test macro graph.xls

Ha oui aussi, pour remplir mes ComboBox, j'utilise ça :
Code:
Dim X As Integer
Dim Y As Integer

    For X = 2 To 256
    cbo_debut.AddItem Sheets("Data").Cells(1, X)
    Next X

    For X = 2 To 256
    Cbo_device.AddItem Sheets("Data").Cells(X, 1)
    Next X
    
    For Y = 2 To 200
    cbo_fin.AddItem Sheets("Data").Cells(1, Y)
    Next Y

Ca me laisse des gros blancs dans la combobox, Est-ce possible de supprimer les blancs ?

Merci !!!
 

Pièces jointes

  • Test macro graph.xls
    35 KB · Affichages: 87
  • Test macro graph.xls
    35 KB · Affichages: 88

nonolegolfeur

XLDnaute Nouveau
Re : Problème macro création graph avec page de données variable

J'essaye avec ça maintenant ... Quelqu'un aurait'il une idée ???? J'en peux plus de ce graph qui ne veux pas fonctionner quand je tente de choisir une collone !

Code:
Private Sub CommandButton1_Click()

Dim i As Integer
Dim r1, r2, ranges As Range
Dim DebutX As Integer
Dim FinX As Integer
Dim j As Integer
Dim k As Integer


' Pour Définir le numéro de la ligne à utiliser...
  
  If Cbo_device.Value = "a" Then
        i = 2
    
    ElseIf Cbo_device.Value = "b" Then
        i = 3
    
    ElseIf Cbo_device.Value = "c" Then
        i = 4
        
    ElseIf Cbo_device.Value = "d" Then
        i = 5
        
    ElseIf Cbo_device.Value = "e" Then
        i = 6
        
    ElseIf Cbo_device.Value = "f" Then
        i = 7
        
        End If
        
 'Pour définir le numéro de la collone à utiliser
       
For j = 2 To 256
 If j = cbo_debut.Value Then
    ActiveCell.Columns = DebutX
    End If
    Next j

For k = 2 To 256
 If k = cbo_fin.Value Then
    ActiveCell.Columns = FinX
    End If
    Next
       
 
'Maintenant pour définir le range du graph, il fonctionne avec les i et si je spécifie le numéro de la collone, mais avec la variable pour la collone ca ne fonctionne plus...
Set r1 = Sheets("Data").Range(Cells(1, DebutX), Cells(1, FinX))
Set r2 = Sheets("Data").Range(Cells(i, DebutX), Cells(i, FinX))
Set ranges = Union(r1, r2)
 
       

    Charts.Add
    ActiveChart.ChartType = xlLineMarkers
    
    ActiveChart.SetSourceData Source:=ranges, PlotBy:= _
        xlRows
    
     ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Graph Alliance"
    
    With ActiveChart
        .HasAxis(xlCategory, xlPrimary) = True
        .HasAxis(xlValue, xlPrimary) = True
    End With
    
    ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
    ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False



End Sub

Merci !Ca vous emble une bonne solution ????Regarde la pièce jointe Test macro graph.xls


@+ et merci
 

Pièces jointes

  • Test macro graph.xls
    41 KB · Affichages: 97
  • Test macro graph.xls
    41 KB · Affichages: 94
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 243
Messages
2 086 549
Membres
103 245
dernier inscrit
gdesign