Modification de code: worksheet

  • Initiateur de la discussion Initiateur de la discussion Nric
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Nric

XLDnaute Nouveau
Bonjour,

J'ai le code suivant, généré par l'enregistreur de macro, qui me créé un graphique.

Code:
  Charts.Add
    ActiveChart.ChartType = xlColumnClustered
    ActiveChart.SetSourceData Source:=[B]Sheets("graph")[/B].Range("A1:B52"), PlotBy _
        :=xlColumns
    ActiveChart.SeriesCollection(2).Delete
    ActiveChart.SeriesCollection(1).XValues = "=[B]graph![/B]R1C1:R52C1"
    ActiveChart.SeriesCollection(1).Values = "=[B]graph![/B]R1C2:R52C2"
    ActiveChart.Location Where:=xlLocationAsObject, Name:=[B]"graph"[/B]
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Transactions" & " " & transactions & "+" & " " & "(" & année & ")"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Week"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Total"
    End With
    ActiveChart.HasLegend = False
    ActiveChart.PlotArea.Select
    ActiveChart.Axes(xlValue).MajorGridlines.Select
    With ActiveChart.Axes(xlValue)
        .MinimumScaleIsAuto = True
        .MaximumScaleIsAuto = True
        .MinorUnitIsAuto = True
        .MajorUnit = 1
        .Crosses = xlAutomatic
        .ReversePlotOrder = False
        .ScaleType = xlLinear
        .DisplayUnit = xlNone
    End With

Le problème est que le nom de mes feuilles vont varier en fonction de ce que mettra l'utilisateur dans une Inputbox. Actuellement le graphique ne se fait que sur la feuille nommée graph!

Ma question est la suivante:
Comment modifier ce code de manière à ce que le graphique se créé dans la feuille nommée par l'utilisateur via une inputbox? J'ai mis en gras les champs que je pense qu'il faut modifier.

Le code d'ajout de feuille est le suivant:

Code:
transactions = InputBox("Nombre désiré >= x? (pour x>=10)")
année = InputBox("Année désirée")

Worksheets.Add
ActiveSheet.Name = transactions & "+" & " " & "(" & année & ")"

Pouvez-vous m'expliquer comment procéder?

Nric
 
Re : Modification de code: worksheet

Bonsoir,

Peut etre quelque chose de ce genre (à tester) :

.....
transactions = InputBox("Nombre désiré >= x? (pour x>=10)")
année = InputBox("Année désirée")

MaFeuille = transactions & "+" & " " & "(" & année & ")"
Worksheets.Add
ActiveSheet.Name = MaFeuille

......
ActiveChart.SeriesCollection(1).XValues = "=" & MaFeuille & "!R1C1:R52C1"
ActiveChart.SeriesCollection(1).Values = "=" & MaFeuille & "!R1C2:R52C2"
ActiveChart.Location Where:=xlLocationAsObject, Name:=MaFeuille
.....
 
Re : Modification de code: worksheet

Bonsoir,

Peut etre quelque chose de ce genre (à tester) :

.....
transactions = InputBox("Nombre désiré >= x? (pour x>=10)")
année = InputBox("Année désirée")

MaFeuille = transactions & "+" & " " & "(" & année & ")"
Worksheets.Add
ActiveSheet.Name = MaFeuille

......
ActiveChart.SeriesCollection(1).XValues = "=" & MaFeuille & "!R1C1:R52C1"
ActiveChart.SeriesCollection(1).Values = "=" & MaFeuille & "!R1C2:R52C2"
ActiveChart.Location Where:=xlLocationAsObject, Name:=MaFeuille
.....

Bonsoir

Je vous remercie pour ce code, malheureusement cela ne marche pas.
J'ai également modifié

ActiveChart.SetSourceData Source:=Sheets("graph").Range("A1:B52"), PlotBy _
:=xlColumns


en

ActiveChart.SetSourceData Source:=ActiveSheet.Range("A1:B52"), PlotBy _
:=xlColumns


mais sans succès.
 
Re : Modification de code: worksheet

Re,

Ca doit fontionner, le probleme, c'est que je ne comprends pas ce que tu veux faire.
Il faudrait que tu donnes un exemple plus precis.
De quoi tu pars et où tu veux arriver.

Il faut adresser les zone de cette façon :
.XValues = "=" & MaFeuille & "!R1C1:R52C1"
 
Re : Modification de code: worksheet

Alors j'ai identifié le problème.

Il provient de la valeur que prend MaFeuille.

Si je met ca, ca marche impéc avec ton code

Code:
MaFeuille = transactions
Worksheets.Add
ActiveSheet.Name = MaFeuille

Mais si je met ca par ex, ca bug:

Code:
MaFeuille = transactions & "+"
Worksheets.Add
ActiveSheet.Name = MaFeuille

Etrange...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
529
Réponses
0
Affichages
467
Réponses
4
Affichages
2 K
Réponses
9
Affichages
65 K
Retour