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 :

VBA - création graphique avec mise en couleur conditionnelle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Par défaut VBA - création graphique avec mise en couleur conditionnelle
    Bonjour à tous!

    Je cherche actuellement à faire un graphique Excel bulles sur les professions et catégories socioprofessionnelles (PCS) sur plusieurs villes avec en abscisse la spécialisation, la spécificité en ordonnée et le nombre d'individu en taille.

    Vu qu'il en existe des centaines, pour rendre le graphique lisible, je veux mettre des couleurs selon la catégorie (artisan, commercant, administration...). Pour cela, il faut prendre les 2 premiers chiffres du code PCS, ce qui fait une quarantaine de catégories possibles.
    (Plus de précisions sur https://fr.wikipedia.org/wiki/Profes...lles_en_France)

    Cependant, il faut aussi tenir compte du fait que les PCS, donc la taille du tableau, varient d'une ville à une autre ainsi que les catégories... Une catégorie qui n'apparait pas dans une ville ne devrait alors pas être présente sur le graphique.

    Je suis débutante (je connais les boucles mais pas les différentes fonctions VBA), j'ai essayé de chercher des solutions mais je n'ai pas réussi à les adapter à ce que je voulais faire...

    Je vous remercie d'avance pour votre aide,

    Carole61
    Fichiers attachés Fichiers attachés

  2. #2
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 4
    Par défaut
    Finalement j'ai réussi à bidouiller un code en rajoutant la variable v à partir d'un autre pour pas à avoir à définir chaque cas.

    Par contre je ne suis pas sûre de le comprendre: le point devant chartobjects sert à faire référence à sheets? si je veux que la macro agisse sur tous les graphique de la page, je peux juste enlever (1) de chartobjects? s.points.count ==> on compte les points du graphique? La partie ".[G2].Offset(I).Value" permet bien de saisir toutes les valeurs de la colonne G en partant de G2?

    Je veux juste être sûre histoire de le réutiliser plus facilement




    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
     
    Sub Couleur2()
        Dim S As Series
        Dim v As Integer
        With Sheets("nuage france")
            Set S = .ChartObjects(1).Chart.SeriesCollection(1)
            For I = 1 To S.Points.Count
                For v = 1 To S.Points.Count
                Select Case .[G2].Offset(I).Value
                    Case v: S.Points(I).Interior.ColorIndex = v + 3
     
                    Set Var = S.Points(I)
                End Select
            Next v
            Next I
        End With
    End Sub

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    le point devant chartobjects sert à faire référence à sheets?
    Le point fait référence a ce que tu as dans le with, ici Sheets("nuage france")

    si je veux que la macro agisse sur tous les graphique de la page, je peux juste enlever (1) de chartobjects?
    Non il faut boucler, exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i=1 to chartobjects.count
    ...chartobjects(i)
    s.points.count ==> on compte les points du graphique?
    on compte les points de S ici ChartObjects(1).Chart.SeriesCollection(1), les points de la serie du graphique.

    Ne sert a rien, car pas réutilisé.

    La partie ".[G2].Offset(I).Value" permet bien de saisir toutes les valeurs de la colonne G en partant de G2?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            For I = 1 To S.Points.Count
                For v = 1 To S.Points.Count
                Select Case .[G2].Offset(I).Value
                    Case v: S.Points(I).Interior.ColorIndex = v + 3
                End Select
            Next v
            Next I
    Si je comprends bien (pas sur de moi), pour chaque point de la serie, si sa valeur = son numéro alors on change sa couleur.

Discussions similaires

  1. Réponses: 13
    Dernier message: 08/12/2014, 08h32
  2. VBA-E mise en couleur conditionnelle
    Par porc-bouc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2008, 09h41
  3. champ calculé avec mise en forme conditionnelle
    Par bobo59000 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 15/10/2007, 20h22
  4. Soucis avec mise en forme conditionnelle
    Par icecube216 dans le forum Access
    Réponses: 4
    Dernier message: 04/09/2006, 17h08
  5. [VBA-E] graphique avec plage de donnees variable
    Par gigs dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 03/04/2006, 14h50

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