Traiter plusieurs graphiques en même temps (VBA)

Le
Emile63
Bonjour à tous,
Depuis mon classeur, qui contient plusieurs graphiques (en feuille et en
objet sur des feuille) je souhaiterais tous les séléctionner et leur changer
la date.
En tant "qu'amateur" je brode autour de ceci qui bien sûr, ne fonctionne pas.
Si quelqu'un pouvait m'apporter son éclairage bienveillant :-)
-
Dim ch As ChartObject

Set ch = ActiveWorkbook.ChartObjects.Count
For Each ch In ActiveWorkbook
ActiveChart.Axes(xlCategory).Select
With ActiveChart.Axes(xlCategory)
.MinimumScale = "01/01/2007"
.MaximumScale = True
End With
Next

End Sub

Je vous remercie d'avance pour votre aide,
Cordialement,
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #5027681
Bonjour.
Essaie :

Dim ch As ChartObject

For Each ch In ActiveWorkbook.ActiveSheet.ChartObjects
With ch.Chart.Axes(xlCategory)
Var = .MinimumScale
.MinimumScale = DateValue("01/01/2007")
.MaximumScale = True
End With
Next

Cordialement.
Daniel
"Emile63" news:
Bonjour à tous,
Depuis mon classeur, qui contient plusieurs graphiques (en feuille et en
objet sur des feuille) je souhaiterais tous les séléctionner et leur
changer
la date.
En tant "qu'amateur" je brode autour de ceci qui bien sûr, ne fonctionne
pas.
Si quelqu'un pouvait m'apporter son éclairage bienveillant :-)
----------------------------------------------------------
Dim ch As ChartObject

Set ch = ActiveWorkbook.ChartObjects.Count
For Each ch In ActiveWorkbook
ActiveChart.Axes(xlCategory).Select
With ActiveChart.Axes(xlCategory)
.MinimumScale = "01/01/2007"
.MaximumScale = True
End With
Next

End Sub
---------------------------------------------------------
Je vous remercie d'avance pour votre aide,
Cordialement,



Daniel.C
Le #5027641
Bien sûr, la ligne commençant par Var = est superflue.
Daniel
"Daniel.C" u$
Bonjour.
Essaie :

Dim ch As ChartObject

For Each ch In ActiveWorkbook.ActiveSheet.ChartObjects
With ch.Chart.Axes(xlCategory)
Var = .MinimumScale
.MinimumScale = DateValue("01/01/2007")
.MaximumScale = True
End With
Next

Cordialement.
Daniel
"Emile63" news:
Bonjour à tous,
Depuis mon classeur, qui contient plusieurs graphiques (en feuille et en
objet sur des feuille) je souhaiterais tous les séléctionner et leur
changer
la date.
En tant "qu'amateur" je brode autour de ceci qui bien sûr, ne fonctionne
pas.
Si quelqu'un pouvait m'apporter son éclairage bienveillant :-)
----------------------------------------------------------
Dim ch As ChartObject

Set ch = ActiveWorkbook.ChartObjects.Count
For Each ch In ActiveWorkbook
ActiveChart.Axes(xlCategory).Select
With ActiveChart.Axes(xlCategory)
.MinimumScale = "01/01/2007"
.MaximumScale = True
End With
Next

End Sub
---------------------------------------------------------
Je vous remercie d'avance pour votre aide,
Cordialement,







Emile63
Le #5027321
Re-bonjour Daniel (et les autres),
Merci pour ton aide et ta solution. Toutefois, celle-ci de fonctionne que
pour les graphiques posés en tant qu'objet dans un onglet, mais pas quand
l'onglet lui-même est un graphique. De plus, je souhaiterais qu'il parcourt
tous les onglets de mon classeur... ;-)
Aurais-tu une solution pour moi ?
Merci d'avance, cordialement.



Bonjour à tous,
Depuis mon classeur, qui contient plusieurs graphiques (en feuille et en
objet sur des feuille) je souhaiterais tous les séléctionner et leur changer
la date.
En tant "qu'amateur" je brode autour de ceci qui bien sûr, ne fonctionne pas.
Si quelqu'un pouvait m'apporter son éclairage bienveillant :-)
----------------------------------------------------------
Dim ch As ChartObject

Set ch = ActiveWorkbook.ChartObjects.Count
For Each ch In ActiveWorkbook
ActiveChart.Axes(xlCategory).Select
With ActiveChart.Axes(xlCategory)
.MinimumScale = "01/01/2007"
.MaximumScale = True
End With
Next

End Sub
---------------------------------------------------------
Je vous remercie d'avance pour votre aide,
Cordialement,



Daniel.C
Le #5027301
Essaie :

Sub TEST1()
Dim ch As ChartObject

For Each sh In Sheets
If sh.Type = 3 Then
sh.Axes(xlCategory).MinimumScale = DateValue("01/01/2007")
Else
For Each ch In ActiveWorkbook.sh.ChartObjects
With ch.Chart.Axes(xlCategory)
.MinimumScale = DateValue("01/01/2007")
.MaximumScale = True
End With
Next ch
End If
Next sh
End Sub

Daniel
"Emile63" news:
Re-bonjour Daniel (et les autres),
Merci pour ton aide et ta solution. Toutefois, celle-ci de fonctionne que
pour les graphiques posés en tant qu'objet dans un onglet, mais pas quand
l'onglet lui-même est un graphique. De plus, je souhaiterais qu'il
parcourt
tous les onglets de mon classeur... ;-)
Aurais-tu une solution pour moi ?
Merci d'avance, cordialement.



Bonjour à tous,
Depuis mon classeur, qui contient plusieurs graphiques (en feuille et en
objet sur des feuille) je souhaiterais tous les séléctionner et leur
changer
la date.
En tant "qu'amateur" je brode autour de ceci qui bien sûr, ne fonctionne
pas.
Si quelqu'un pouvait m'apporter son éclairage bienveillant :-)
----------------------------------------------------------
Dim ch As ChartObject

Set ch = ActiveWorkbook.ChartObjects.Count
For Each ch In ActiveWorkbook
ActiveChart.Axes(xlCategory).Select
With ActiveChart.Axes(xlCategory)
.MinimumScale = "01/01/2007"
.MaximumScale = True
End With
Next

End Sub
---------------------------------------------------------
Je vous remercie d'avance pour votre aide,
Cordialement,





Emile63
Le #5026941
Bonjour Daniel,
Merci pour ta sollicitude.
-Est-ce que la variable (non spécifiée) de sh est bien Sheets?
(Dim sh As Sheets)
Car j'ai une erreur d'exécution: il ne trouve pas "sh.Type"

Merci pour cette précision,
cordialement,



Essaie :

Sub TEST1()
Dim ch As ChartObject

For Each sh In Sheets
If sh.Type = 3 Then
sh.Axes(xlCategory).MinimumScale = DateValue("01/01/2007")
Else
For Each ch In ActiveWorkbook.sh.ChartObjects
With ch.Chart.Axes(xlCategory)
.MinimumScale = DateValue("01/01/2007")
.MaximumScale = True
End With
Next ch
End If
Next sh
End Sub

Daniel


Daniel.C
Le #5026871
Bonjour.
Au temps pour moi.
Je me suis trompé de valeur dans Chart.type. sh représente chacun des
onglets du classeur. Cependant il s'agit soit de "worksheet" soit de
graphiques (chart). On ne peut pas le qualifier dans les déclarations sous
peine de plantage.
Quand sh.type = 3, il s'agit d'une feuille graphique.
Voici le code modifié :

Sub TEST1()
Dim ch As ChartObject, sh
For Each sh In Sheets
If sh.Type = 3 Then
sh.Axes(xlCategory).MinimumScale = DateValue("01/01/2007")
Else
For Each ch In sh.ChartObjects
With ch.Chart.Axes(xlCategory)
.MinimumScale = DateValue("01/01/2007")
.MaximumScale = True
End With
Next ch
End If
Next sh
End Sub

Daniel
"Emile63" news:
Bonjour Daniel,
Merci pour ta sollicitude.
-Est-ce que la variable (non spécifiée) de sh est bien Sheets?
(Dim sh As Sheets)
Car j'ai une erreur d'exécution: il ne trouve pas "sh.Type"

Merci pour cette précision,
cordialement,



Essaie :

Sub TEST1()
Dim ch As ChartObject

For Each sh In Sheets
If sh.Type = 3 Then
sh.Axes(xlCategory).MinimumScale = DateValue("01/01/2007")
Else
For Each ch In ActiveWorkbook.sh.ChartObjects
With ch.Chart.Axes(xlCategory)
.MinimumScale = DateValue("01/01/2007")
.MaximumScale = True
End With
Next ch
End If
Next sh
End Sub

Daniel




Emile63
Le #5026781
Bonjour Daniel,
Je te remercie pour le temps que tu me consacres. ;-)
Ta dernière proposition, (ne fonctionne pas) semble sur le bon chemin.
Toutefois, elle ne passe jamais par le:
" If sh.Type = 3 Then" Est-ce que "3" correspond bien au type: Graphique?
Car la macro passe bien toutes les feuilles, et corrige celles qui ont des
graphiques en objet mais pas les onglets qui sont des graphiques...
Apparement "If" ne les reconnait pas!
Merci de ton aide,
Cordialement.


Bonjour.
Au temps pour moi.
Je me suis trompé de valeur dans Chart.type. sh représente chacun des
onglets du classeur. Cependant il s'agit soit de "worksheet" soit de
graphiques (chart). On ne peut pas le qualifier dans les déclarations sous
peine de plantage.
Quand sh.type = 3, il s'agit d'une feuille graphique.
Voici le code modifié :

Sub TEST1()
Dim ch As ChartObject, sh
For Each sh In Sheets
If sh.Type = 3 Then
sh.Axes(xlCategory).MinimumScale = DateValue("01/01/2007")
Else
For Each ch In sh.ChartObjects
With ch.Chart.Axes(xlCategory)
.MinimumScale = DateValue("01/01/2007")
.MaximumScale = True
End With
Next ch
End If
Next sh
End Sub



Daniel.C
Le #5026531
Regarde le classeur à l'adresse :
http://cjoint.com/?ljrANr6IOH
La macro s'appelle Test1.
Daniel
"Emile63" news:
Bonjour Daniel,
Je te remercie pour le temps que tu me consacres. ;-)
Ta dernière proposition, (ne fonctionne pas) semble sur le bon chemin.
Toutefois, elle ne passe jamais par le:
" If sh.Type = 3 Then" Est-ce que "3" correspond bien au type:
Graphique?
Car la macro passe bien toutes les feuilles, et corrige celles qui ont des
graphiques en objet mais pas les onglets qui sont des graphiques...
Apparement "If" ne les reconnait pas!
Merci de ton aide,
Cordialement.


Bonjour.
Au temps pour moi.
Je me suis trompé de valeur dans Chart.type. sh représente chacun des
onglets du classeur. Cependant il s'agit soit de "worksheet" soit de
graphiques (chart). On ne peut pas le qualifier dans les déclarations
sous
peine de plantage.
Quand sh.type = 3, il s'agit d'une feuille graphique.
Voici le code modifié :

Sub TEST1()
Dim ch As ChartObject, sh
For Each sh In Sheets
If sh.Type = 3 Then
sh.Axes(xlCategory).MinimumScale = DateValue("01/01/2007")
Else
For Each ch In sh.ChartObjects
With ch.Chart.Axes(xlCategory)
.MinimumScale = DateValue("01/01/2007")
.MaximumScale = True
End With
Next ch
End If
Next sh
End Sub





Emile63
Le #5048191
On 9 nov, 17:27, "Daniel.C"
Regarde le classeur à l'adresse :http://cjoint.com/?ljrANr6IOH
La macro s'appelle Test1.
Daniel
"Emile63"


Bonjour Daniel,
Je te remercie pour le temps que tu me consacres. ;-)
Ta dernière proposition, (ne fonctionne pas) semble sur le bon chemin.
Toutefois, elle ne passe jamais par le:
" If sh.Type = 3 Then" Est-ce que "3" correspond bien au type:
Graphique?
Car la macro passe bien toutes les feuilles, et corrige celles qui ont d es
graphiques en objet mais pas les onglets qui sont des graphiques...
Apparement "If" ne les reconnait pas!
Merci de ton aide,
Cordialement.



Bonjour.
Au temps pour moi.
Je me suis trompé de valeur dans Chart.type. sh représente chacun d es
onglets du classeur. Cependant il s'agit soit de "worksheet" soit de
graphiques (chart). On ne peut pas le qualifier dans les déclarations
sous
peine de plantage.
Quand sh.type = 3, il s'agit d'une feuille graphique.
Voici le code modifié :

Sub TEST1()
Dim ch As ChartObject, sh
For Each sh In Sheets
If sh.Type = 3 Then
sh.Axes(xlCategory).MinimumScale = DateValue("01/01/2007")
Else
For Each ch In sh.ChartObjects
With ch.Chart.Axes(xlCategory)
.MinimumScale = DateValue("01/01/2007")
.MaximumScale = True
End With
Next ch
End If
Next sh
End Sub-






Bonjour Daniel,
Avec une petite msgbox, j'ai constaté que les feuilles "Graphiques"
avaient le code 4 (Et non 3), Alors que le code 3 sur ton exemple
fonctionnait parfaitement...
Je n'en connais pas la raison (Si tu peux m'éclairer, j'apprendrai
quelque chose), mais j'ai modifié ton code avec le "4", et tout est Ok
et fonctionne correctement,
Je te remercie pour ton aide.
Cordialement,



Publicité
Poster une réponse
Anonyme