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 :

Couleurs de graphiques conditionnées - Propriété ou méthode non supportée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingenieur Securite
    Inscrit en
    Mai 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingenieur Securite
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 97
    Par défaut Couleurs de graphiques conditionnées - Propriété ou méthode non supportée
    Bonjour le forum,

    J'ai un point bloquant lors de l'éxécution d'un Private sub dans un userform, pour changer la couleur des barres de graphique de barres empilées suivant les valeurs.
    Lors de l'éxécution de celui-ci j'ai un essage d'erreur "438 - Propriété ou méthode non supportée".

    NB : Mes variables "Ch", "i", "Wb1" et "Ws1" sont déclarées en public dans le module de classe.

    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
    Private Sub Chart_Activate()
     
    Set Wb1 = Workbooks("Book1.xlsb")
    Set Ws2 = Wb1.Worksheets("Sheet 1")
     
    Application.ScreenUpdating = False
     
    Set Ch = Worksheets("Charts").ChartObjects("Participation").Chart
     
    With Ch
        With .SeriesCollection(1)
            For i = 1 To .Points.Count
                If .SeriesCollection(1).Value >= 2 Then
                    .Points(i).ForeColor.RGB = RGB(0, 176, 80)
                ElseIf .SeriesCollection(1).Value = 1 Then
                    .Points(i).ForeColor.RGB = RGB(255, 153, 51)
                ElseIf .SeriesCollection(1).Value = 0 Then
                    .SetElement (msoElementDataLabelCenter)
                    With Selection.Format.TextFrame2.TextRange.Font.Fill
                        .Visible = msoTrue
                        .ForeColor.RGB = RGB(255, 0, 0)
                        .Transparency = 0
                        .Solid
                    End With
                    Selection.Format.TextFrame2.TextRange.Font.Italic = msoTrue
                End If
            Next i
        End With
        With .FullSeriesCollection(2).Select
            With Selection.Format.Line
                .Visible = msoTrue
                .ForeColor.RGB = RGB(0, 112, 192)
                .Transparency = 0
            End With
        End With
    End With
    End Sub
    L'objet du Private sub est de modifier les couleurs des barres du graphique supérieures ou égales 2 en Vert, égales à 1 en Orange et égales à 0 afficher les données et les formater.

    Les données sont issues d'un tableau situé sur une autre feuille.

    Merci par avance pour votre participation.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par pimpom81 Voir le message
    Lors de l'éxécution de celui-ci j'ai un essage d'erreur "438 - Propriété ou méthode non supportée".
    Quelle est la ligne désignée par le débugage ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Ch
        With .SeriesCollection(1)
            For i = 1 To .Points.Count
                If .SeriesCollection(1).Value >= 2 Then
    Je pense que le second .SeriesCollection(1) n'est pas convenable puisqu'il est membre de ... .SeriesCollection(1).
    Il est probable que tu as oublié de corriger cette ligne quand tu as mis en place le second With.

    Idem dans les lignes suivantes.

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingenieur Securite
    Inscrit en
    Mai 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingenieur Securite
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 97
    Par défaut
    Bonjour Menhir,

    Le débugage désigne la ligne 13.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par pimpom81 Voir le message
    Le débugage désigne la ligne 13.
    Voir la fin de mon message précédent.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingenieur Securite
    Inscrit en
    Mai 2012
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingenieur Securite
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 97
    Par défaut
    J'ai le même message d'erreur avec la correction suivante, d'après la réponse de Menhir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Ch
        With .SeriesCollection(1)
            For i = 1 To .Points.Count
                If .Value >= 2 Then

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Par défaut
    Bonjour le file,


    . value n'est pas une propriété de SeriesCollection !!!

    pour travailler avec les valeurs des points c'est un peu plus compliqué car on ne peu pas non plus passer par l'objet point.
    Les valeurs sont associées à la seriescollection sous la forme d'un tableau de type array.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub demo()
    Dim SerieValues As Variant, i As Long
     
    SerieValues = ActiveChart.SeriesCollection(1).Values 'ceci va dimensionner en variable tableau la variable SerieValues
     
    For i = 1 To UBound(SerieValues)
        Debug.Print SerieValues(i)
    Next
    End Sub

Discussions similaires

  1. propriété ou méthode non géré par cet objet
    Par titeZ dans le forum VBA Access
    Réponses: 6
    Dernier message: 05/10/2007, 15h26
  2. Propriété ou méthode non-gérée
    Par abennis dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/06/2007, 15h18
  3. Propriété ou méthode non gérée par cet objet
    Par abennis dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/06/2007, 17h59
  4. propriété ou méthode non gérée par cet objet
    Par Elstak dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/05/2007, 21h23
  5. Erreur:Propriété ou méthode non gérée par cet objet.
    Par nodogeid dans le forum VBA Access
    Réponses: 2
    Dernier message: 22/05/2007, 17h08

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