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 :

Macro graph sous conditions [XL-2010]


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
    Consultant CRM
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Par défaut Macro graph sous conditions
    bonjour à tous,
    Je vais essayer d'etre la plus claire possible pour poser mon problème:
    j'ai un graphique ou je représente la corrélation entre 2 variables pour différents Id
    exemple:
    ID / age / % cheveux
    000 / 24 / 78
    001 / 68 / 2
    J'ai ensuite une 4 ème variable qui rentre en jeu : le sexe
    j'aimerai une macro qui dise au graphique que quand le sexe vaut un le marqueur du graph doit être bleu et quand le sexe vaut 0 il doit etre rose :
    J'ai betement essayé ca :

    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
    Dim L As Integer 
    L = 1 
    For L = 1 To Range("E65356").End(xlUp).Row 
    If Range("E" & L) = 1 Then 
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1) 
    .MarkerStyle = xlMarkerStyleAutomatic 
    .MarkerForegroundColor = RGB(255, 165, 0) 
    .MarkerBackgroundColor = RGB(255, 165, 0) 
    End With 
    ElseIf Range("E" & L) = 2 Then 
    With ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1) 
    .MarkerStyle = xlMarkerStyleAutomatic 
    .MarkerForegroundColor = RGB(0, 0, 0) 
    .MarkerBackgroundColor = RGB(0, 0, 0) 
    End With 
    End If 
    Next L 
    End Sub
    sans trop de succès, en effet seule la première partie s'execute sans tenir compte d'aucune condition.
    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    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 208
    Par défaut
    Bonjour,

    Tu as combien de séries ?

  3. #3
    Membre à l'essai
    Femme Profil pro
    Consultant CRM
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Par défaut alors...
    En fait mes données se présentent de la forme suivante

    NPS SG moyenne desti
    paris -17% 5,6 1
    orléans 21% 6,0 2
    marseille 0% 5,4 1

    une première macro :

    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
    Sub AttachLabelsToPoints()
     
       'Dimension variables.
       Dim Counter As Integer, ChartName As String, xVals As String
     
       ' Disable screen updating while the subroutine is run.
       Application.ScreenUpdating = False
     
       'Store the formula for the first series in "xVals".
       xVals = ActiveChart.SeriesCollection(1).Formula
     
       'Extract the range for the data from xVals.
       xVals = Mid(xVals, InStr(InStr(xVals, ","), xVals, _
          Mid(Left(xVals, InStr(xVals, "!") - 1), 9)))
       xVals = Left(xVals, InStr(InStr(xVals, "!"), xVals, ",") - 1)
       Do While Left(xVals, 1) = ","
          xVals = Mid(xVals, 2)
       Loop
     
       'Attach a label to each data point in the chart.
       For Counter = 1 To Range(xVals).Cells.Count
         ActiveChart.SeriesCollection(1).Points(Counter).HasDataLabel = _
             True
          ActiveChart.SeriesCollection(1).Points(Counter).DataLabel.Text = _
             Range(xVals).Cells(Counter, 1).Offset(0, -1).Value
       Next Counter
     
    End Sub
    permet de placer les villes sur mon graph en fonction des 2 variables
    et j'aimerai utilser la dernière colonne 'desti' pour la couleur de mes marqueurs

    je sais meme pas si c'est faisable

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    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 208
    Par défaut
    En supposant que tes données soient en colonnes A et commençant en ligne 1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
        With Sheets("Feuil2").ChartObjects(1).Chart.SeriesCollection(1)
            For i = 1 To .Points.Count
                With .Points(i).Format.Line
                    If [Feuil2!D1].Offset(i - 1) = 1 Then
                        .ForeColor.RGB = RGB(0, 0, 0)
                    ElseIf [Feuil2!D1].Offset(i - 1) = 2 Then
                        .ForeColor.RGB = RGB(255, 165, 0)
                    End If
                End With
            Next i
        End With
    End Sub

  5. #5
    Membre à l'essai
    Femme Profil pro
    Consultant CRM
    Inscrit en
    Août 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Août 2012
    Messages : 4
    Par défaut
    j'essaye d'appliquer le code mais je n'y arrive pas je l'ai modifié de la façon suivante :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
        With Sheets("Toutes_marques").ChartObjects(1).Chart.SeriesCollection(1)
            For i = 1 To .Points.Count
                With .Points(i).Format.Line
                    If [Toutes_marques!D1].Offset(i - 1) = 1 Then
                        .ForeColor.RGB = RGB(0, 0, 0)
                    ElseIf [Toutes_marques!D1].Offset(i - 1) = 2 Then
                        .ForeColor.RGB = RGB(255, 165, 0)
                    End If
                End With
            Next i
        End With
    End Sub
    pour des données de la feuille "Toutes_marques" :
    A B C D
    l1 :NPS SG moyenne desti
    l2 :Camargue L'Estajan -17% 5,6 1
    l3 :Font Romeu Balcons Du Soleil 21% 6,0 2
    l4 :Hyeres Hyeres Parc 0% 5,4 1
    l5 :Les Coches Hameaux Du Sauge -52% 3,9 2

    Désolée mais je sens qu'on tient le bon bout tout de même

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    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 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub test()
        With Sheets("Feuil2").ChartObjects(1).Chart.SeriesCollection(1)
            For i = 1 To .Points.Count
                With .Points(i).Format.Line
                    If [Feuil2!D1].Offset(i) = 1 Then
                        .ForeColor.RGB = RGB(128, 0, 0)
                    ElseIf [Feuil2!D1].Offset(i - 1) = 2 Then
                        .ForeColor.RGB = RGB(255, 165, 0)
                    End If
                End With
            Next i
        End With
    End Sub
    Regarde le classeur zippé en PJ.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [XL-2010] macro automatique sous condition SI
    Par arthour973 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/10/2011, 16h06
  2. [XL-2003] Macro pour copier une cellule d'un classeur à un autre sous condition
    Par mairiemeudon dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 14/06/2010, 15h28
  3. [AC-97] Macro sous condition
    Par julio79 dans le forum IHM
    Réponses: 0
    Dernier message: 28/05/2009, 18h17
  4. macro vba identifier cellule sous condition
    Par yanacrux dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/03/2009, 14h00
  5. Réponses: 3
    Dernier message: 17/11/2006, 14h35

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