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 :

Erreurs aléatoires sur graphique à bulles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de RGShoop
    Homme Profil pro
    Freelance
    Inscrit en
    Août 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 112
    Par défaut Erreurs aléatoires sur graphique à bulles
    Bonjour à tous,

    Voilà mon souci, je dois réaliser une suite de tableaux de bord et il y en a un qui me casse la tête.....

    Pour pallier mes explications confuses, je vous joins l'excel en question.

    A partir d'une liste dynamique, le graphique doit se mettre à jour seulement cela marche pour une partie des données et foire complètement pour certains.

    Voici mon code, merci de me dire où je me trompe :

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    Private Sub CommandButton1_Click()
     
     
    On Error GoTo GraphErr:
     
     
            Dim xlBook As Excel.Workbook
            Dim xlSheet As Excel.Worksheet
            Dim xlChart As Excel.ChartObject
            Dim ns As Series
     
            Set xlBook = ActiveWorkbook
            Set xlSheet = xlBook.ActiveSheet
     
            Dim Graph As Variant
     
            For Each Graph In xlSheet.ChartObjects
                Debug.Print Graph.Name
            Next Graph
     
            Set xlChart = xlSheet.ChartObjects("Chart 2")
     
            Dim Formule As String
            Dim intLikelihood As Variant
            Dim intFrequency As Variant
            Dim NomSerie As String
     
            'On vide les séries du graphique
           For Each ns In xlChart.Chart.SeriesCollection
            If ns.Name <> "Blank" Then
            ns.Delete
            End If
           Next ns
     
            Range("A2:G" & ActiveSheet.Range("C2").End(xlDown).Row).Font.Bold = False
     
     
     
           With xlChart.Chart
                .HasTitle = True
                .ChartTitle.Text = "Recommendation"
               .ChartType = xlBubble3DEffect
            End With
     
        For I = 2 To ActiveSheet.Range("C2").End(xlDown).Row
     'on désigne les données pour le graphe
     Range("A" & I & ":G" & I).Font.Bold = False
     
                If ActiveSheet.Range("G" & I) = "X" Then
     
                    intFrequency = IIf((ActiveSheet.Range("D" & I)) = 0, -1, ActiveSheet.Range("D" & I))
                    intLikelihood = IIf((ActiveSheet.Range("E" & I)) = 0, -1, ActiveSheet.Range("E" & I))
                    Formule = "=DashBoard_E!R" & I & "C6"
                    NomSerie = ActiveSheet.Range("B" & I)
     
                    'Ajoute une série dans le graphique
                    Debug.Print ActiveSheet.Range("B" & I); ActiveSheet.Range("D" & I); ActiveSheet.Range("E" & I); Formule
     
                    With xlChart.Chart
                            .SeriesCollection.NewSeries
                            .SeriesCollection(I).Name = NomSerie
                            .SeriesCollection(I).XValues = intFrequency
                            .SeriesCollection(I).Values = intLikelihood
                            .SeriesCollection(I).BubbleSizes = Formule
                            .SeriesCollection(I).DataLabels.AutoScaleFont = True
                                    With .SeriesCollection(I).DataLabels.Font
                                        .Name = "Trebuchet MS"
                                        .FontStyle = "Gras"
                                        .Size = 8
                                        .Strikethrough = False
                                        .Superscript = False
                                        .Subscript = False
                                        .OutlineFont = False
                                        .Shadow = False
                                        .Underline = xlUnderlineStyleNone
                                        .ColorIndex = xlAutomatic
                                        .Background = xlAutomatic
                                    End With
                            End With
                    End If
                  Range("A" & I & ":G" & I).Font.Bold = True
        Next I
     
    MsgBox "Fin'"
     
     
    Exit Sub
    GraphErr:
     
    MsgBox Err.Number & Chr(10) & Err.Description & Chr(10) & ActiveSheet.Range("B" & I) & ActiveSheet.Range("D" & I) & ActiveSheet.Range("E" & I) & Formule
     
     
    End Sub

    merci de vos regards sur le sujet car le mien est vraiment embrouillé,

    A+ RGShoop
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé Avatar de RGShoop
    Homme Profil pro
    Freelance
    Inscrit en
    Août 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 112
    Par défaut
    Re,

    Ca y est, j'ai trouvé, pour info et ceux que cela interressent :

    1/ J'ai déclarer une variable de type 'series'
    2/ J'ai remplacé par cette variable le ".SeriesCollection(I)." par cette variable

    Ci joint le code corrigé:

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    On Error GoTo GraphErr:
     
            Dim xlBook As Excel.Workbook
            Dim xlSheet As Excel.Worksheet
            Dim xlChart As Excel.ChartObject
            Dim MaSerie As Series
            Dim ns As Series
     
            Set xlBook = ActiveWorkbook
            Set xlSheet = xlBook.ActiveSheet
     
            Dim Graph As Variant
     
            For Each Graph In xlSheet.ChartObjects
                Debug.Print Graph.Name
            Next Graph
     
            Set xlChart = xlSheet.ChartObjects("Chart 2")
     
            Dim Formule As String
            Dim intLikelihood As Variant
            Dim intFrequency As Variant
            Dim NomSerie As String
     
     
    'On vide les séries du graphique
           For Each ns In xlChart.Chart.SeriesCollection
            If ns.Name <> "Blank" Then
            ns.Delete
            End If
           Next ns
     
    Sheets("DashBoard_E").Range("A2:G" & ActiveSheet.Range("C2").End(xlDown).Row).Font.Bold = False
     
           With xlChart.Chart
                .HasTitle = True
                .ChartTitle.Text = "Recommendation"
               .ChartType = xlBubble3DEffect
            End With
     
    For I = 2 To ActiveSheet.Range("C2").End(xlDown).Row
    'on désigne les données pour le graphe
    Range("A" & I & ":G" & I).Font.Bold = False
     
                If ActiveSheet.Range("G" & I) = "X" Then
     
                    intFrequency = IIf((ActiveSheet.Range("D" & I)) = 0, -1, ActiveSheet.Range("D" & I))
                    intLikelihood = IIf((ActiveSheet.Range("E" & I)) = 0, -1, ActiveSheet.Range("E" & I))
                    Formule = "=DashBoard_E!R" & I & "C6"
                    NomSerie = ActiveSheet.Range("B" & I)
     
                    'Ajoute une série dans le graphique
                    Debug.Print ActiveSheet.Range("B" & I); ActiveSheet.Range("D" & I); ActiveSheet.Range("E" & I); Formule
     
                    With xlChart.Chart
                            Set MaSerie = .SeriesCollection.NewSeries
                            MaSerie.Name = NomSerie
                            MaSerie.XValues = intFrequency
                            MaSerie.Values = intLikelihood
                            MaSerie.BubbleSizes = Formule
                            MaSerie.DataLabels.AutoScaleFont = True
     
                                    With MaSerie.DataLabels.Font
                                        .Name = "Trebuchet MS"
                                        .FontStyle = "Gras"
                                        .Size = 8
                                        .Strikethrough = False
                                        .Superscript = False
                                        .Subscript = False
                                        .OutlineFont = False
                                        .Shadow = False
                                        .Underline = xlUnderlineStyleNone
                                        .ColorIndex = xlAutomatic
                                        .Background = xlAutomatic
                                    End With
     
                        End With
     
                  Range("A" & I & ":G" & I).Font.Bold = True
     
    End If
     
        Next I
     
    MsgBox "Fin'"
     
     
    Exit Sub
    GraphErr:
     
    MsgBox Err.Number & Chr(10) & Err.Description & Chr(10) & ActiveSheet.Range("B" & I) & ActiveSheet.Range("D" & I) & ActiveSheet.Range("E" & I) & Formule
    A+ RG

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

Discussions similaires

  1. Message d'erreur aléatoire sur Form.Visible
    Par bvsud dans le forum Langage
    Réponses: 5
    Dernier message: 07/12/2012, 21h44
  2. [Vxi3] Erreur aléatoire sur LOV
    Par NorocBzh dans le forum Webi
    Réponses: 2
    Dernier message: 23/12/2011, 08h12
  3. Erreur aléatoire sur File.delete
    Par davelop dans le forum ASP.NET
    Réponses: 5
    Dernier message: 11/12/2009, 17h07
  4. Erreur aléatoire sur une fonction
    Par defluc dans le forum Firebird
    Réponses: 8
    Dernier message: 10/09/2007, 16h34
  5. Erreur aléatoire sur l'écriture d'un fichier
    Par Jorael dans le forum Delphi
    Réponses: 23
    Dernier message: 12/02/2007, 10h35

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