aide sur macro

dede039

XLDnaute Occasionnel
bonjour a tous

je voudrai modifier cette macro mais je c pas comment
donc j'ai besoin de votre aide
je crée un graph. dans un userform sur les cellule b2 a b12 (se dont des date)
or je voudrai choisie une plage de date
Mais comment faire j'ai besoin de votre savoir
Code:
Private Sub UserForm_Initialize()
 Dim Annees(), CA(), I As Long
 Dim Cht As WCChart, C
  Me.Caption = Titre
 
 CA = Application.Transpose([B2:B12])
  'une autre façon de remplir un tableau
  ReDim Annees(I)
  For I = 2 To [A65536].End(xlUp).Row
    Annees(I - 2) = Range("A" & I)
    ReDim Preserve Annees(I - 1)
  Next I

Set Cht = ChartSpace1.Charts.Add
 'Trés important de définir un constants, cf l'aide VBA

Set C = ChartSpace1.Constants
 With ChartSpace1
  .HasChartSpaceTitle = True
  .ChartSpaceTitle.Caption = TitreGraph _
          & " de " & Annees(0) & " à " & Annees(UBound(Annees) - 1)
  .HasChartSpaceLegend = True
  .ChartSpaceLegend.Position = C.chLegendPositionBottom
  .ControlTipText = Tip
 End With
 With Cht
  .Type = C.chChartTypeSmoothLineMarkers
  .SetData C.chDimSeriesNames, C.chDataLiteral, TitreLegende
  .SetData C.chDimCategories, C.chDataLiteral, Annees
  .SeriesCollection(0).SetData C.chDimValues, C.chDataLiteral, CA
 End With
End Sub
 

Pièces jointes

  • graph.zip
    13.9 KB · Affichages: 33
  • graph.zip
    13.9 KB · Affichages: 32
  • graph.zip
    13.9 KB · Affichages: 39

JNP

XLDnaute Barbatruc
Re : aide sur macro

Bonjour Dede039 :),
Difficile de garantir les réponses car tu utilises un composant Web que je n'ai pas sur ma machine, mais en gros
Code:
    CA = Application.Transpose([[COLOR=red][B]B2:B12[/B][/COLOR]])
    LastRow = Application.Range("A" & [COLOR=red][B]Rows.Count).End(xlUp).Row[/B][/COLOR]
    For i = 2 To LastRow
        ReDim Preserve Annees(i - 2)
        Annees(i - 2) = Range("A" & i)
    Next i
ton CA est stocké en plage fixe, alors que les dates sont chargées en dynamique, ça, c'est pas bon...
Code:
Dim Plage As Range, Contrôle As Range, Cellule As Range
Set Plage = Selection
Set Contrôle = Intersect(Plage, Range("A:A"))
If Contrôle Is Nothing Then
MsgBox "Vous devez sélectionner une plage de dates !", vbCritical, "ATTENTION"
Unload Me
End If
If Contrôle.Address <> Plage.Address Then
MsgBox "Vous devez sélectionner une plage de dates !", vbCritical, "ATTENTION"
Unload Me
End If
I = 0
For Each Cellule In Plage
ReDim Preserve Annees(I)
ReDim Preserve CA(I)
Annees(I) = Cellule.Value
CA(I) = Cellule.Offset(0, 1).Value
I = I + 1
Next
te permettra de sélectionner une plage de date (même discontinue) en colonne A, et chargera tes 2 tableaux.
Bon dimanche :cool:
 
Dernière édition:

dede039

XLDnaute Occasionnel
Re : aide sur macro

bonjour JNP

merci pour ta réponse

cela marche bien
juste 2 petit chose
- je voudrai entre la plage de date dans 2 cellule comment fait (ex : f3 et g3)
- et ici ont prend le donne de la colonne "B" comment faire pour colonne "c" ou graph a 2 axe "d" et "e"
:rolleyes::rolleyes:
 

JNP

XLDnaute Barbatruc
Re : aide sur macro

Re :),
juste 2 petit chose
- je voudrai entre la plage de date dans 2 cellule comment fait (ex : f3 et g3)
- et ici ont prend le donne de la colonne "B" comment faire pour colonne "c" ou graph a 2 axe "d" et "e"
ça change toutes les données du problème et n'a plus rien à voir avec ton exemple :mad:...
F3-G3
Peut-être en changeant
Code:
Set Contrôle = Intersect(Plage, Range("3:3"))
2 axes
Peut-être avec un CA2()
Code:
For Each Cellule In Plage
ReDim Preserve Annees(I)
ReDim Preserve CA(I)
ReDim Preserve CA2(I)
Annees(I) = Cellule.Value
CA(I) = Cellule.Offset(0, 1).Value
CA2(I) = Cellule.Offset(0, 2).Value
I = I + 1
Next
Bon dimanche :cool:
 

Statistiques des forums

Discussions
312 413
Messages
2 088 201
Membres
103 762
dernier inscrit
rouazali