Case à cocher et affichage de courbe sous excel...

Résolu
excess01 Messages postés 6 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 14 février 2009 - 12 févr. 2009 à 20:05
Alexbab Messages postés 1 Date d'inscription lundi 22 novembre 2010 Statut Membre Dernière intervention 22 novembre 2010 - 22 nov. 2010 à 14:56
Bonjour à tous,

et tout d'abord félicitations pour ce magnifique plein de richesses..
Je débute en vb et du coup je me pose des ptits défis mais celui reste insolvable pour moi..

Voila j'aimerais savoir comment faire pour selectionner une courbe sur un graphique excel.

Le principe que j'aimerai mettre en place est le suivant :

j'ai un graphique avec 4 courbes et je souhaiterais à l'aide de cases à cocher (4) ou autre faire apparaitre et/ou disparaitre certaines courbes.

Merci pour votre précieuse aide....

@: [mailto:excessfr@yahoo.fr excessfr@yahoo.fr]

12 réponses

cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
13 févr. 2009 à 00:15
Ne cherche pas à sélectionner tes valeurs avec la case à cocher. Celle-ci doit exécuter une macro et c'est cette dernière qui modifie la source.

Ca sera plus clair par un exemple. Colle une case à cocher nommée CheckBox1dans ton formulaire, et la procédure CheckBox1_Click suivante dans le code de la feuille ou dans un module.

Public Sub CheckBox1_Click()
   If CheckBox1 Then
       ActiveSheet.Shapes("chart 1").Select
       ActiveChart.SetSourceData = "Feuil2!A1:A100"
   End If
End Sub

Ensuite teste la case à cocher. En principe, lorsque qu'elle passe à True, ton graphique devrait s'afficher. Si c'est le cas, tu n'as qu'à répéter l'opération pour les trois autres cases à cocher.

Note : Dans l'exemple, j'ai appelé "chart 1" le nom du graphique incorporé. Si tu veux savoir sous quel nom a été incorporé ton graphique, ce , exécute la routine suivante, elle t'affiche le nom de tous les contrôles :

Sub nomControles
   Dim s as Shape
   For Each s In ActiveSheet.Shapes
        MsgBox s.Name
   Next
End Sub

Essaie ça et dis-moi si tu as un problème. Les graphiques sont des contrôles un peu embêtants à prendre en main, mais ça en vaut la peine.

Amicalement
3
excess01 Messages postés 6 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 14 février 2009 2
13 févr. 2009 à 07:22
Désolé ca prend pas le html!

voici le lien!!

merci!!

http://www.filedropper.com/test_106
3
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
13 févr. 2009 à 20:02
Salut excess01

Désolé pour le retard à te répondre, décalage horaire.

Ca fait quelques mois que j'essaie d'apporter des réponses sur ce forum, et avec l'expérience, je sens si une discussion va être rapide ou non. Quand j'ai lu ton premier message, je reconnais que j'ai hésité à te répondre, parce que les graphiques sur Excel, c'est un peu "chiant" à expliquer. Mais d'un autre côté, je trouve plus intéressant d'aborder un sujet un peu complexe que d'expliquer à un débutant comment afficher "Hello World".

Je vais regarder ton classeur (d'ailleurs j'allais te proposer de me l'envoyer, c'est te dire qu'on est sur la même longueur d'onde !).

A tout à l'heure
3
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
13 févr. 2009 à 20:20
J'ai bien téléchargé le classeur. Pendant que je travaille dessus, peux-tu me dire comment je pourrai le mettre à jour sur le site File Dropper ? Ca nous fera gagner du temps.
3

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

Posez votre question
excess01 Messages postés 6 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 14 février 2009 2
13 févr. 2009 à 21:01
Bonsoir Orohena!

et merci encore pour ta précieuse aide!
tu ne pourras pas le mettre à jour sur file dropper car il te faut un compte..

Mais tu peux toujours me le renvoyer par mail:

antony1061@hotmail.com

j'ai regardé sur le net encore cette apres midi mais sans succes, les seules choses que j'ai vu concerne l'affichage ou non d'un graphique..
Mais je souhaiterais faire apparaitre ou non les 4courbes..

Merci beaucoup ca fait chaud au coeur!!
Courage!
3
excess01 Messages postés 6 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 14 février 2009 2
12 févr. 2009 à 23:07
Merci pour ta réponse!
Par contre je ne voit pas comment proceder..
Quand je cré une case à cocher et que je selectionne mes valeurs, la premiere cellule de la colonne selectionnée m'indique VRAI ou FAUX selon que je coche ou décoche la case à cocher..
Pourriez-vous m'en dire un peu plus voir un exemple, j'ai regardé sur le site mais sans grand succes..

Merci encore..!
1
excess01 Messages postés 6 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 14 février 2009 2
13 févr. 2009 à 07:20
Re!

bon ba je me suis levé très tot en espérant qu'une bonne nuit de sommeil ainsi que ton aide me soit favorable..
Et bien non!
Je commence dans la programation et apres avoir maitrisé ACCESS c'est au tour de EXCEL..
Je ne veut pas lacher l'affaire concernant ce graphique et le fait de vouloir faire apparaitre les courbes en cliquant qur un bouton!!

Merci encore pour ton aide c'est super sympa!

Sinon je n'y parvient, j'ai testé ta méthode mais il me renvoi une erreur de compilation..

Voici un lien ou mon fichier est accessible et sans vouloir abuser et si tu peux bien sur..

Il y a 4 courbes: ecoute, good, acceptable et inacceptable
j'aimerais à l'aide de 4 boutons ou cases à cocher les faire apparaitre..

Merci encore ca fait du bien de trouver de l'aide!!

FileDropper Free File Hosting
1
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
13 févr. 2009 à 23:17
Merci pour ton message.

J'ai terminé. Je vais t'envoyer le classeur par mail.

J'ai mis une seule des 4 cases à cocher, baptisée caseEcoute. Elle crée et supprime alternativement la courbe Ecoute du graphique. Tu as juste à ajouter les 3 autres cases à cocher et créer leurs procédures évenementielles en te basant sur la Sub caseEcoute() ci-dessous.

Voici ce que j'ai fait :

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



Amicalement
0
excess01 Messages postés 6 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 14 février 2009 2
14 févr. 2009 à 08:14
Orohena est un génie!!

Un GRAND GRAND merci!!
0
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
14 févr. 2009 à 10:43
Merci à toi Anthony, c'est trop sympa

Bonne programmation
0
Alexbab Messages postés 1 Date d'inscription lundi 22 novembre 2010 Statut Membre Dernière intervention 22 novembre 2010
22 nov. 2010 à 14:56
Bonjour,

Désolé de déterrer ce vieux topic, mais j'ai exactement le même besoin que excess01 et j'aurait encore besoin de votre aide ! :)


En fait j'ai aussiun graphique (deux en fait mais bon) sur une feuille, et 8 courbes sur ces graphiques... je voudrais aussi créer 8 checkbox, pour chaque graphique, et permettre d'"afficher/masquer" a volonté les différentes courbes sur les graphiques...



J'ai mis en place le code donné plus haut en adaptant à mon fichier, mais j'ai un petit problème. Lorsque je clique sur la checkbox pour afficher une courbe, celà me met "Impossible de lire la propriété Name de la classe Series" !


J'ai bien adapté le code à mon problème, et j'ai quelques pistes sur l'origine du problème :

- Le fait d'avoir 2 graphiques sur la même page pose peut-être problème ? Le code ne sait peut-être pas sur quel graphique il doit dessiner ?

- Les graphiques crés sur ma page doivent-ils être remplis avec des séries ou bien est-ce que je dois les laisser vide et laisser les "checkbox les remplir" selon la sélection ?

- Les noms de mes séries sont des années (2005, 2006, 2007...) Celà pose t'il problème que ce soit des valeurs numériques ?



Merci d'avance pour le coup de main, car là je bloque vraiment...


ps : je peux vous envoyer par mail un exemple de ce que j'ai pour mieux comprendre mon problème ;)
0
cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
12 févr. 2009 à 21:19
Bonjour

Crée un graphique avec une seule courbe.

Quand tu cliques une case à cocher, tu as simplement à redéfinir la plage de données source de ton graphique (méthode SetSourceData).

Amicalement
-2
Rejoignez-nous