Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/08/2011, 21h15   #1
Membre à l'essai
 
Homme
Inscription : décembre 2007
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : décembre 2007
Messages : 45
Points : 22
Points : 22
Par défaut sélection de graphiques par listbox

Bonjour,

Voici donc ma question :

Sur une feuille graphique, je souhaite, en cliquant sur des éléments d'une ListBox à sélection multiple, faire apparaître ou disparaître les courbes sélectionnées. Je l'ai déjà fait avec un USF mais je voudrais en fait que l'utilisateur puisse le faire directement sans passer par l'ouverture de cette USF. C'est sans doute possible avec un TCD mais je préfère le gérer moi-même.

J'ai voulu insérer une ListBox à partir de la Boîte à outils Contrôles mais les contrôles sont grisés. On ne peut donc pas utiliser de contrôles ActiveX dans une feuille graphique.

Je me suis donc rabattu sur la ListBox de Formulaire. Mais là, je coince : comment faire pour récupérer les éléments sélectionnés et les traiter dans une macro ?

Merci d'avance pour votre aide.
Sécateur est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 21h58   #2
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut heu

bonjour secateur


tu devrais regarder dans les contributions mon sujet sur le graphique instantané au clic droit sur selection ca pourais t'apporter une piste
un peu différente mais interréssante


au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 22h11   #3
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
voilà un code avec un listbox de formulaire :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Sub MajListe()
 Dim l As ListBox
 Set l = Graph1.ListBoxes(1)
 Dim s As Series
 l.RemoveAllItems
 'Ajout de donnée dans le list box
 For Each s In Graph1.SeriesCollection
  l.AddItem s.Name
 Next
End Sub
 
Sub MiseAjourMArques()
  Dim l As ListBox
  Dim i As Integer
  Dim s As Series
 Set l = Graph1.ListBoxes(1)
 For i = 1 To l.ListCount
 
   Set s = Graph1.SeriesCollection(i)
   If l.Selected(i) Then 'Si sélectionné
     s.Border.LineStyle = xlAutomatic
     s.MarkerStyle = xlAutomatic
    Else
     s.Border.LineStyle = xlNone
     s.MarkerStyle = xlNone
   End If
 Next
End Sub
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/08/2011, 10h09   #4
Membre à l'essai
 
Homme
Inscription : décembre 2007
Messages : 45
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : décembre 2007
Messages : 45
Points : 22
Points : 22
Super ! ça marche nickel !

J'ai un peu ramé, cela va de soi. En complet autodidacte, je n'ai pas toujours les bons réflexes. Mais bon, c'est ce qui fait tout le charme de VBA !

Voici mon code terminé
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Dim laliste(8) As Integer
 
Sub MiseAjourMArques()
    Dim l As ListBox
    Dim i As Integer
    Dim s As Series
    'pour garder toujours une courbe sur le graphique
    With ActiveChart
        Do Until .SeriesCollection.Count = 1
            .SeriesCollection(2).Delete
        Loop
    End With
    Set l = Graph1.ListBoxes(1)
    'parce que cette foutue ListBox bouge tout le temps !
    l.Top = 0
    l.Left = Graph1.ChartArea.Width - l.Width
 
    For i = 1 To l.ListCount
      If l.Selected(i) Then 'Si sélectionné
           Select Case i
               Case 1
                   laserie "graisse", "% de graisse", 2
               Case 2
                   laserie "Eau", "% d'eau", 2
               Case 3
                   laserie "Os", "Masse osseuse", 2
               Case 4
                   laserie "Muscle", "Masse musculaire", 1
               Case 5
                   laserie "Cactuel", "Calories actuelles", 2
               Case 6
                   laserie "Coptimal", "Calories optimales", 2
               Case 7
                   laserie "poptimal", "Poids optimal", 1
               Case 8
                   laserie "cabsorb", "Calories absorbées", 2
               Case 9
                   laserie "ccons", "Calories consommées", 2
 
           End Select
      End If
    Next
End Sub
Sub laserie(lenom, letitre, laxe)
    ActiveChart.SeriesCollection.NewSeries
    lenom = "'" & ActiveWorkbook.Name & "'!" & lenom
    lindex = ActiveChart.SeriesCollection.Count
    ActiveChart.SeriesCollection(lindex).Values = Range(lenom)
    ActiveChart.SeriesCollection(lindex).Name = letitre
    ActiveChart.SeriesCollection(lindex).AxisGroup = laxe
    ActiveChart.ChartArea.Select
End Sub
Oui, on s'est acheté un nouveau pèse personne qui donne tout plein d'informations et je voulais pouvoir suivre la progression de ces différentes valeurs.

Encore merci pour le grand coup de main !
Sécateur est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h32.


 
 
 
 
Partenaires

Hébergement Web