IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Afficher des variables en fonction d'une liste déroulante ou de checkbox [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement de composants

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Afficher des variables en fonction d'une liste déroulante ou de checkbox
    Bonjour,

    Je dois réaliser un fichier excel qui permette de tracer une multitude de graphiques. Plutôt que de les tracer un par un, ou de tous les tracer, j'aimerai que l'utilisateur puisse sélectionner exactement les variables qu'il veut afficher.

    Ces variables seront classés dans des groupes. Le graphique devra afficher les mêmes variables de chaque groupe (exemple pression groupe 1, pression groupe 2) par rapport au temps.

    Je pense que mon fichier joint sera beaucoup plus parlant.

    Au début je pensais utiliser les graphiques croisés dynamiques mais je n'ai pas l'impression que c'est applicable ici.

    Merci pour les pistes/aide, je suis débutant sur vb
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Euh, oui, c'est quoi, ta version d'Excel ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement de composants

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Je travaille avec excel 2010 (par contre l'exemple a été fait sur mon pc perso avec une version test d'excel 2016).

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    par contre l'exemple a été fait sur mon pc perso avec une version test d'excel 2016
    Ah ! l'esprit pionnier... Remarque, moi aussi.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  5. #5
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Regarde le classeur en PJ. Il te reste les finitions (échelles des axes, format du quadrillage, etc.). Fais-le sur un graphique avec l'enregistreur de macros. La macro est dans le module de Feuil1. Elle se déclenche quand tu changes une des valeurs de la plage M2:O4.

    sedalc Macro graph.xlsm

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Sh As Shape, Ws As Worksheet
        If Intersect([M2:O4], Target) Is Nothing Then Exit Sub
        Set Ws = Sheets("Feuil1")
        With Sheets("Feuil1")
            For I = .ChartObjects.Count To 1 Step -1
               .ChartObjects(I).Delete
            Next I
            If Application.CountIf(.[M2:O4], "Non") = 9 Then Exit Sub
            If Application.CountIf(.[M2:O2], "Oui") > 0 Then
                Set Sh = .Shapes.AddChart
                Sh.Top = 210.38
                Sh.Left = 0
                Sh.Height = 216
                Sh.Width = 283.46
                With Sh.Chart
                    For I = .SeriesCollection.Count To 1 Step -1
                        .SeriesCollection(I).Delete
                    Next I
                    .ChartType = xlXYScatterLines
                    .Legend.Position = xlLegendPositionBottom
                    .HasTitle = True
                    .ChartTitle.Text = "rd1"
                    If Ws.[M2].Value = "Oui" Then
                        .SeriesCollection.NewSeries
                        .SeriesCollection(.SeriesCollection.Count).Name = "=Feuil1!$B$1"
                        .SeriesCollection(.SeriesCollection.Count).XValues = "=Feuil1!$A$2:$A$13"
                        .SeriesCollection(.SeriesCollection.Count).Values = "=Feuil1!$B$2:$B$13"
                    End If
                    If Ws.[N2].Value = "Oui" Then
                        .SeriesCollection.NewSeries
                        .SeriesCollection(.SeriesCollection.Count).Name = "=Feuil1!$E$1"
                        .SeriesCollection(.SeriesCollection.Count).XValues = "=Feuil1!$A$2:$A$13"
                        .SeriesCollection(.SeriesCollection.Count).Values = "=Feuil1!$E$2:$E$13"
                    End If
                    If Ws.[O2].Value = "Oui" Then
                        .SeriesCollection.NewSeries
                        .SeriesCollection(.SeriesCollection.Count).Name = "=Feuil1!$H$1"
                        .SeriesCollection(.SeriesCollection.Count).XValues = "=Feuil1!$A$2:$A$13"
                        .SeriesCollection(.SeriesCollection.Count).Values = "=Feuil1!$H$2:$H$13"
                    End If
                End With
            End If
            If Application.CountIf(.[M3:O3], "Oui") > 0 Then
                Set Sh = .Shapes.AddChart
                Sh.Top = 210.38
                Sh.Left = 283.46 * (.ChartObjects.Count - 1)
                Sh.Height = 216
                Sh.Width = 283.46
                With Sh.Chart
                    For I = .SeriesCollection.Count To 1 Step -1
                        .SeriesCollection(I).Delete
                    Next I
                    .ChartType = xlXYScatterLines
                    .Legend.Position = xlLegendPositionBottom
                    .HasTitle = True
                    .ChartTitle.Text = "rd2"
                    If Ws.[M3].Value = "Oui" Then
                        .SeriesCollection.NewSeries
                        .SeriesCollection(.SeriesCollection.Count).Name = "=Feuil1!$B$1"
                        .SeriesCollection(.SeriesCollection.Count).XValues = "=Feuil1!$A$2:$A$13"
                        .SeriesCollection(.SeriesCollection.Count).Values = "=Feuil1!$C$2:$C$13"
                    End If
                    If Ws.[N3].Value = "Oui" Then
                        .SeriesCollection.NewSeries
                        .SeriesCollection(.SeriesCollection.Count).Name = "=Feuil1!$E$1"
                        .SeriesCollection(.SeriesCollection.Count).XValues = "=Feuil1!$A$2:$A$13"
                        .SeriesCollection(.SeriesCollection.Count).Values = "=Feuil1!$F$2:$F$13"
                    End If
                    If Ws.[O3].Value = "Oui" Then
                        .SeriesCollection.NewSeries
                        .SeriesCollection(.SeriesCollection.Count).Name = "=Feuil1!$H$1"
                        .SeriesCollection(.SeriesCollection.Count).XValues = "=Feuil1!$A$2:$A$13"
                        .SeriesCollection(.SeriesCollection.Count).Values = "=Feuil1!$I$2:$I$13"
                    End If
                End With
            End If
            If Application.CountIf(.[M4:O4], "Oui") > 0 Then
                Set Sh = .Shapes.AddChart
                Sh.Top = 210.38
                Sh.Left = 283.46 * (.ChartObjects.Count - 1)
                Sh.Height = 216
                Sh.Width = 283.46
                With Sh.Chart
                    For I = .SeriesCollection.Count To 1 Step -1
                        .SeriesCollection(I).Delete
                    Next I
                    .ChartType = xlXYScatterLines
                    .Legend.Position = xlLegendPositionBottom
                    .HasTitle = True
                    .ChartTitle.Text = "rd3"
                    If Ws.[M4].Value = "Oui" Then
                        .SeriesCollection.NewSeries
                        .SeriesCollection(.SeriesCollection.Count).Name = "=Feuil1!$B$1"
                        .SeriesCollection(.SeriesCollection.Count).XValues = "=Feuil1!$A$2:$A$13"
                        .SeriesCollection(.SeriesCollection.Count).Values = "=Feuil1!$D$2:$D$13"
                    End If
                    If Ws.[N4].Value = "Oui" Then
                        .SeriesCollection.NewSeries
                        .SeriesCollection(.SeriesCollection.Count).Name = "=Feuil1!$E$1"
                        .SeriesCollection(.SeriesCollection.Count).XValues = "=Feuil1!$A$2:$A$13"
                        .SeriesCollection(.SeriesCollection.Count).Values = "=Feuil1!$G$2:$G$13"
                    End If
                    If Ws.[O4].Value = "Oui" Then
                        .SeriesCollection.NewSeries
                        .SeriesCollection(.SeriesCollection.Count).Name = "=Feuil1!$H$1"
                        .SeriesCollection(.SeriesCollection.Count).XValues = "=Feuil1!$A$2:$A$13"
                        .SeriesCollection(.SeriesCollection.Count).Values = "=Feuil1!$J$2:$J$13"
                    End If
                End With
            End If
        End With
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  6. #6
    Candidat au Club
    Homme Profil pro
    Ingénieur développement de composants
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement de composants

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci c'est exactement ce que je voulais faire !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD-2010] Afficher un texte en fonction d'une liste déroulante
    Par fmailys dans le forum VBA Word
    Réponses: 3
    Dernier message: 07/09/2014, 13h55
  2. [AC-2007] Sous-formulaire variable en fonction d'une liste déroulante
    Par carlito0205 dans le forum IHM
    Réponses: 9
    Dernier message: 05/07/2011, 09h30
  3. [AC-2007] Actualisation des champs en fonction d'une liste déroulante
    Par cool17 dans le forum IHM
    Réponses: 2
    Dernier message: 05/04/2010, 20h31
  4. [MySQL] afficher des champs d'un formulaire en fonction d'une liste déroulante
    Par mademoizel dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 08/10/2009, 12h31
  5. Afficher des résultats en fonction d'une valeur de liste
    Par subnox dans le forum VBA Access
    Réponses: 13
    Dernier message: 14/08/2007, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo