Graphique depuis un tableau particulier

Alexbab

XLDnaute Nouveau
Bonjour,

j'essaye de faire dessiner un graphique en points et courbes à partir d'un tableau de données un peu particulier :

- Le tableau contient certaines cellules fusionnées
- Une partie du tableau ne contient pas de valeur (zéro ou bien #N/A) car il est censé être rempli au fur et à mesure

Voir en pièce jointe un exemple de ce que j'ai


La première colonne contient des années (cellules fusionnées de 12 cellules).
Le deuxième colonne contient les mois de Janvier à Décembre, pour chaque année.
La dernière contient des valeurs pour chaque mois. Dans cette colonne les valeurs s'arrêtent à un endroit et seront renseignées plus tard !



-> J'aimerais faire un graphique avec pour ordonnée les valeurs (ça c'est bon j'y arrive) et surtout en abscisse les années, découpées en mois.

c'est à dire :

------------------------------------------------------------------------>
j f m a m j j o s o n d j f m a m j j o s o n d j f m a m j j o s o n d
2008 2009 2010

Une sorte de double abscisse en somme, mais je ne sais pas si c'est possible...


-> Je voudrais que mon graphique ne m'affiche que les valeurs qui existent pour l'instant ! Et donc qu'il s'agrandisse au fil des ajouts de valeur (pour l'instant en abscisse le graphique ne s'arrête pas avec l'apparition des #N/A et continue avec aucunes valeurs)


Pouvez-vous m'aider ? Je suis à votre disposition pour toute information complémentaire si je n'ai pas été suffisemment clair.

Merci d'avance pour le coup de pouce !


ps : je suis quasi novice en Excel
 

Pièces jointes

  • Exemple.xls
    24.5 KB · Affichages: 70
  • Exemple.xls
    24.5 KB · Affichages: 70
  • Exemple.xls
    24.5 KB · Affichages: 72
Dernière édition:

Alexbab

XLDnaute Nouveau
Re : Graphique depuis un tableau particulier

Ok, malheureusement la mise en page que j'avais faite lors de la rédaction était bien explicite, mais là tout mes exemples sont ratatinés sur la gauche
... :(

En espérant que vous avez quand même compris !
 

CB60

XLDnaute Barbatruc
Re : Graphique depuis un tableau particulier

bonjour
peut etre de cette façon??
avec deux zones nommées et la fonction decaler
 

Pièces jointes

  • GExempl.zip
    6.4 KB · Affichages: 62
  • GExempl.zip
    6.4 KB · Affichages: 66
  • GExempl.zip
    6.4 KB · Affichages: 63

Alexbab

XLDnaute Nouveau
Re : Graphique depuis un tableau particulier

Oui génial c'est exactement ce dont j'ai besoin ! :)

Super je vais essayer d'adapter ça à ma feuille complète.



Sinon autre question (bien plus complexe, je ne sais pas si c'est possible) : dans le fichier joint trouvé sur le site, l'exemple 4 est génial et parfait pour ce que je cherche à faire...cependant ça à l'air bien plus compliqué à réaliser. Est-il possible de combiner les deux ou bien est-ce infaisable ? C'est surtout la partie qui fait s'arrêter le graphique quand il n'y a plus de valeurs qui est intéressante, même si l'aspect du choix des bornes et des données à afficher m'intéresse aussi beaucoup (car j'ai 4 onglets de valeurs à traiter)


Là ça dépasse largement mes compétences...

Je vais creuser la question, mais je vais d'abord appliquer ta solution CB60 :)

génial et merci encore !


EDIT : le fichier ne peut pas être joint car il est trop volumineux... Il s'agit du fichier "Graphique évolutif sans macro" disponible ICI
 
Dernière édition:

CB60

XLDnaute Barbatruc
Re : Graphique depuis un tableau particulier

re
Je ne pense pas que ce soit infaisable, il suffit de bien expliquer ce que tu souhaite et rester sur un fichier type, car l'exemple de mromain n'est pas similaire à tes données.
Par rapport à ton fichier initial, mets toutes les infos que tu dois utiliser et ce que tu souhaite representais sur le graph, on verra comment faire ensuite
 

Alexbab

XLDnaute Nouveau
Re : Graphique depuis un tableau particulier

D'accord, je vais essayer de faire un fichier d'exemple afin que l'on voit ce qui est faisable.

Il s'agit juste d'une fonctionnalité "bonus", mais elle serait très pratique dans l'outil...


Par contre je n'aurais pas le temps de voir ça cette fin de semaine, j'essayerais de poster ça lundi afin d'en discuter !


Encore merci, et bon weekend.
 

CB60

XLDnaute Barbatruc
Re : Graphique depuis un tableau particulier

bonjour
En fonction de ton premier fichier, un exemple de ce qui peut etre réalisé
En H3 le choix de l'année de départ
En I3 le choix de l'année de fin
En J3 le choix de la colonne à afficher
Une fois qu les trois cellules sont renseignés, le graphique se met a jour en fonction de celle ci ( sans macro)
 

Pièces jointes

  • GExempl.zip
    12.7 KB · Affichages: 44
  • GExempl.zip
    12.7 KB · Affichages: 46
  • GExempl.zip
    12.7 KB · Affichages: 43

Alexbab

XLDnaute Nouveau
Re : Graphique depuis un tableau particulier

Bonjour à vous, me revoila pour mettre à l'épreuve vos compétences en VBA ! :)


Alors depuis vendredi la demande à un peu changé concernant l'outil que je doit créer (merci mon chef)...


J'ai terminé tout ce que je devais faire, sauf le dernière fonctionnalité, pour laquelle je suis proche du but (enfin je pense !)



Voilà ce que j'ai : un graphique qui affiche plusieures courbes (par exemple la courbe de l'année 2005, celle de 2006, celle de 2007, etc...) afin de pouvoir les comparer entre elles.
Cependant le nombre de courbes totales que je possède est de 8 et celà rend le graphique un peu brouillon. De plus on a pas forcément le besoin d'avoir toutes les courbes à la fois...

voici donc ce que je dois faire : mettre à côté du graphique 8 cases à cocher, une par courbe, et faire en sorte que les courbes s'affichent ou non selon les cases qui sont cochées... Et ceci dynamiquement (pouvoir modifier en live et voire les changements s'opérer sur le graphique)



J'ai donc bien cherché sur le net et je suis tombé sur un cas similaire avec une explication détaillée que j'ai mis en oeuvre :

"A. créer une case à cocher caseEcoute avec pour caption Ecoute
B. dans le code de la feuille Neufbox, ajouter la procédure évenementielle caseEcoute() suivante :

Private Sub caseEcoute_Click()

' click de la case a cocher Ecoute

gererSerie nomSerie:="Ecoute", _
serie:="=Neufbox!R13C3:R26C3", _
etatCase:=caseEcoute.Value, _
couleur:=54
End Sub

C . en dessous, ajouter le Sub gereSerie() qui gère la création / suppression de la série Ecoute (il n'est pas possible de masquer/visualiser une série. On ne peut que la supprimer et la recréer) :

Private Sub gererSerie(nomSerie As String, serie As String, etatCase As Boolean, _
couleur As Integer)

' ajout / suppression d'une serie

Application.ScreenUpdating = False
If etatCase = True Then
ajouterSerie nomSerie, serie, couleur
Else
SupprimerSerie nomSerie
End If
Application.ScreenUpdating = True
ActiveSheet.Select
End Sub

D. en dessous, ajouter les deux Sub ajouterSerie et supprimerSerie, qui se passent de commentaires :

Private Sub ajouterSerie(nomSerie As String, donnees As String, couleur As Integer)

Dim numeroSerie As Integer

' ajout d'une serie de donnees (création d'une courbe)

SupprimerSerie nomSerie
ActiveSheet.ChartObjects(1).Activate
ActiveChart.SeriesCollection.NewSeries
numeroSerie = ActiveChart.SeriesCollection.Count
With ActiveChart.SeriesCollection(numeroSerie)
.Values = donnees
.Name = nomSerie
.ChartType = xlLineMarkers
.Border.ColorIndex = couleur
.Border.Weight = xlThick
.Border.LineStyle = xlContinuous
.MarkerBackgroundColorIndex = 13
.MarkerForegroundColorIndex = 13
.MarkerStyle = xlCircle
.Shadow = False
End With
End Sub

Private Sub SupprimerSerie(nomSerie As String)

' suppression d'une serie de donnees

Dim s As Series
ActiveSheet.ChartObjects(1).Activate
For Each s In ActiveChart.SeriesCollection
If s.Name = nomSerie Then
s.Select
Selection.Delete
Exit For
End If
Next
End Sub
"


Evidemment j'ai adapté avec les noms de chez moi...
J'ai remplacé "Ecoute" par le nom de ma série test : "2005", et bien sûr le nom des checkBox et des feuilles en conséquence.



Quelques questions (car ça ne fonctionne pas vraiment, mais je suis pas loin je le sens) :

- Cette méthode est-elle bonne ? Perso ça me semble très bien pensé et je ne vois pas pourquoi ça ne marche pas chez moi :/

- Faut-il écrire les fonctions gererSerie, ajouterSerie et SupprimerSerie dans des Modules ou bien dans le code de la page qui contient le graphe en question ? (j'ai testé les deux et ça ne marche pas)

- Je ne vois pas où est fait le lien entre les cases à cocher avec les modifications qu'elles déclenchent dans les séries, et le graphique qui affiche ces séries ! En clair : comment Excel sait-il que lorsque je coche une case il doit ajouter/supprimer une série dans TEL ou TEl graphique ??? C'est d'ailleurs primordial pour moi car j'ai deux graphiques sur une même feuille, et je compte appliquer la même fonctionnalité aux deux distinctement...





Encore une fois si je n'ai pas été clair dites-le moi, j'essayerais de me faire comprendre mieux que ça ! :)


Merci d'avance pour votre aide.


PS : je suis en train d'essayer de créer un fichier exemple pour vous l'envoyer.
 
Dernière édition:

Alexbab

XLDnaute Nouveau
Re : Graphique depuis un tableau particulier

Quand je clique sur la CheckBox "2005" pour la cocher (et donc pour dessiner la courbe de l'année 2005 sur le graphique) ça me dit : "Impossible de lire la propriété Name de la classe Series", Erreur d'exécution 1004.

Je suis bloqué :/
 

Statistiques des forums

Discussions
312 765
Messages
2 091 910
Membres
105 099
dernier inscrit
lucy3103