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 :

Mise en forme barre d'erreur par macro [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Mise en forme barre d'erreur par macro
    Bonjour à tous,

    J'ai un petit graphique qui se crée automatiquement par macro et je voudrais, dans le même temps, intégré une barre de seuil sur l'axe Y, à une valeur donnée.
    Ca, ça tourne, en partie grâce au infos trouvées sur le forum.
    J'ai en effet créé cette barre de seuil en insérant une nouvelle série à laquelle j'ai ajouté une barre d'erreur sur la largeur du graph.

    Le petit problème que j'ai réside dans la mise en forme de cette barre d'erreur. En effet, dans ma macro (copiée en directe pourtant) la mise en forme ne se fait que sur la barre d'erreur verticale, et non pas horizontale.

    Voici le code en question :
    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
     
    Sub Barre_erreur()
     
        ActiveSheet.ChartObjects("Graphique BFu").Activate
        ActiveChart.PlotArea.Select
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(8).Values = "=Données!$I$1"
        ActiveChart.SeriesCollection(8).Select
        ActiveChart.SeriesCollection(8).ChartType = xlXYScatterLinesNoMarkers
        ActiveChart.SeriesCollection(8).Select
        ActiveChart.SeriesCollection(8).HasErrorBars = True
        ActiveChart.SeriesCollection(8).ErrorBars.Select
        ActiveChart.SeriesCollection(8).ErrorBar Direction:=xlY, Include:= _
            xlMinusValues, Type:=xlFixedValue, Amount:=1
                With Selection.Format.Line
            .Visible = msoTrue
            .ForeColor.RGB = RGB(255, 0, 0)
        End With
        With Selection.Format.Line
            .Visible = msoTrue
            .Weight = 1.5
        End With
        ActiveChart.SeriesCollection(8).ErrorBars.Select
        ActiveChart.SeriesCollection(8).ErrorBars.EndStyle = xlNoCap
     
        ActiveChart.SeriesCollection(8).ErrorBar Direction:=xlX, Include:= _
            xlPlusValues, Type:=xlFixedValue, Amount:=(ThisWorkbook.ActiveSheet.Range("I2").Value)
          With Selection.Format.Line
            .Visible = msoTrue
            .ForeColor.RGB = RGB(255, 0, 0)
            .Transparency = 0
        End With
     
    End Sub
    La barre d'erreur reste invariablement noire et fine.

    Merci.

    Citizen

  2. #2
    Invité
    Invité(e)
    Par défaut Utiliser la propriété .weight
    Bonjour,

    Utilisez la propriété Weight de Line pour l'épaisseur du trait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     ActiveChart.SeriesCollection(8).ErrorBar Direction:=xlX, Include:= _
            xlPlusValues, Type:=xlFixedValue, Amount:=(ThisWorkbook.ActiveSheet.Range("I2").Value)
          With Selection.Format.Line
            .Visible = msoTrue
     
            .Weight = 3  ' Epaisseur 3 points par exemple
     
            .ForeColor.RGB = RGB(255, 0, 0)
            .Transparency = 0
        End With
    Astuce : En ce qui concerne les 3 paramètres de la fonction RGB pour la couleur de la ligne, il vous suffit de sélectionner sur une cellule la couleur de remplissage souhaitée.
    Puis d'aller voir dans le menu Accueil, dans la zone Police, choisir l'icone Couleur de remplissage, avec la liste déroulante en bas de la boite de dialogue, sélectionner Autres couleurs.

    Les 3 paramètres sont indiqués dans l'onglet Personnalisées. Il vous suffit de reporter ces 3 valeurs dans votre code.

    Cordialement.

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Bonjour Eric,

    Merci pour la réponse, mais même en ajoutant Weight, l'épaisseur de trait de change pas. En fait, cela ce comporte comme si tout ce bloc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    With Selection.Format.Line
            .Visible = msoTrue
            .Weight = 3 
            .ForeColor.RGB = RGB(255, 0, 0)
            .Transparency = 0
    End With
    était ignoré, ma barre d'erreur horizontale reste noire et d'épaisseur standard, alors que si je copie le même code pour ma barre d'erreur verticale, celle-ci prendra bien les paramètres de taille et de couleur voulus.

    Petite correction de ma part.
    Après plusieurs essais, il s'avèrent que les blocs de mise en forme With / End with s'annulent l'un l'autre, et que seul le dernier de ces blocs est pris en compte, uniquement sur la barre d'erreur verticale.
    Le "with" ne tiens pas compte du "select". Seule la barre d'erreur verticale est impactée par des modifs.

  4. #4
    Invité
    Invité(e)
    Par défaut Créez une macro et modifiez manuellement les propriétés de la barre
    Astuce : Lorsque vous ne voyez pas pourquoi cela ne marche pas, créez une nouvelle macro et modifiez manuellement la barre qui vous pose problème. Une fois corrigée (épaisseur, couleur), fermez la macro et allez voir le résultat avec l'éditeur VBA. Votre macro a sans doute généré un nouveau module.

    La macro a généré les codes qui vous permettront de voir l'objet qui a été modifié. Il vous suffira de les transposer dans votre code.

    Cordialement.

  5. #5
    Candidat au Club
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Bonjour Eric,

    La trame de mon code a été obtenue en enregistrant une nouvelle macro. J'ai ensuite adapté le code aux cellules qui m'interessaient mais je n'ai pas touché au code de mise en forme.
    La est tout le problème ^^

  6. #6
    Invité
    Invité(e)
    Par défaut Quel est l'objet formaté dans votre nouvelle macro ?
    Bonjour,

    Il faut créer une nouvelle macro qui agit sur l'objet ligne à modifier dans votre graphique. De cette façon, vous verrez le nom de l'objet ligne qui doit être sélectionné dans votre code d'origine.

    Pouvez-vous ensuite mettre en ligne le code de votre nouvelle macro où apparaît la sélection de la ligne pour comparer avec le code d'origine ?

    Cordialement.
    Dernière modification par Invité ; 23/04/2013 à 08h28.

  7. #7
    Candidat au Club
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    J'ai pris uniquement la barre d'erreur horizontale et voici le code que j'ai obtenu :

    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
        ActiveSheet.ChartObjects("Graphique BFu").Activate
        ActiveChart.SeriesCollection(8).ErrorBars.Select
        With Selection.Format.Line
            .Visible = msoTrue
            .ForeColor.ObjectThemeColor = msoThemeColorAccent1
            .ForeColor.TintAndShade = 0
            .ForeColor.Brightness = 0
        End With
        With Selection.Format.Line
            .Visible = msoTrue
            .ForeColor.RGB = RGB(255, 0, 0)
            .Transparency = 0
        End With
        With Selection.Format.Line
            .Visible = msoTrue
            .Weight = 2
        End With
    End Sub
    Cela reste très général (errorbars.select) et ne s'applique encore qu'à la barre d'erreur verticale, par défaut.
    Une execution pas à pas me montre bien que la commande errorbars.select ne porte que sur la verticale.

  8. #8
    Invité
    Invité(e)
    Par défaut Utiliser les propriétés .Weight et .Color de ErrorBar.Border
    Il faut utiliser les propriétés Weight et Color de l'objet Border de la barre d'erreur. Attention, la propriété Weight ne supporte que 4 tailles préparamétrées xlHairline, xlThin, xlMedium, xlThick.

    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 Barre_erreur()
    ' Barre_erreur Macro
     
        ActiveSheet.ChartObjects("Graphique BFu").Activate
        ActiveChart.PlotArea.Select
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection(8).Values = "=Données!$I$1"
        ActiveChart.SeriesCollection(8).Select
        ActiveChart.SeriesCollection(8).ChartType = xlXYScatterLinesNoMarkers
        ActiveChart.SeriesCollection(8).Select
        ActiveChart.SeriesCollection(8).HasErrorBars = True
        ActiveChart.SeriesCollection(8).ErrorBars.Select
     
        ActiveChart.SeriesCollection(8).ErrorBar Direction:=xlY, Include:=xlMinusValues, Type:=xlFixedValue, Amount:=1
        With Selection.Border
            .Weight = xlThick   ' 4 valeurs possibles xlHairline, xlThin, xlMedium, xlThick
            .Color = RGB(179, 162, 199)
        End With
     
        ActiveChart.SeriesCollection(8).ErrorBars.Select
        ActiveChart.SeriesCollection(8).ErrorBars.EndStyle = xlNoCap
     
        ActiveChart.SeriesCollection(8).ErrorBar Direction:=xlX, Include:= _
            xlPlusValues, Type:=xlFixedValue, Amount:=(ThisWorkbook.ActiveSheet.Range("I2").Value)
     
         With Selection.Border
            .Weight = xlThick   ' 4 valeurs possibles xlHairline, xlThin, xlMedium, xlThick
            .Color = RGB(255, 0, 0)
        End With
     
     
    End Sub
    Cordialement.

  9. #9
    Candidat au Club
    Inscrit en
    Avril 2013
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Pour tous les futurs lecteurs, je confirme, cela marche.

    Un grand merci à Eric.

    Citizen

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

Discussions similaires

  1. Mise en forme des fichiers générés par la macro
    Par soflab31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/03/2015, 12h11
  2. Mise en forme message d'erreur
    Par Lenou dans le forum Langage
    Réponses: 3
    Dernier message: 17/08/2009, 10h01
  3. Réponses: 6
    Dernier message: 25/06/2009, 22h22
  4. [E00] barre de menu par macro
    Par zandru dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/02/2009, 10h34
  5. [XSLT]Mise en forme d'un tableau par categorie
    Par dibox dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 06/12/2006, 16h42

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