Graphique Excel (mise en page variable)

Résolu/Fermé
GuillaumeCha Messages postés 42 Date d'inscription vendredi 19 août 2016 Statut Membre Dernière intervention 25 mars 2019 - 18 janv. 2017 à 10:56
GuillaumeCha Messages postés 42 Date d'inscription vendredi 19 août 2016 Statut Membre Dernière intervention 25 mars 2019 - 25 janv. 2017 à 03:43
Bonjour a tous !

J'ai deux questions de mise en page mais qui varie selon des parametres.

Voici mon fichier:
Une premiere page avec ma data et les onglets suivant sont des calculs et des graphiques.
Mon but est de donner ce fichier excel a mon boss et qu'il n'a plus qu'a copier coller la data dans la premiere page et tout se calcul dans les autres pages (calcul et graphique).
Jusqu'a la rien de tres sorcier.
Cependant, lorsque mon boss va copier sa data dans la premiere page, il y a un nombre different de ligne.
Ce n'est pas un probleme pour mes calculs avec une rapide function si tout tourne bien.

1) Mais alors pour la legend du graphique... Je suis bien embete !
Le graphique marche tres bien. Il n'a pas de donne pour certaine ligne. Donc il ne trace rien.
Cependant dans ma legend je me retrouve avec des traits avec la legend et des traits... seul. Sans rien ! Ce qui est normal vu que la ligne est vide.

Voila j'aimerai que lorsque la ligne est vide, il ny a pas de legend (de simple trait) dans ma legend.

2) Le second probleme est que j'ai une donnee qui s'affiche sur toute mes pages de calcul. J'ai cree une function pour que cette donne s'affiche en dessous de la derniere ligne.
Je souhaite que le trait de cette donnee soit en + gras sur mon graphique.
Le probleme cest que vu que mon nombre de ligne varie, ma donnee fixe varie aussi dans les lignes. Avez vous une idee pour que ma tracage graphique de cette donnee soit lie au nom de la donnee ?

C'est un peu complique a expliquer c'est pourquoi je vous laisse voir en piece jointe




A voir également:

8 réponses

tontong Messages postés 2556 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 5 septembre 2024 1 057
18 janv. 2017 à 12:00
Bonjour,
Il y a peut-être une solution soit en nommant les plages soit avec une macro (hors de ma compétence mais il y a d'autres bénévoles sur ce forum).
Les explications même détaillées ne suffisent pas, il faudrait joindre un fichier en utilisant Cjoint.com.
En ajoutant une feuille "les données du boss" on verrait mieux ce qui change.
Les fichiers enregistrés en .xls nous gagnent du temps.
0
GuillaumeCha Messages postés 42 Date d'inscription vendredi 19 août 2016 Statut Membre Dernière intervention 25 mars 2019 4
19 janv. 2017 à 08:46
Bonjour Tontong,

Merci pour ta reponse.

Tu as raison pour l'excel, voici le lien:
https://www.cjoint.com/c/GAthQW2t61b

une petite explication:
les deux feuillets "exemple 1" & "exemple 2": c'est la data que mon boss va extraire de notre logiciel de gestion par lui meme.

In autre onglet s'appel "where my boss will copy data" c'est la que mon bos va copier coller in des deux exemples.
Les autres pages sont variables selon ll'exemple sauf la page "Dow Jones" qui est juste un file conducteur. Une comparaison.

Je vous laisse donc copier une fois l'exemple 1 et une autre fois l'exemple 2. vous aller voir les problemes dont je vous ai parle sur les graphiques des autres pages

Merci d'avance !
0
ccm81 Messages postés 10878 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 11 septembre 2024 2 415
19 janv. 2017 à 10:50
Bonjour

Comme dit tontong plus haut (salut à toi au passage) une macro pour tenter de répondre à la question 1 (voir Feuille From 2012)
http://www.cjoint.com/c/GAtjU3TXGig
Pour la question 2, j'ai du mal à comprendre, si tu adaptes tes formules à excel 2003, je pourrai essayer, sinon quelqu'un d'autre prendra certainement le relai

Cdlmnt
0
GuillaumeCha Messages postés 42 Date d'inscription vendredi 19 août 2016 Statut Membre Dernière intervention 25 mars 2019 4
19 janv. 2017 à 11:10
Bonjour ccm81,

Merci beaucoup pour ta reponse et le temps que tu y a passe !

Alors j'ai utilise ta macro qui marche tres bien dans un sens mais pas dans l'autre.
Je m'explique: Quand tu rentres l'exemple 1 (la ou il y a le plus de ligne) puis tu rentres l'exemple 2 cela supprime les legende comme c'est demande dans ma requite ! Merci beaucoup.

Cependant apres avoir rentre l'exemple 2, si tu rentres a nouveau l'exemple 1 (ou un 3eme exemple) et que tu fais tourney la macro cela ne prend en compte que les lignes qu'il a garde.

En faite ta macro supprime les lignes du graphe ce qui fait qu'il ne les traite plus la fois d'apres... Or il faut qu'il les traite toujours.

En tout cas merci beaucoup c'est la bonne voie !

Pour l'exemple2 malheuresement je vois pas comment faire passer mon doc a 2003....

Bonne journee,

G.
0
ccm81 Messages postés 10878 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 11 septembre 2024 2 415
19 janv. 2017 à 12:45
Remplaces le contenu du Module 1 par ceci

Option Explicit

Const lideb = 2
Const codeb = 3
Const cogr1 = "A"
Const cogr2 = "C"
        
Public Sub MajGraph()
Dim gr As Object, nbser As Long, nuser As Long, X, Y
Dim lifin As Long, source As String, cofin As Long, coder As String, annees As String
With ActiveSheet
  lifin = lideb
  While .Range("A" & lifin).Value <> "Total %"
    lifin = lifin + 1
  Wend
  cofin = codeb
  While .Cells(lideb, cofin + 1) <> ""
    cofin = cofin + 1
  Wend
  coder = Split(.Cells(lideb, cofin).Address, "$")(1)
End With
annees = cogr2 & lideb & ":" & coder & lideb
source = cogr1 & lideb + 1 & ":" & cogr1 & lifin & "," & cogr2 & lideb + 1 & ":" & coder & lifin
Set gr = ActiveSheet.ChartObjects(1).Chart
gr.SetSourceData source:=ActiveSheet.Range(source), PlotBy:=xlRows
gr.SeriesCollection(1).XValues = ActiveSheet.Range(annees)
With gr
  nbser = .SeriesCollection.Count
  For nuser = nbser To 1 Step -1
    Y = .SeriesCollection(nuser).Values
    If Y(1) = 0 Then .SeriesCollection(nuser).Delete
  Next nuser
  nbser = gr.SeriesCollection.Count
  .SeriesCollection(nbser).Border.ColorIndex = 3
  .SeriesCollection(nbser).Border.Weight = xlThick
  .SeriesCollection(nbser).Border.LineStyle = xlContinuous
End With
End Sub

Cdlmnt
0
GuillaumeCha Messages postés 42 Date d'inscription vendredi 19 août 2016 Statut Membre Dernière intervention 25 mars 2019 4
20 janv. 2017 à 03:09
Bonjour ccm81,

Merci beaucoup ton aide, c'est vraiment gentils de ta part.

alors j'ai lance la macro et elle me dit quelle est buge.
Elle me specifit cette ligne:
While .Range("A" & lifin).Value <> "Total %"
-> ligne 14.
Et c'est peut etre pas le seul bug car je ne vois pas les suivant sachant que je n'arrive pas a regler le problem.
En effet, je suis debutant en VBA, et la je t avoue etre perdu, alors le debugger...

Tu peux y jeter in oeil ?
Merci beaucoup et bonne journee !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10878 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 11 septembre 2024 2 415
20 janv. 2017 à 17:32
Chez moi, pas d'erreur
http://www.cjoint.com/c/GAuqEEI2Zig
Essaies sur les deux feuilles From 2013 et From 2012

Cdlmnt
0
GuillaumeCha Messages postés 42 Date d'inscription vendredi 19 août 2016 Statut Membre Dernière intervention 25 mars 2019 4
23 janv. 2017 à 03:46
Bonjour CCM81

J'ai trouve le problem et pourquoi cela buggais pour moi, j'ai fait ma petite modification.
J'ai fait des test et tout marche tres bien. Je te remercie.

Cependant je suis face a deux niuveaux problemes:

1) le code marche parfaitment mais.... pas pour toute les pages ! C'est tres surpprenant mais une ou deux pages il bug sur cette ligne:
gr.SeriesCollection(1).XValues = ActiveSheet.Range(annees)
(ligne 28) alors que cale marche parfaitement avec les autres pages...

2) Je n'ai plus acces a mon graphique. Je m'explique. Je peux faire du clique droit dessus mais mon clique gauche ne selectionne plus les parties differentes du graphique. Du coup je ne peux plus decaler ma legende, changer la couleur d'une ligne particuliere...
J'ai l'impression qu'il lance la macro a chaque fois que je clique sur le graphique et donc ne selectionne pas la partie voulu.


Je te remercie d'avance pour ton aide,

G.
0
ccm81 Messages postés 10878 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 11 septembre 2024 2 415
23 janv. 2017 à 11:46
1. l bug sur cette ligne:
gr.SeriesCollection(1).XValues = ActiveSheet.Range(annees)

Et que vaut la chaine annees à ce moment là ?
2. Je n'ai plus acces a mon graphique.
Chez moi je peux deplacer la légende et modifier la couleur d'une ligne
J'ai l'impression qu'il lance la macro a chaque fois que je clique sur le graphique
Non, la macro est déclenchée par Ctrl+m

RQ. Dans les feuilles 2014 et 2015 tu as des colonnes de valeurs sans que l'entête année soit renseignée

Cdlmnt
0
GuillaumeCha Messages postés 42 Date d'inscription vendredi 19 août 2016 Statut Membre Dernière intervention 25 mars 2019 4
24 janv. 2017 à 02:59
Bonjour CCM81,

Merci pour ta patience.
1. selon moi la chaine ainee est C2:Cx Mais je suis pas sur de tout capter au code.
2. Voici le lien avec des petits arrangements que j'ai pu faire et les pages qui ne marche pas.
https://www.cjoint.com/c/GAyb3IIhOub

Je n'ai pas besoin de presser ctrl+m pour faire tourner la macro, seulement cliquer sur le graphique. C'est pourquoi je pense que cela lance la macro a chaque fois etd onc que je suis bloque pour changer certaine chose sur mon graphique. J'esseye de mettre pause sur la macro mais cela ne marche pas....

RQ: En lisant ton code c'est se que je me suis dit mais j'ai eu beau chercher je n'ai pas trouver de difference avec les autres sheet ou la macro marche tres bien. Ni une entete annee... Je suis in peu dubitatif.

Je te remercie d'avance pour ton aide,

G.
0
ccm81 Messages postés 10878 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 11 septembre 2024 2 415
24 janv. 2017 à 14:37
Ton fichier, bien qu'enregistré en .xls contient des formules non reconnues par excel 2003. Pas grave, je te le renvoie quand même.
http://www.cjoint.com/c/GAynI6rrZgg
Je n'ai pas besoin de presser ctrl+m pour faire tourner la macro, seulement cliquer sur le graphique.
Eh oui, tu as (apparemment) affecté la macro à chacun de ces graphiques
Donc clic-droit sur le graphique (dans chaque feuille)/Affecter une macro et tu supprimes ce qu'il y a dans la fenêtre "Nom de la macro"
Puis Outils/Macro/macros/ choisir MajGraph/Option et definir ton raccourci clavier (Ctrl+m par exemple)
Ensuite tu exécutes la macro (Ctrl+m) dans chacune des feuilles, tout devrait rentrer dans l'ordre (chez moi c'est OK)
RQ. Tu as une feuille (From 2013), où tu n'as pas attribué de données à ton graphique

Cdlmnt
0
GuillaumeCha Messages postés 42 Date d'inscription vendredi 19 août 2016 Statut Membre Dernière intervention 25 mars 2019 4
25 janv. 2017 à 03:43
Absolument parfait ! Merci beaucoup !

Je te souhaite une agreeable journee, la mienne commence parfaitement !

Guillaume
0