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 :

Graphique Excel "Camembert" en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Graphique Excel "Camembert" en VBA
    Bonjour à tous!
    J'aimerais calculer la proportion de chaque tranche d'âges dans un graphique "camembert". J'ai calculé mes données en VBA (ça, ça marche) et maintenant j'aimerais créer mon graphique à partir de celles-ci. Mais impossible d'y arriver, j'ai un message d'erreur "incompatibilité de type" qui apparaît.
    Je l'ai fait en utilisant les graphiques Excel, là pas de souci mais vu que c'est un travail scolaire il faut absolument que toutes mes données soient programmées en VBA.
    (mon graphique n'est pas obligé d'être en 3D tant que c'est un graphe "camembert")
    Merci à vous!

    Nom : Code_GFCond.PNG
Affichages : 1633
Taille : 42,1 KoNom : GF_CondTranchesAges.PNG
Affichages : 4509
Taille : 45,9 Ko

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    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 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour,

    Essaie et adapte :

    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
    Sub GraphiqueAge()
        ActiveSheet.Shapes.AddChart
        With ActiveSheet.ChartObjects(1).Chart
            .ChartType = xl3DPie
            .SeriesCollection.NewSeries
            With .SeriesCollection(1)
                .HasDataLabels = True
                .Values = Range("M1:M5").Value
                Var = .Values
                For i = 1 To UBound(Var)
                    If Var(i) <> 0 Then .Points(i).DataLabel.Text = [N1].Offset(i - 1)
                Next i
            End With
        End With
    End Sub

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup ça marche!
    Je ne sais pas si vous savez comment introduire une légende sur le côté pour chaque secteur.. Pour le moment j'ai 1;2;3;4;5 et il me faudrait chacune des tranches d'âge
    J'ai regardé sur le forum mais pas moyen de trouver comment définir le texte
    Bonne journée

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    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 207
    Points : 14 362
    Points
    14 362
    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
    14
    15
    16
    17
    18
    19
    20
    Sub GraphiqueAge()
        Dim I As Integer, Var As Variant
        ActiveSheet.Shapes.AddChart
        With ActiveSheet.ChartObjects(1).Chart
            .ChartType = xl3DPie
            .SeriesCollection.NewSeries
            With .SeriesCollection(1)
                .HasDataLabels = True
                .Values = Range("M1:M5").Value
                Var = .Values
                .XValues = "=Feuil2!$N$1:$N$5"
                For I = 1 To UBound(Var)
                    If Var(I) <> 0 Then
                        .Points(I).DataLabel.Text = [N1].Offset(I - 1)
     
                    End If
                Next I
            End With
        End With
    End Sub

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci infiniment de votre aide! Ca ne fonctionnait pas totalement au début mais en chipotant légèrement ç'est nickel!
    Bonne journée,
    (Je mets le code ci-dessous au cas où ça peut servir à quelqu'un
    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
    Sub GraphiqueAge()
        'Ajout du graphique
        ActiveSheet.Shapes.AddChart
        'Spécification des détails du graphe (type,nouvelle série, titre, présence d'une légende)
        With ActiveSheet.ChartObjects(1).Chart
            .ChartType = xl3DPie
            .SeriesCollection.NewSeries
            .HasTitle = True
            .ChartTitle.Characters.Text = "Proportion des tranches d'âges des conducteurs"
            .HasLegend = True
            With .SeriesCollection(1)
                'présence d'étiquette des données
                .HasDataLabels = True
                'Valeurs de l'axe Y
                .Values = Range("M1:M5").Value
                'Valeurs de l'axe X
                .XValues = Range("N1:N5").Value
                 Var = .Values
                'Boucle For qui va poser les valeur de y dans chaque secteur
                For i = 1 To UBound(Var)
                    If Var(i) <> 0 Then .Points(i).DataLabel.Text = [M1].Offset(i - 1)
                Next i
            End With
        End With
    End Sub

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

Discussions similaires

  1. Requete fichier .js VBA EXCEL REALTIME FX QUOTES
    Par tiuse75016 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/05/2010, 18h51
  2. Forcer le nom d'un graphique excel en vba
    Par NiKoS29 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/01/2006, 17h25
  3. VBA + Graphique Excel
    Par NiKoS29 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/12/2005, 20h51

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