XL 2013 Exécuter une macro sur plusieurs feuilles

ph.vanne

XLDnaute Junior
Bonjour,

J’ai un classeur avec plusieurs feuilles (une par jour) et j’aimerais qu’une macro que j’ai créée sur la première feuille puisse s’exécuter également sur les autres feuilles : n’étant pas très à l’aise avec Visual Basic, je ne trouve pas de solution !

Un autre de mes problèmes : j’ai une macro qui réalise un tableau à partir d’un autre tableau (pour celle-ci aucun problème, elle fonctionne) et une macro qui réalise un graphique à partir du deuxième tableau. Il y a un problème pour cette macro mais je ne comprends pas pourquoi …

J’aimerais que la macro réalise exactement le graphique que j’ai mis en exemple (c’est-à-dire avec l’échelle horaire, les abscisses en ordre inverse, les éléments de la légende inutiles supprimés etc…). J’ai essayé de reprendre ma macro pas à pas mais je ne trouve pas.

Je mets on fichier en exemple (avec les deux feuilles pour 2 journées différentes) ainsi que les boutons qui lancent mes 2 macros.
Merci de votre aide !
Et bonne journée
 

Pièces jointes

  • exemple.xlsm
    29.3 KB · Affichages: 41
  • exemple.xlsm
    29.3 KB · Affichages: 37
C

Compte Supprimé 979

Guest
Re : Exécuter une macro sur plusieurs feuilles

Bonjour ph.vanne

J’ai un classeur avec plusieurs feuilles (une par jour) et j’aimerais qu’une macro que j’ai créée sur la première feuille puisse s’exécuter également sur les autres feuilles : n’étant pas très à l’aise avec Visual Basic, je ne trouve pas de solution !
Il faut mettre ton code dans ThisWorkbook
Et renseigner dans ton code l'objet sur lequel tu veux agir grâce à la variable objet "Sh"

A+
 

ph.vanne

XLDnaute Junior
Re : Exécuter une macro sur plusieurs feuilles

Bonjour,

J'ai enregistré mon code dans ThisWorkbook d'accord mais est-ce que tu peux développer la suite ? Je ne comprends pas bien a quel endroit je dois mettre cette variable "Sh" ...

Voici mon code :

"Sub graphique()
'
' graphique Macro
'
'
Range("A1:I8").Select
Selection.Copy
Range("A10").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("D12").Select
ActiveCell.FormulaR1C1 = "=R[-9]C-SUM(R[-9]C[-2]:R[-9]C[-1])"
Range("D12").Select
Selection.AutoFill Destination:=Range("D12:D17"), Type:=xlFillDefault
Range("D12:D17").Select
Range("F12").Select
ActiveCell.FormulaR1C1 = "=R[-9]C-SUM(R[-9]C[-2]:R[-9]C[-1])"
Range("F12").Select
Selection.AutoFill Destination:=Range("F12:F17"), Type:=xlFillDefault
Range("F12:F17").Select
Range("H12").Select
ActiveCell.FormulaR1C1 = "=R[-9]C-SUM(R[-9]C[-2]:R[-9]C[-1])"
Range("H12").Select
Selection.AutoFill Destination:=Range("H12:H17"), Type:=xlFillDefault
Range("H12:H17").Select
Range("A10:I17").Select
ActiveSheet.Shapes.AddChart2(297, xlBarStacked).Select
ActiveChart.SetSourceData Source:=Range("'25-08-2015'!$A$10:$I$17")
ActiveChart.Parent.Delete
Range("A10:G17").Select
ActiveSheet.Shapes.AddChart2(297, xlBarStacked).Select
ActiveChart.SetSourceData Source:=Range("'25-08-2015'!$A$10:$G$17")
ActiveChart.PlotBy = xlColumns
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).ReversePlotOrder = True
ActiveChart.SetElement (msoElementChartTitleNone)
ActiveChart.Axes(xlValue).Select
ActiveChart.Axes(xlValue).MinimumScale = 0.333333
ActiveChart.Axes(xlValue).MaximumScale = 0.708333
ActiveChart.Axes(xlValue).MajorUnit = 0.020833
ActiveChart.FullSeriesCollection(1).Select
Selection.Format.Fill.Visible = msoFalse
ActiveChart.FullSeriesCollection(3).Select
Selection.Format.Fill.Visible = msoFalse
ActiveChart.FullSeriesCollection(5).Select
Selection.Format.Fill.Visible = msoFalse
ActiveChart.ChartArea.Select
ActiveSheet.Shapes("Graphique 2").ScaleWidth 1.5770833333, msoFalse, _
msoScaleFromTopLeft
End Sub"
 
C

Compte Supprimé 979

Guest
Re : Exécuter une macro sur plusieurs feuilles

Re,

Tu nous dis
J’ai un classeur avec plusieurs feuilles (une par jour) et j’aimerais qu’une macro que j’ai créée sur la première feuille puisse s’exécuter également sur les autres feuilles : n’étant pas très à l’aise avec Visual Basic, je ne trouve pas de solution !

Un autre de mes problèmes : ...
Donc moi je comprends,
1) j'ai un code qui doit s'exécuter pour toutes les feuilles de mon classeur
=> à mettre dans ThisWorkbook

2) J'ai un code que je veux utiliser pour créer mon graphique
=> autre code donc, pour créer un graphique
=> ce code est à mettre dans un module

Et dans ce que tu nous donne, tu nous donnes le code du graphique !!!???

Sinon voici un code à mettre dans un module et qui fonctionne avec la feuille active
A peaufiner pour obtenir ce que tu souhaites
Code:
Sub Graphique()  Dim Sht As Worksheet
  ' Indiquer à VBA avec qui travailler
  ' Avec la feuille active
  With ActiveSheet
    .Range("A1:I6").Copy Destination:=.Range("A8")
    Application.CutCopyMode = False
    .Range("D10:D13").FormulaLocal = "=D3-SOMME(B3:C3)"
    '.Range("D10:D13").AutoFill
    .Range("F10:F13").FormulaLocal = "=F3-SOMME(D3:E3)"
    .Range("H10:H13").FormulaLocal = "=H3-SOMME(F3:G3)"
  End With
  ' Définir la feuille active
  Set Sht = ActiveSheet
  ' Créer le graphique
  Sht.Shapes.AddChart(297).Select
  ' Avec le graphique actif
  With ActiveChart
    .SetSourceData Source:=Sht.Range("$A$8:$I$13")
    .PlotBy = xlColumns
    .Axes(xlCategory).ReversePlotOrder = True
    .SetElement (msoElementChartTitleNone)
    .Axes(xlValue).MinimumScale = 0.333333
    .Axes(xlValue).MaximumScale = 0.708333
    .Axes(xlValue).MajorUnit = 0.020833
    .SeriesCollection(1).Format.Fill.Visible = msoFalse
    .SeriesCollection(3).Format.Fill.Visible = msoFalse
    .SeriesCollection(5).Format.Fill.Visible = msoFalse
    'ActiveSheet.Shapes("Graphique 2").ScaleWidth 1.5770833333, msoFalse, _
                                                 msoScaleFromTopLeft
  End With
End Sub

A+
 
Dernière modification par un modérateur:

Discussions similaires

Statistiques des forums

Discussions
312 240
Messages
2 086 518
Membres
103 241
dernier inscrit
Peyo33