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

Excel Discussion :

Masquer les en-têtes et cellules inutiles


Sujet :

Excel

  1. #1
    Invité
    Invité(e)
    Par défaut Masquer les en-têtes et cellules inutiles
    Salut à tous

    Bon je suis dans la création automatique de plusieurs camemberts. Pour l'instant il s'affiche, j'en suis content
    Cependant, il reste des valeurs qui, par certains moments, renvoient 0. J'aimerais, lorsque c'est le cas, cacher la colonne correspondante, c'est à dire masquer la valeur dans la cellule et l'en tete. Bah oui, avoir un 0% qui s'affiche dans le graphique, c'est pas très joli ^^

    Je vous joins mon code fonctionnel pour l'instant afin que vous puissiez m'aider au mieux !



    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
     
    Sub Macro3()
    '
    ' Macro3 Macro
    '
    Dim NbLig As Integer
        NbLig = Cells.SpecialCells(xlCellTypeLastCell).Row
     
    Sheets.Add After:=ActiveSheet    'création d'une nouvelle feuille après la feuille active '
     
    For i = 2 To NbLig
     
        ActiveSheet.Shapes.AddChart2(262, xl3DPie).Select
        ActiveChart.SetSourceData Source:=Sheets("fichier").Range("$A$1:$E$1,$A" & i & ":$E" & i & "")
        ActiveChart.FullSeriesCollection(1).Name = "=fichier!$F" & i
        ActiveChart.FullSeriesCollection(1).Select
        Selection.Explosion = 40
     
    Next i
     
    End Sub
    je vous donne également l'aperçu du tableau dans lequel je vais piocher mes données. Je précise que la taille de ce tableau n'est pas fixe, d’où l'utilisation d'un for


    Nom : tableau.PNG
Affichages : 251
Taille : 3,8 Ko

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

    Essaie comme ça :

    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
    Sub Macro3()
    Dim NbLig As Integer, Graph As Shape, Valeurs() As Single, xValeurs() As String, Ctr As Integer
        NbLig = Cells.SpecialCells(xlCellTypeLastCell).Row
        Sheets.Add After:=ActiveSheet    'création d'une nouvelle feuille après la feuille active '
    For i = 2 To NbLig
        ReDim Valeurs(1)
        ReDim xValeurs(1)
        Ctr = 0
        Set Graph = ActiveSheet.Shapes.AddChart2(262, xl3DPie)
        With Graph.Chart
            For j = 1 To 4
                If Sheets("fichier").Cells(i, j) > 0 Then
                    Ctr = Ctr + 1
                    ReDim Preserve Valeurs(Ctr)
                    ReDim Preserve xValeurs(Ctr)
                    Valeurs(Ctr) = Sheets("fichier").Cells(i, j)
                    xValeurs(Ctr) = Sheets("fichier").Cells(1, j)
                End If
            Next j
            .SeriesCollection.NewSeries
            With .SeriesCollection(1)
                .Values = Valeurs
                .XValues = xValeurs
                .Explosion = 40
            End With
        End With
    Next i
     
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je viens d'essayer ton code, j'ai reçu une erreur :

    Erreur d'exécution n° 13 :

    Incompatibilité de type.

    L'erreur viendrait de cette ligne :

    Valeurs(Ctr) = Sheets("fichier").Cells(i, j)

    Je ne comprend pas ce que devrait faire ton code ^^

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Je ne comprend pas ce que devrait faire ton code ^^
    Il récupère les valeurs non nulles et les entêtes correspondants dans les variables Valeurs et xValeurs et construit la série avec.

    Regarde le classeur joint : jeremjerem23.xls
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  5. #5
    Invité
    Invité(e)
    Par défaut
    J'avais cru comprendre le principe de ton code en effet, mais j'ai une erreur quand j'essaie de lancer ta macro avec mon fichier xls.. c'est embetant, étant donné que le résultat que tu obtiens est ce dont j'ai besoin ^^

  6. #6
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Est-ce que tu peux :
    1. préciser ta version d'EXcel
    2. mettre ton classeur - sans données confidentielles en pièce jointe.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  7. #7
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Oups, j'ai oublié le plus important: tu dois mettre la ligne suivante en tête de module :

    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  8. #8
    Invité
    Invité(e)
    Par défaut
    Salut Daniel,

    Tout d'abord, merci de m'aider concernant mon problème !

    La version d'Excel que j'utilise est Excel 2013. J'exporte également mes données sur Word 2013 à titre d'information.

    J'ai donc coller ça en 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
    29
    30
    31
    32
     
     
    Sub Macro4()
    Option Base 1
    Dim NbLig As Integer, Graph As Shape, Valeurs() As Single, xValeurs() As String, Ctr As Integer
        NbLig = Cells.SpecialCells(xlCellTypeLastCell).Row
        Sheets.Add After:=ActiveSheet    'création d'une nouvelle feuille après la feuille active '
    For i = 2 To NbLig
        ReDim Valeurs(1)
        ReDim xValeurs(1)
        Ctr = 0
        Set Graph = ActiveSheet.Shapes.AddChart2(262, xl3DPie)
        With Graph.Chart
            For j = 1 To 4
                If Sheets("fichier").Cells(i, j) > 0 Then
                    Ctr = Ctr + 1
                    ReDim Preserve Valeurs(Ctr)
                    ReDim Preserve xValeurs(Ctr)
                    Valeurs(Ctr) = Sheets("fichier").Cells(i, j)
                    xValeurs(Ctr) = Sheets("fichier").Cells(1, j)
                End If
            Next j
            .SeriesCollection.NewSeries
            With .SeriesCollection(1)
                .Values = Valeurs
                .XValues = xValeurs
                .Explosion = 40
            End With
        End With
    Next i
     
    End Sub
    Cependant, j'obtient maintenant l'erreur suivante :
    Instruction incorrecte dans une procédure

    Je te joins le fichier csv que j'ai actuellement. Seul soucis je l'ai transformé en fichier xlsx car je ne peux envoyer de fichiers csv. fichier.xlsx

  9. #9
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Nan !

    doit être au-dessus de toutes macros et fonctions dans le module :

    Nom : Capture.JPG
Affichages : 235
Taille : 15,8 Ko
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  10. #10
    Invité
    Invité(e)
    Par défaut
    Hum, Erreur d'exécution '13' :
    Incompatibilité de type de nouveau... :/

    J'ai bien ton option base 1 seul pourtant ^^ je ne comprend pas

  11. #11
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    Par défaut
    En fait, contrairement à ton premier exemple, tes cellules ne contenaient pas des zéros, mais des espaces.

    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
    Option Base 1
     
    Sub Macro4()
    Dim NbLig As Integer, Graph As Shape, Valeurs() As Single, xValeurs() As String, Ctr As Integer
        NbLig = Cells.SpecialCells(xlCellTypeLastCell).Row
    For i = 2 To NbLig
        ReDim Valeurs(1)
        ReDim xValeurs(1)
        Ctr = 0
        Sheets.Add After:=ActiveSheet    'création d'une nouvelle feuille après la feuille active '
        Set Graph = ActiveSheet.Shapes.AddChart2(262, xl3DPie)
        With Graph.Chart
            For j = 1 To 4
                'If Sheets("fichier").Cells(i, j) > 0 Then
                Var = Sheets("fichier").Cells(i, j)
                If Sheets("fichier").Cells(i, j) > 0 And IsNumeric(Sheets("fichier").Cells(i, j)) Then
                    Ctr = Ctr + 1
                    ReDim Preserve Valeurs(Ctr)
                    ReDim Preserve xValeurs(Ctr)
                    Valeurs(Ctr) = Sheets("fichier").Cells(i, j)
                    xValeurs(Ctr) = Sheets("fichier").Cells(1, j)
                End If
            Next j
            .SeriesCollection.NewSeries
            With .SeriesCollection(1)
                .Values = Valeurs
                .XValues = xValeurs
                .Explosion = 40
            End With
        End With
    Next i
     
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  12. #12
    Invité
    Invité(e)
    Par défaut
    Salut Daniel,

    C'est presque parfait !

    Une dernière chose, après je te laisse tranquille ! J'ai réussi à mettre mes titres avec la colonne F, donc ça c'est réglé. Mais maintenant, j'aurais aimé définir une couleur de partie de camembert en fonction de la colonne que j'extraie. En gros, je voudrais faire :

    - une partie verte pour la colonne "disponible"
    - une partie rouge pour la colonne "indisponible"
    - une partie bleu pour la colonne "introuvable"
    - une partie grise pour la colonne "indéterminée"
    - une partie violette pour la colonne "maintenance"

    Pour l'instant, c'est assez embêtant, ça va etre bon pour le vert et le rouge si j'ai deux entrées dispo et indispo. Mais si j'ai deux entrées introuvable et maintenance, j'aurais aussi les couleurs vert et rouge ... Tu penses avoir une idée ? (je devrais peut etre recréer un sujet avec ce message non ? ^^)

  13. #13
    Invité
    Invité(e)
    Par défaut
    up svp !

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

    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
    Option Base 1
     
    Sub Macro4()
    Dim NbLig As Integer, Graph As Shape, Valeurs() As Single, xValeurs() As String, Ctr As Integer
    Dim Couleur() As Integer, Couleurs As Variant
    Couleurs = Array(4, 3, 32, 15, 17)
    NbLig = Cells.SpecialCells(xlCellTypeLastCell).Row
    For i = 2 To NbLig
        ReDim Valeurs(1)
        ReDim xValeurs(1)
        ReDim Couleur(1)
        Ctr = 0
        Sheets.Add After:=ActiveSheet    'création d'une nouvelle feuille après la feuille active '
        Set Graph = ActiveSheet.Shapes.AddChart2(262, xl3DPie)
        With Graph.Chart
            For j = 1 To 5
                If Sheets("fichier").Cells(i, j) > 0 And IsNumeric(Sheets("fichier").Cells(i, j)) Then
                    Ctr = Ctr + 1
                    ReDim Preserve Valeurs(Ctr)
                    ReDim Preserve xValeurs(Ctr)
                    ReDim Preserve Couleur(Ctr)
                    Valeurs(Ctr) = Sheets("fichier").Cells(i, j)
                    xValeurs(Ctr) = Sheets("fichier").Cells(1, j)
                    Couleur(Ctr) = Application.Index(Couleurs, j)
                End If
            Next j
            .ChartTitle.Text = Sheets("fichier").Cells(i, 6).Value
            .SeriesCollection.NewSeries
            With .SeriesCollection(1)
                .Values = Valeurs
                .XValues = xValeurs
                .Explosion = 40
                For k = 1 To UBound(Couleur)
                    .Points(k).Interior.ColorIndex = Couleur(k)
                Next k
            End With
        End With
    Next i
     
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  15. #15
    Invité
    Invité(e)
    Par défaut
    Salut Daniel,

    merci beaucoup, c'est exactement ce que je recherchais !

    Un tout dernier point, et ce sera complet. Pour mettre les pourcentages, sait tu comment je devrais procéder ?

    par exemple, si dispo est à 70%, indispo a 20% et maintenance à 10%, comment je pourrais faire pour afficher les taux en plus des parts du camembert ?

  16. #16
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    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 203
    Points : 14 354
    Points
    14 354
    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
    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
    Option Base 1
     
    Sub Macro4()
    Dim NbLig As Integer, Graph As Shape, Valeurs() As Single, xValeurs() As String, Ctr As Integer
    Dim Couleur() As Integer, Couleurs As Variant
    Couleurs = Array(4, 3, 32, 15, 17)
    NbLig = Cells.SpecialCells(xlCellTypeLastCell).Row
    For i = 2 To NbLig
        ReDim Valeurs(1)
        ReDim xValeurs(1)
        ReDim Couleur(1)
        Ctr = 0
        Sheets.Add After:=ActiveSheet    'création d'une nouvelle feuille après la feuille active '
        Set Graph = ActiveSheet.Shapes.AddChart2(262, xl3DPie)
        With Graph.Chart
            For j = 1 To 5
                If Sheets("fichier").Cells(i, j) > 0 And IsNumeric(Sheets("fichier").Cells(i, j)) Then
                    Ctr = Ctr + 1
                    ReDim Preserve Valeurs(Ctr)
                    ReDim Preserve xValeurs(Ctr)
                    ReDim Preserve Couleur(Ctr)
                    Valeurs(Ctr) = Sheets("fichier").Cells(i, j)
                    xValeurs(Ctr) = Sheets("fichier").Cells(1, j)
                    Couleur(Ctr) = Application.Index(Couleurs, j)
                End If
            Next j
            .ChartTitle.Text = Sheets("fichier").Cells(i, 6).Value
            .SeriesCollection.NewSeries
            With .SeriesCollection(1)
                .Values = Valeurs
                .XValues = xValeurs
                .Explosion = 40
                For k = 1 To UBound(Couleur)
                    .Points(k).Interior.ColorIndex = Couleur(k)
                Next k
                .ApplyDataLabels
                With .DataLabels.Format.Fill
                    .Visible = msoTrue
                    .ForeColor.RGB = RGB(255, 255, 255)
                    .Solid
                End With
                With .DataLabels
                    .ShowPercentage = True
                    .ShowValue = False
                End With
            End With
        End With
    Next i
     
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  17. #17
    Invité
    Invité(e)
    Par défaut
    Whaou .... franchement Daniel, je te tire un grand chapeau ! c'est parfait tout ce que tu m'as fais, merci mille fois !

    Je passe en résolu, tu as tout résolu tout seul, merci beaucoup

    Bonne journée

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

Discussions similaires

  1. Masquer les En-tête de Feuilles de données
    Par maxime.jaunatre dans le forum IHM
    Réponses: 1
    Dernier message: 20/05/2011, 15h34
  2. Masquer les borders d'une cellule via un style
    Par Fuggerbit dans le forum BIRT
    Réponses: 1
    Dernier message: 02/02/2010, 12h38
  3. [XL-2003] je veux masquer les cellules
    Par PUARAI dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/04/2009, 21h34
  4. [Impression] Masquer les en-têtes et pieds de pages
    Par Sheriff dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/12/2006, 17h06
  5. masquer les lignes dans une zone si une cellule de la ligne est vide
    Par keguira dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/11/2006, 18h21

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