Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Traiter plusieurs graphiques en même temps (VBA)

9 réponses
Avatar
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,

9 réponses

Avatar
Daniel.C
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" a écrit dans le message de
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,



Avatar
Daniel.C
Bien sûr, la ligne commençant par Var = est superflue.
Daniel
"Daniel.C" a écrit dans le message de news:
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" a écrit dans le message de
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,







Avatar
Emile63
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,



Avatar
Daniel.C
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" a écrit dans le message de
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,





Avatar
Emile63
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


Avatar
Daniel.C
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" a écrit dans le message de
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




Avatar
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 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



Avatar
Daniel.C
Regarde le classeur à l'adresse :
http://cjoint.com/?ljrANr6IOH
La macro s'appelle Test1.
Daniel
"Emile63" a écrit dans le message de
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





Avatar
Emile63
On 9 nov, 17:27, "Daniel.C" wrote:
Regarde le classeur à l'adresse :http://cjoint.com/?ljrANr6IOH
La macro s'appelle Test1.
Daniel
"Emile63" a écrit dans le message de news: AE6958EF-159D-47D1-A9D9-E4E4E9139__BEGIN_MASK_n#9g02mG7!__...__END_MAS K_i?a63jfAD$



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,