Macros personalisés pour des graphiques dans differentes onglets

Joe_cooker

XLDnaute Nouveau
Bonjour à tous,
J'ai besoin de votre aide encore une fois,
voila mon problème:
J'ai 3 onglets (onglet 1 ,2 et 3) ou il y a plusieurs graphiques dans chaque onglet.
Dans l'onglet 1, il y a graphique A1,A2,A3,A4,.......A16
Dans l'onglet 2, il y a graphique B1,B2,B3,B4........B10
Dans l'onglet 2, il y a graphique C1,C2,C3,C4........C10

dans chacun de ces 3 onglets, il y a aussi une colonne avec des listes déroulante permettant à l'utilisateur de choisir les options qui veut appliquer à ces graphique (Échelles des l'axes, options pour les couleurs des courbes séries 1, 2 et 3 , marqueurs.....)
EX: Voir PJ

lorsque l'utilisateur fait ces choix, il clic sur un bouton exécutant ainsi un macro qui applique ces choix sur l'ensemble des graphiques de l'onglet.
Le macro que j'autilse est le suivant:

Public Sub Graph()

Dim chtobj As ChartObject
Dim n As Integer
n = ActiveSheet.ChartObjects.Count

For Each chtobj In ActiveSheet.ChartObjects

With chtobj.Chart.Axes(xlValue)
.....
.....
end with
With chtobj.Chart.Axes(xlCategory)
....
end with
With chtobj.Chart.SeriesCollection(1)
.....
end with
With chtobj.Chart.SeriesCollection(2)
.....
end with
With chtobj.Chart.SeriesCollection(3)
.....
end with

Next chtobj

End Sub

Tous ca fonctionne bien, mais ces même graphiques sont réparti dans le même classeur dans d'autre onglets (3,4,5 et 6) ce sont des onglets pour présentation.
Ex:
Dans l'onglet 4,on trouve les graphique A1,B1,C1 et A2,B2,C2....
Dans l'onglet 5, on trouve les graphique A4,B4,C4 et A5,B5,C5....
Dans l'onglet 6, on trouve les graphique A14,B8,C8 et A15,B7,C10....

J'aimerai que lorsque l'utilisateur fait ces choix dans les 3 premier onglets que ces choix s'applique aussi sur les graphiques se trouvant dans les autres onglets.

Est ce que vous avez des solutions ou pistes de solution
merci d'avance
 

Pièces jointes

  • Listes choix.docx
    34.3 KB · Affichages: 49

Lolote83

XLDnaute Barbatruc
Re : Macros personalisés pour des graphiques dans differentes onglets

Salut
Dans cet esprit.
Tu parcours tous les onglets et dans les onglets, tous les graphiques
Code:
Sub Graph()
    For Each xOng In ThisWorkbook.Sheets
        MsgBox xOng.Name
        For Each xGraph In Sheets(xOng.Name).ChartObjects
            MsgBox xGraph.Name
        Next
    Next
End Sub
Pour ton exemple, il faut que tous tes graphiques répondent au même besoin en ce qui concerne justement les paramètres que tu souhaites leur affecter
Cordialement
@+ Lolote83
 

Pièces jointes

  • TEST Feuille et graphique.xls
    49 KB · Affichages: 54

Joe_cooker

XLDnaute Nouveau
Re : Macros personalisés pour des graphiques dans differentes onglets

Merci Lolote ,
Mais c'est ca le problème ce ne sont pas touts les graphique qui répondent au même paramètres.
on fait, tous les graphiques issues de l'onglet 1 (graph A1,A2...An) répondent au même besoins de paramétrage,
tous les graphiques issues de l'onglet 2 (Graph B1,B2....Bn ) répondant au même besoin de paramétrage et de la même façon l'onglet 3 regroupe tous les graphiques (C1, C2...Cn) répondant au même besoin.
ces trois anglets permettent à l'utilisateur d'appliquer les options choisi pour chaque groupe de graphique se retrouvant dans la même onglet.
mais ces graphiques se retrouvent mélangés dans d'autres onglets, exemple :
dans l'onglet 4, on peut trouver à la fois le groupe de graphique A et le groupe de graphique B et C
et la même chose pour l'onglet 5 on peut trouver le groupe A, B et C
Moi je veux que lorsque l'utilisateur applique des paramètre pour le groupe A dans l'onglet 1 que cela se fait aussi dans les autres onglets et de la même façon lorsqu'il applique des paramètres dans l'onglet 2 sur le groupe B cela se fait aussi pour ce groupe dans les autres onglets.
J'espère que mes explications clarifie mon besoin.
Merci d'avance.
 

Lolote83

XLDnaute Barbatruc
Re : Macros personalisés pour des graphiques dans differentes onglets

Salut,
Je pense avoir trouvé une solution.
Pour cela, j'ai renommé tous tes graphiques (Ceux du groupe A, leur nom se termine par A, ceux du groupe B par B et C par C)
Ainsi, en parcourant tous les onglets et puis chaque graphique, si le nom ne correspond pas à celui voulu, on ne traite pas le graphique.
J'ai donc essayé de refaire le code concernant la légende (Voir module2) et tu as un bouton associé si tu changes la légende dans les feuilles Groupe A, Groupe B et C.
C'est la cellule A1 de chaque onglet (Groupe A,B et C) qui détermine donc sur quels graphiques ont doit travailler
A priori, ça marche.
J'ai aussi rajouté un onglet pour que tu puisses voir le nom que j'ai donné aux graphiques (pas nécessaire de le garder)
Voir ici
Cordialement
Lolote83
 

Pièces jointes

  • Copie de JoeCooker - Graphiques.xls
    692 KB · Affichages: 75
Dernière édition:

Lolote83

XLDnaute Barbatruc
Re : Macros personalisés pour des graphiques dans differentes onglets

Salut,
Justement, j'étais entrain de finaliser ton projet.
J'ai bossé tout l'après midi et ca se termine.
D'ici 1/4 d'heure, tu auras une nouvelle version.
Cordialement
Lolote83
 

Lolote83

XLDnaute Barbatruc
Re : Macros personalisés pour des graphiques dans differentes onglets

Salut,
Voilà donc la version2
En espérant que j'ai bien compris ta demande.
J'ai conservé tes macros (modules1) et j'ai créées les miennes (modules3)
Cordialement
Lolote83
 

Pièces jointes

  • Copie de JoeCooker - Graphiques -V2.xls
    735 KB · Affichages: 73

Joe_cooker

XLDnaute Nouveau
Re : Macros personalisés pour des graphiques dans differentes onglets

Bonjour Lolote,
J'ai testé avec tes macros mais ne s'appliquent pas a tous les graphiques
Je comprends pas pourquoi,
Je me demande, est ce qu'il y a pas moyen de procéder ainsi:

Dim chtobj As ChartObject
Dim n As Integer
n = ThisWorkbook.ChartObjects.Count
Dim X As Integer
For Each chtobj In ThisWorkbook.ChartObjects
ici on fait un boucle sur les graphique dont le nom est GraphMX avec X=1 to le nombre de graphe ayant un nom commencant par GraphM avec M est le nom de groupe determiné par l'onglet en context (ou on a lancer la macro)

Merci
 

Lolote83

XLDnaute Barbatruc
Re : Macros personalisés pour des graphiques dans differentes onglets

Salut,
Je ne comprends pas pourquoi non plus et difficile de dire sans voir !!!!
Quand je fais des tests, tous les graphiques du même groupe sont actualisés.
Donne moi une configuration testée chez toi qui ne fonctionne pas et je regarderais.
Par contre, je ne vois pas l'utilité de faire :
ici on fait un boucle sur les graphique dont le nom est GraphMX avec X=1 to le nombre de graphe ayant un nom commencant par GraphM avec M est le nom de groupe déterminé par l'onglet en context (ou on a lancer la macro)
car de mon coté, j'avais déjà renommé tous les graphiques par groupe (voir feuille Liste Graph)
La macro parcoure toutes les feuilles une à une puis dans chaque feuille, tous les graphiques et si le graphique appartient au groupe A, seuls ces graphiques seront modifiés. Groupe B, seuls les B seront modifiés, Idem C.
As-tu rajouté des nouveaux graphiques ???? Si oui, il faut les renommer dans l'esprit donné en feuille (Liste Graph), c'est à dire les graphiques du groupe A doivent se terminer par A, B par B et C par C.
A bientôt
Lolote83
 

Joe_cooker

XLDnaute Nouveau
Re : Macros personalisés pour des graphiques dans differentes onglets

Merci Lolote,
J'ai ressayé et j'ai trouvé qu'il y a un bugs pour le macro pour la légende
peut etre c'est juste une question du nom de la référence:
ca bug ici :
If .HasLegend Then .Legend.Position = xPosition
Je vais voir pourquoi et je te reviens
Je pense que c'est ca qui fait en sort que ne sont pas tt les grah qui sont MAj
Je vais vérifier tt ca avant

Merci BCP encore une fois
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 912
Membres
101 837
dernier inscrit
Ugo