Graphique

Fermé
Mathilde - 7 août 2015 à 11:04
 Mathilde - 19 août 2015 à 11:20
Bonjour,

j'ai besoin de votre aide afin de réaliser un graphique. Alors voilà j'ai une plage de données sous cette forme :

A | B

Nombre de fournisseur | Fournisseur1
Nom Fournisseur | SFR
N°Contrat | C402
Valeur Cible | 200000
Cmdé Réel | 3000
Réceptionné | 400
Reste à réceptionnr | 500
Reste à commander | 6000

Je précise que ce tableau se créer via une macro. Toutes ces données, vont être récupérée sur une autre plage de données sur un autre onglet. A part ma première colonne, rien n'est fixe et rien n'est jamais pareil. Les données de ma deuxième colonne peuvent changer. Ensuite je peux avoir 2 colonnes comme 11 colonnes.
Ce qui ne change pas c'est donc ma colonne A et le nombre de lignes.

Je souhaite réaliser un graphique qui prend en axe des abscisses Nom fournisseur et en axe des ordonnées on aurait les % (type de graphique : ctiveChart.ChartType = xlColumnStacked100A). Et les données à afficher seraient Réceptionné, reste à réceptionner et reste à commander.

J'ai beau chercher partout sur internet je ne trouve rien.

Merci pour votre aide.

5 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
9 août 2015 à 08:09
Bonjour
Pas trop compris réellement quel était votre problème.
Voici une proposition, Si vous rajoutez ou diminuez le nombre de colonnes, cliquez sur le bouton pour ajuster le graphique.
https://www.cjoint.com/c/EHjgjqrMAqw
cdlt
0
Bonjour,
merci d'avoir pris le temps de me répondre. C'est exactement ce que je voulais. La même mise en page, la même forme et le même principe. Néanmoins, mon tableau se créer via une macro. A chaque mise à jour, mon tableau se supprime et se recréé en fonction des nouvelles données. Je vais joindre un fichier pour que ce soit plus compréhensible. j'ai un onglet inputs011, inputs012, blocFournisseur. Mon onglet inputs011 va rechercher des fichiers externes et va les copier à la suite, de même pour l'onglet inputs012. Ensuite mon bloc founisseur va se créer. J'ai fait une macro qui va chercher toutes les données dans les onglets Inputs. Par exemple, Nom Fournisseur, N]Contrat et valeur cible, ma macro va chercher ces données dans l'onglet inputs012, pour le reste elle va le chercher dans l'onglet inputs011. Donc en gros, je n'aurai jamais les même données, ni le même nombre de fournisseurs. Parce que mes fichiers externes changent. Je peux très bien avoir un jour juste un fournisseur qui s'appelle sfr. Et un autre jour avoir 6 fournisseurs (idom, réunion orange, sfr, orange, bouygues). J'ai fait un test avec votre fichier voila ce que ca donne:

http://www.cjoint.com/c/EHkhTIqgwy1

Merci d'avance.
0
Et c'est sous cette forme là que je recherche : http://www.cjoint.com/c/EHkh5sWYRg1
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
10 août 2015 à 11:04
Bonjour
Remplacez la macro "Graphique" par celle-ci
Sub Graphique()
    Sheets("BlocFournisseur").Activate
    Application.ScreenUpdating = False
    Dercol = [IV1].End(xlToLeft).Column
    PlageGraphique = "A1:" & Chr(Dercol + 64) & "2,A6:" & Chr(Dercol + 64) & "8"
    ActiveSheet.ChartObjects("Graphique 1").Activate
    ActiveChart.SetSourceData Source:=Range(PlageGraphique), PlotBy:=xlRows
    ActiveChart.ChartType = xlColumnStacked100
End Sub

Cdlt
0
Merci infiniment pour votre aide!!!
Bonne journée.
0
Bonjour Frenchie83,

je vous sollicite encore en espèrant que vous allez pouvoir m'aider. C'est encore au sujet de graphique. Ce que vous m'avez donné la dernière fois c'était exactement ça que je cherchais. J'ai un autre graphique à réaliser aussi automatiquement mais cette fois ci ca serait un historique. Je vous joins le fichier :

http://www.cjoint.com/c/EHmlODo2D6d

Encore une fois, mes deux tableaux dans le fichier se font automatiquement via une macro. Cette macro va rechercher la date de début et la date de fin et va afficher tous les mois entre ces deux dates. Ensuite, une autre macro va rechercher toutes les informations dont j'ai besoin (Réceptionné, commandé, reste à réceptionner). Il n'y a que le plafont global qui sera rentré à la main. Donc encore une fois selon les Dates, et les valeurs tout mon tableau peut changer ( de la première colonne à la dernière) et aussi le nombre de colonnes n'est pas fixe.
Dans le fichier, vous pouvez voir le type de graphique que je souhaite afficher. Il se basera sur mon deuxième tableau. Je voudrai donc que l'échelle soit les mois, que le réceptionné et le commandé soient en Aires et que le plafont global soit en courbe. J'ai essayé d'adapter le code que vous m'aviez donné :

Sub Graphique()
Sheets("BlocHistorique").Activate
Application.ScreenUpdating = False
Dercol = [IV1].End(xlToLeft).Column
PlageGraphique1 = "A10:" & Chr(Dercol + 64) & "2,A11:" & Chr(Dercol + 64) & "5"
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.SetSourceData Source:=Range(PlageGraphique1), PlotBy:=xlRows
ActiveChart.ChartType = xlArea
End Sub

Mais il me marque erreur : La méthode 'Range' de l'objet '_Global' a échoué.
Je ne vois pas ce que ca veut dire....

Si vous pouviez m'aider... Encore merci d'avance.

Bonne journée
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
12 août 2015 à 16:27
Bonjour
Voici une proposition
Sub Graphique()
    Sheets("BlocHistorique").Activate
    Application.ScreenUpdating = False
    Dercol = [IV1].End(xlToLeft).Column
    Colonne = Left(Columns(Dercol).Address(ReferenceStyle:=xlA1), InStr(1, Columns(Dercol).Address(ReferenceStyle:=xlA1), Chr(58), 1) - 1)
    'PlageGraphique2 = "A10:" & Colonne & "11,A13:" & Colonne & "14"
    PlageGraphique2 = "A10:" & Colonne & "12,A14:" & Colonne & "14"
    ActiveSheet.ChartObjects("Graphique 2").Activate
    ActiveChart.SetSourceData Source:=Range(PlageGraphique2)
    ActiveChart.SeriesCollection(1).Select
    ActiveChart.ChartStyle = 2
    ActiveChart.SeriesCollection(2).Select
    ActiveChart.ChartStyle = 2
    ActiveChart.SeriesCollection(3).ChartType = xlLine
End Sub

Vous est-il possible de permuter les 2 lignes "commandé réel" et "réceptionné"? si oui, conservez la macro ci-dessus telle quelle, sinon, il faut que je fasse encore des petites modifications, mais là, je n'ai pas le temps, je dois partir, je regarderai plus tard. A moins que cela vous convienne.
Cdlt
0
Bonjour,

permuter les deux lignes dans mon tableau? Oui c'est possible. Donc dans mon tableau je mets:

Intervalle début-fin
Cmdé Réel
Reste à Réceptionner
Réceptionné
Plafond global

C'est bien ça?
Pour le graphique je souhaite juste faire apparaitre le cmdé réel et le réceptionné en Aire et le plafond gloabl en ligne. Par contre l'échelle des ordonnées, je souhaiterai l'avoir en montant et non en %. J'ai mis votre macro dans Module 1 dans le fichier qui suit , voilà ce que ça me donne :

http://www.cjoint.com/c/EHnhhAT6fDd

J'ai donc le graphique en pourcentage, et il me mets reste à réceptionner et réceptionné. Et encore ils en s'affichent pas sur mon graphique. J'ai tenté de faire des petites modifs mais ça ne marche pas. Dites moi quels changements je dois effectuer que ce soit dans la macro ou dans mon tableau.

Encore merci pour votre aide, bonne journée!
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
13 août 2015 à 09:18
Bonjour
voici l'ordre de lignes du tableau pour que cela fonctionne bien
Intervalle début-fin
Cmdé Réel
Réceptionné
Reste à Réceptionner
Plafond global
Essayez et dites-moi si c'est bon
Cdlt
0
Au lieu de mettre la première ligne "PlageGraphique2" en commentaire, j'ai mis la deuxième et sur mon graphique maintenant j'ai Cmdé Réel et Réceptionné comme je le souhaité. Mais je ne vois pas comment enlever les pourcentages et mettre cmdé réel et réceptionné en Aire.
J'essaie aussi de comprende votre code. Je n'arrive pas à comprendre la ligne 5 : "Colonne = ..."
et aussi pourquoi mettre " ActiveChart.ChartStyle = 2 " ? A quoi correspond le "2"?
0
Quand je mets dans l'rdre que vous m'avez dit il me mets : Erreur : Paramètre non valide; Et cela pour la ligne : ActiveChart.SeriesCollection(2).Select
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
13 août 2015 à 09:35
Au lieu de mettre la première ligne "PlageGraphique2" en commentaire, j'ai mis la deuxième j'avais mis en remarque la première ligne, parce que tel que ce présentait le tableau initial, le commandé réel cachait le receptionné (vu qu'il est plus grand ou égal au réceptionné). En inversant les lignes le problème ne se posait plus.

ActiveChart.ChartStyle = 2 " ? A quoi correspond le "2"?, Cela corresopndant à un des styles de graphique en aires j'ai pris le 2ème sur 48 possibles. Faites un double-clic sur le graphique pour voir les 48 styles et choisissez celui qui vous convient. Le style ayant été définit, vous pouvez mettre en remarque ces 2 lignes.

Voici votre fichier https://www.cjoint.com/c/EHnhHSYXgzc
Cdlt
0
Je viens d'ouvrir votre fichier. J'ai executer la macro et voila ce que ca me donne :

http://www.cjoint.com/c/EHnidxnqzad

Ca ne m'affiche pas les Aire, c'est bizarre.
Ensuite avant que vous me renvoyer ce fichier, j'avais changer les lignes de mon tableaux et j'avais executer votre macro et voila ce que ca me donne (je n'ai rien touché à la macro) :

http://www.cjoint.com/c/EHnifdmAxvd

Ca me donne des résultats complétement différents. Je ne comprends vraiment pas, surtout que la macro ne change pas....
0
En faite ça met correctement à jour le graphique. Mais plus haut dans le module 1 j'ai fais une macro dans le cas où le graphique n'existe pas. Si je supprime le graphique, et que je refais votre macro, j'espérais que cela me redonne le m^me graphiqe. Mais apparemment non. C'est possible de retrouver le même graphique quand ce dernier n'existe plus et qu'on la supprimer? Sinon tant pis, je ferais en sorte que le graphique ne soit pas supprimer.
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
13 août 2015 à 10:33
Si le graphique n'existe pas, vous en créez un autre, dans ce cas, il faut créer une variable qui enregistrera le N° du nouveau graphique, et remplacer le nom du "graphique2" par cette variable.
De plus, Quel est l'intérêt de supprimer le graphique pour en recréer un autre par la suite?
Si vous supprimez le graphique et que vous en recréez un autre, il n'aura plus le même nom, donc ça va planter.
Si vous tenez vraiment à le supprimer et à en recréer un autre, vous pouvez faire une boucle qui incrémente le numéro de graphique jusqu'à ce qu'il trouve le bon, et tant que le numéro n'est pas le bon, utiliser la gestion d'erreur pour ignorer les erreurs provoquées par les graphiques non trouvés et continuer la recherche. Mais bon, c'est pas terrible comme solution.
Plutôt que de supprimer le graphique, pourquoi ne pas masquer, et le rendre visible lorsque vous en avez besoin?
0
En faite, je suis en stage dans une entreprise et je dois créer un gros reporting et par la suite, ce sont mes collégues qui vont utiliser ce reporting. Les données ne seront pas les mêmes et on ne sait jamais s'ils font une mauvaise manip' et supprime le graphique, je ne veux pas qu'ils se retrouvent bloqué à cause de ça. Et ils n'ont aucune base en excel. Donc je dois vraiment tout automatiser et faire en sorte que tout se mette en place même quand ils feront une mauvaise manip'.


En tout cas, c'est bon je viens de trouver. Erreur bête de ma part, je n'avais pas remodifier dans ma macro création graphique. Encore un grand merci pour avoir pris de votre temps pour me répondre et m'aider surtout que je ne trouvais pas grand chose sur internet concernant les graphiques! Je vous souhaite une bonne journée!
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
13 août 2015 à 10:46
Bonne journée également et bon stage
Cdlt
0

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

Posez votre question
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
19 août 2015 à 11:11
Bonjour Mathilde
J'ai mis les lignes modifiées entre 2 lignes d'astérisques *********
https://www.cjoint.com/c/EHtjktwWOYc
Dites-moi si ça fonctionne bien
cdlt
0
Wahou un grand merci, ça marche très bien. C'est donc la ligne dercol = ... qui me posait problème. Merci beaucoup pour votre aide encore et pour la rapidité à me répondre!

Bonne journée
0