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 :

Comparaison de graphique "radar" pour differentes personnes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2018
    Messages : 12
    Par défaut Comparaison de graphique "radar" pour differentes personnes
    Salut a tous,

    Je vais essayer de faire bref mais bien expliqué :

    J'ai dés données pour 26 personnes qui représente leurs skills par exemple pour emilie :

    Projet : 20, Office : 30, Technique : 25, Analyste : 15

    Ces données sont classés en fonction "without stress" et "with stress" afin de pouvoir comparer les deux graphiques de la personne : voir image

    Mon image du rendu visuel

    Cependant je n'arrive pas a comprendre comment gérer mon code pour mes graphiques actif.
    J'aimerai dans le code que j'ai deja ci dessous comprendre comment pouvoir afficher les deux graphiques en meme temps sans que l'un supprime l'autre au clique du bouton "afficher" mais que quand je clique sur un autre nom les graphiques soient supprimés et que les nouveaux pour la nouvelle personne s'affichent.

    Le but étant de comparer avec stress et sans stress les deux graphiques et qu'ils soient supprimés et remplacés par les nouveaux une fois cliquer sur un autre bouton afficher

    Mon code pour la premiere personne "without stress" :
    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
     
    Sub withoutstress()
    '
    ' withoutstress Macro
    '
    Dim Emplacement As Range
    Dim Grph As ChartObject
     
        For Each Grph In ActiveSheet.ChartObjects
            Grph.Delete
        Next
     
            MonTitre = Range("A5").Value
     
            Range("B2:E2,B5:E5").Select
            Range("B5").Activate
            ActiveSheet.Shapes.AddChart2(317, xlRadarFilled).Select
            ActiveChart.SetSourceData Source:=Range("Feuil1!$B$2:$E$2,Feuil1!$B$5:$E$5")
     
            With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = MonTitre
            .Axes(xlValue).MaximumScale = 45
            End With
     
     
        Set Grph = Feuil1.ChartObjects(1)
        Set Emplacement = Range("N4:Q11")
     
        With Grph
            .Left = Emplacement.Left
            .Top = Emplacement.Top
            .Height = Emplacement.Height
            .Width = Emplacement.Width
        End With
     
    End Sub
    mon code pour la premiere personne with stress :
    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
     
    Sub withstress()
     
    Dim Emplacement1 As Range
    Dim Grph1 As ChartObject
     
     
        For Each Grph1 In ActiveSheet.ChartObjects
            Grph1.Delete
        Next
     
           Range("G2:J2,G5:J5").Select
           Range("G5").Activate
        ActiveSheet.Shapes.AddChart2(317, xlRadarFilled).Select
          ActiveChart.SetSourceData Source:=Range("Feuil1!$G$2:$J$2,Feuil1!$G$5:$J$5")
     
    With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = MonTitre
            .Axes(xlValue).MaximumScale = 45
            End With    
     
       Set Grph1 = Feuil1.ChartObjects(2)
       Set Emplacement1 = Range("N13:Q20")
     
       With Grph1
            .Left = Emplacement1.Left
            .Top = Emplacement1.Top
            .Height = Emplacement1.Height
            .Width = Emplacement1.Width
        End With
     
    End Sub
    Je peux fournir mon fichier excel si besoin

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Il serait peut-être plus simple d'avoir un radar avec deux séries superposées (avec une certaine transparence) comme cela se fait dans les comparatifs, plutôt que 2 mais c'est toi qui vois

    Sinon pour répondre à ta question, il me parait plus simple d'avoir en permanence ton ou tes deux graphiques et en changer la source lors du clic et non détruire et recréer à chaque fois.
    Là en plus tu supprimes tout donc le premier pour créer le 2ème...

    Il suffit que tes graphiques soient correctement nommés une fois pour toutes pour facilement agir sur eux.
    Si nécessaire il peuvent être masqués ou avoir une source sans données à la fermeture et réouverture du fichier, si tu ne souhaites pas qu'ils affichent la dernière personne choisie...

    En dehors de cela plutôt que 2 boutons par personnes, ce qui devient vite lourd poids du classeur) et difficile à maintenir, il serait plus simple de mettre une liste déroulante au-dessus de la liste pour choisir la personne... et déclencher la MAJ des graph lors du choix...

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