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 :

Histogramme et camembert - VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 68
    Par défaut Histogramme et camembert - VBA
    Bonjour,

    à partir de données présentées sous forme de tableau, je souhaite créer un histogramme et un camembert.

    La difficulté est que seul les données filtrées (affichées) doivenet être prises en compte. De plus aucun tableau intermédiaire ne devra être inscrit sur les feuilles excel.



    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,

    Je n'ai pas le code en tête, mais en utilisant l'enregistreur de macros, tu devrais trouver ton bonheur. Il faut faire un clic droit dans le graphique, cliquer sur "Sélectionner les données, appuyer sur le bouton "Cellules masquées et cellules vides" puis cocher "Afficher les données des lignes et colonnes masquées".

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 68
    Par défaut
    Bonjour

    Concernant la condition "uniquement cellules visibles" je m'en sors avec l'enregistreur de macr. Idem pour construire un histogramme et un camembert.

    Ce qui me bloque pour le moment est de faire figurer les données utiles dans un tableau de variables qui n'apparait pas sur la feuille excel. Par la suite je serai en mesure de les exploiter pour construire les figures voulues.

    ci-joint le fichier exemple

    merci
    Fichiers attachés Fichiers attachés

  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
    Tu ne veux même pas les données dans des lignes ou une feuille masquée ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 68
    Par défaut
    Jsutement non, je ne souhaite pas que les valeurs intermediaires ne soient inscrites sur le fichier (ni dans une autre feuille). C'est cela qui me bloque.

  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
    Regarde cette macro (pour les histogrammes seulement). Si ça te convient, je la compléterais.

    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
    Sub test()
    'Réf. Camembert et histogramme vba - Copie.xls gaston64
    Dim Plage As Range, c As Range, Dico As Object, Ctr As Integer
    Dim TablSeries(100), TablHisto(100, 1), S As Series
    Ctr = -1
    With Sheets("Feuil1")
        Set Plage = .AutoFilter.Range.Offset(1, 1)
        Set Plage = Plage.Resize(Plage.Rows.Count - 1, 1).SpecialCells(xlCellTypeVisible)
        Set Dico = CreateObject("Scripting.Dictionary")
        For Each c In Plage
            If Not Dico.exists(c.Value) Then
                Dico.Add c.Value, c.Value
                Ctr = Ctr + 1
                TablSeries(Ctr) = c.Value
            End If
            Var = Application.Match(c.Value, TablSeries(), 0)
            If Application.CountA(Range(c.Offset(, 2), c.Offset(, 4))) > 0 Then
                TablHisto(Var - 1, 0) = TablHisto(Var - 1, 0) + 1
            Else
                TablHisto(Var - 1, 1) = TablHisto(Var - 1, 1) + 1
            End If
        Next c
        .[I:L].ClearContents
        .[I1] = "Série"
        .[J1] = "Rempli"
        .[K1] = "Vide"
        .[L1] = "Tot"
        Ctr = 0
        Do While TablSeries(Ctr) <> ""
            .Cells(Ctr + 2, 9) = TablSeries(Ctr)
            .Cells(Ctr + 2, 10) = TablHisto(Ctr, 0)
            .Cells(Ctr + 2, 11) = TablHisto(Ctr, 1)
            .Cells(Ctr + 2, 12) = TablHisto(Ctr, 0) + TablHisto(Ctr, 1)
            Ctr = Ctr + 1
        Loop
        Set Plage = Range(.[I1], .Cells(.Rows.Count, 12).End(xlUp))
        Plage.Sort .[L1], xlDescending, Header:=xlYes
        ligne = .Cells(.Rows.Count, 9).End(xlUp).Row
        Set sh = Sheets("Feuil1")
        With .ChartObjects("Graphique 2").Chart
            For Each S In .SeriesCollection
                S.Delete
            Next S
            For i = 0 To 1
                Set S = .SeriesCollection.NewSeries
                S.Name = sh.Cells(1, 10).Offset(, i).Value
                Var = Application.Transpose(Application.Transpose(sh.Cells(2, 9).Resize(ligne - 1).Offset(, i + 1)))
                S.Values = Var
                Var = Application.Transpose(Application.Transpose(sh.Cells(2, 9).Resize(ligne - 1)))
                S.XValues = Var
            Next i
        End With
        .[I:L].ClearContents
    End With
    End Sub

Discussions similaires

  1. question sur l'histogramme empilé en vba
    Par rob1son76 dans le forum IHM
    Réponses: 0
    Dernier message: 01/12/2010, 15h01
  2. [XL-MAC 2008] Création d'un histogramme en macro VBA
    Par Mariion24 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/08/2010, 14h33
  3. Réponses: 1
    Dernier message: 08/08/2007, 16h33
  4. [VBA-E]Histogramme sur Excel
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/03/2006, 12h07
  5. VBA - Excel Faire un graphique histogrammes - courbes
    Par brethomeau dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/11/2005, 16h49

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