Erreur 9 d'une utilisation de tableaux pour faire un graphique

Bonjour le forum,

J'ai un dictionnaire et je veux faire un graphique des valeurs en fonction des clefs donc je les stocke dans 2 tableaux l'un pour les clefs l'autre les valeurs et que mon code ne marche pas je n'obtiens pas de graphique,si quelqu'un saurait comment résoudre ce problème. Voici le code en question, l'erreur 9 se situe pour les lignes clefs(i) = element et repetitions(i) = nbrele.

Option Explicit
Sub Workbook_Open()
    Dim Wbk As Workbook, Cht As Chart, RngTit As Range, RngDon As Range, _
    ColDate As Long, Col As Long, Sér As Series, Titre As String, ligne As Long, dat As Date, lig As Long
    Dim mot As String, lign As Long, d, t, i&, repetitions() As Variant, clefs() As Variant, compteur As Long, element, nbrele
    Dim graph As Integer
    For Each Wbk In Application.Workbooks
        If Wbk.Name <> ThisWorkbook.Name Then Exit For
    Next Wbk
    Set RngDon = Wbk.Worksheets(1).UsedRange
    For ColDate = 1 To RngDon.Columns.Count + 2
        If IsDate(RngDon(2, ColDate).Value) Then Exit For
    Next ColDate
    If ColDate > RngDon.Columns.Count Then
        ColDate = 1
    End If
    Set RngTit = RngDon.Rows(1)
    Set RngDon = RngDon.Rows(2).Resize(RngDon.Rows.Count - 1)

    For Col = 1 To RngTit.Columns.Count
        If Col <> ColDate Then
            If VarType(RngDon.Cells(1, Col).Value) = 8 Then
                Set d = CreateObject("Scripting.Dictionary")
                For lign = 1 To RngDon.Rows.Count
                    mot = RngDon.Cells(lign, Col)
                    If Not d.exists(mot) Then
                        d.Add mot, 1
                        compteur = compteur + 1
                    Else
                        d(mot) = d(mot) + 1
                    End If
                Next lign
                i = 1
                ReDim clef(compteur)
                For Each element In d.Keys
                   clefs(i) = element
                   i = i + 1
                Next element
                i = 1
                ReDim repetitions(compteur)
                For Each nbrele In d.items
                    repetitions(i) = nbrele
                    i = i + 1
                Next nbrele
                Titre = RngTit.Columns(Col)
                On Error Resume Next
                Set Cht = Wbk.Charts(Titre)
                If Err Then Set Cht = Wbk.Charts.Add: Cht.Name = Titre
                With Cht.SeriesCollection
                    Do While .Count > 1: .Item(1).Delete: Loop
                    Err.Clear: Set Sér = .Item(1): If Err Then Set Sér = .NewSeries
                    End With
                On Error GoTo 0
                If UBound(t) = 1 Then Exit For
                Sér.XValues = repetitions
                Sér.Values = clefs
                Sér.Name = RngTit.Columns(Col)
                Cht.ChartType = xlPie
                Cht.ChartStyle = 259
                d.RemoveAll
                Erase repetitions, clefs
      end if          
          end if
  end sub
  

merci de vos réponses

Bonjour,

1 - Tu as des variables déclarées non-utilisées (ligne,dat et graph)

2 - Il manque Next Col en fin de procédure

3 - Essaie de remplacer i=1 par i=0 quand tu boucles sur clef et repetition

Cdlt.

bonjour c'est un morceau de code et pour vos 2 premiers points il n'y a pas de soucis. Par contre que i commence à 0 ne change pas l'erreur.

Re,

Joins un classeur !...

Cdlt.

c'est le fichier contenant la macro. La macro agit sur un autre fichier contenant un tableau qui doit être ouvert avant la macro. Elle fait des graphiques, j'ai différencier les mots et nombres que peuvent avoir les colonnes en tant que données et les nombres marchent avec un graphique en fonction du temps ou première colonne si il n'y a pas de temps mais pour les mots je veux faire un graphique du nombre de répétitions des mots en fonction des différents mots.

Re,

Et elles sont où les données à traiter ?

Pas de bras, pas de chocolat.

Cdlt.

Voilà juste j'avais oublié de les mettre mais en fait c'est des données d'entreprise. Je les ai modifié mais ça suffit pour avoir le problème avec du texte.

4test11.xlsx (8.62 Ko)

Re,

On va faire court :

Pourquoi de pas créer un graphique croisé dynamique (associé à un tableau croisé dynamique) ?

Que doit représenter le graphique ?

Cdlt.

J'ai commencé avec ce type de graphique car j'ai débuté le vba avec cette macro donc pas pensé à faire de graphiques dynamiques. Le graphique permet de mieux lire les données des tableaux qui sont de tailles variables et peuvent avoir plusieurs centaines de ligne des fois. J'ai fait des graphiques simples d'une colonne en fonction de la date ou première colonne si il n'y a pas de date

Re,

Réponds à la question : Quel type de graphique souhaites-tu ? Quelles données doivent être représenter ?

VBA n'est certainement la solution !...

Cdlt.

Je souhaite un type de graphique pour les colonnes avec du texte un camembert du nombre d'itérations de chaque mot en fonction des mots et pour les valeurs au choix de la personne qui utilise entre courbe histogramme et camembert et en données une colonne de nombres en fonction de la colonne date et si il n'y a pas de date on prend la première colonne.

Mon problème a-t-il quand même une solution ?

Rechercher des sujets similaires à "erreur utilisation tableaux graphique"