probleme avec le XValues d'un graphique

  • Initiateur de la discussion christelle
  • Date de début
C

christelle

Guest
bonjour à tous,
j'ai un petit soucis avec l'exécutioàn d'une macro nqui crée un graphique. Pour avoir des données en abscisses, j'ai définit le XValues qui recoit un tableau xi(). Quand j'exécute, l'erreur eszt la suivante: 'impossible de définir la propriété XValues de la classe series'. Je ne sais si ça a de l'importance mais mon type de graphique est: xlXYScatterlines.
Si quelqu'un a une idée il sera le bienvenu, merci d'avance...
 

MichelXld

XLDnaute Barbatruc
bonsoir Christelle

difficile de répondre sans voir ta procedure


ci joint un exemple qui fonctionne chez moi ( Excel2002)


Sub creationGraphiqueParTableau()
Dim i As Byte
Dim Tableau(10) As Integer, Tableau2(10) As Integer

For i = 1 To 10 'tableau abscsisses
Tableau(i) = i * 2
Next i

For i = 1 To 10 'tableau ordonnées
Tableau2(i) = Int((50 * Rnd) + 1)
Next i

Charts.Add
ActiveChart.Location _
Where:=xlLocationAsObject, Name:='Feuil1'
With ActiveChart
.SeriesCollection.NewSeries
.SeriesCollection(1).XValues = Tableau()
.SeriesCollection(1).Values = Tableau2()
.ChartType = xlXYScatterLines
End With

End Sub




Si tu utilises des tableaux pour définir XValues et Values, sauf erreur de ma part , le nombre de caracteres dans la barre de formule de chaque série , est limité à 255 ...



bonne soirée
MichelXld
 

Daetheia

XLDnaute Nouveau
Re : Re:probleme avec le XValues d'un graphique

Bonjour,

je déterre un peu le sujet, je souhaite utiliser le même principe que ce code, sauf que mes tableaux seront variable en taille.
J'ai défini mes tableaux dynamique et j'obtiens le message d'erreur suivant :"impossible de définir la propriété XValues de la classe Series."
Voici mon code
Code:
Sub Transfer_Enregistrements_vers_Excel()
 
 
Dim TheTemporaryArray 'défini un tableau unidmensionel pour la capture des lignes du fichier texte
Dim TheFinalArray() As Variant 'défini un tableau bidmensionel pour l'enregistrement informatique du fichier texte
Dim FileName As Variant 'defini une variable qui contiendra le nom du fichier texte a ouvrir
Dim strRec As String 'defini une variable qui contiendra une ligne du fichier texte
Dim j As Long 'defini une variable qui sera utilisée dans un "compteur" de données
Dim i As Long 'defini une variable qui sera utilisée dans un "compteur" de données
Dim m As Long 'defini une variable qui sera utilisée dans un "compteur" de données
Dim k As Long 'defini une variable qui sera utilisée dans un "compteur" de données
Dim xx As Long 'Defini une variable qui contiendra la limite haute du tableau bidimensionel
 
'*******************************************************
    Dim n As Long
    Dim TabTemps() As Variant, TabVmoy() As Variant
'*******************************************************
 
FileName = Application.GetOpenFilename("Text Files (*.txt),*.txt", , "Select Text Data File") 'Ouvre une fentre de selection de fichier qui permet a l'utilisateur de selectionner le fichier a importer. exclusivement des fichiers texte
 
If FileName = False Then 'Si l'utilisateur n'a pas sélectionner de fichier
 
    Exit Sub 'alors fin de la procedure
 
ElseIf FileName <> False Then 'Si l'utilisateur à sélectionner un fichier
 
    Open FileName For Input As #1 'Ouvre le fichier texte
    Line Input #1, strRec 'Lit une ligne du fichier et enregistre la ligne
    TheTemporaryArray = Split(strRec, Chr(9)) 'Enregistre chaque element de la ligne séparé par un "tab" dans un tableau unidimensionel appellé TheTemporaryArray
    ReDim TheFinalArray(UBound(TheTemporaryArray), LBound(TheTemporaryArray)) 'Précise la dimension du tableau.
    xx = UBound(TheFinalArray) 'enregistre dans une variable la limite haute du tableau - normalement le nombre de "colonnes" du fichier texte  moins 1 car le tableau commence a zero et non pas 1
    Close #1 'ferme le fichier texte. Cela est necessaire pour une future redimension du tableau TheFinalArray
 
    i = 1 'donne la valeur 1 a une variable qui servira dans la definition d'un tableau bidimensionel
 
    Open FileName For Input As #1 'Réouvre le fichier texte
 
    '****** l'étape suivante va etre repetée pour chaque ligne du fichier grace à la commande "Do While...Loop"  *****
 
    Do While Not EOF(1) 'Faire quelque chose jusqu'à temps que l'on arrive à la fin du fichier texte
    Line Input #1, strRec 'Lit une ligne du fichier et enregistre la ligne
    TheTemporaryArray = Split(strRec, vbTab) 'Enregistre chaque element de la ligne séparé par un "tab" dans un tableau unidimensionel appellé TheTemporaryArray
 
    For j = LBound(TheTemporaryArray) To UBound(TheTemporaryArray) 'Pour chaque élément du tableau unidimensionel
 
        TheFinalArray(j, i - 1) = TheTemporaryArray(j) 'l'élément du tableau unidimensionel est entré dans un tableau bidimensionel
 
    Next j 'tourne jusqu'à temps qu'il n'y ai plus d'elements dans le tableau unidimensionel
 
    ReDim Preserve TheFinalArray(xx, i) 'Redimensionne le tableau bidimensionel en y ajoutant une "ligne"
    i = i + 1 'augmemte la variable comptable qui aide a la redimension du tableau bidimensionel
 
    Loop 'repete les etapes precedente pour chaque "ligne" du ficher texte
 
    Close #1 'Ferme le fichier texte
 
    '**** L'etape suivante transfer les données dans EXCEL ****
    'Jusqu'ici toutes les données ont été transferées dans un tableau multidimensionel et non pas diretement dans Excel
 
 
    Sheets("Import de données radar").Activate 'sélectionne l'onglet où les données seront transcrites
    Cells.Select 'selectionne toutes les cellule de l'onglet
    Selection.ClearContents 'efface le contenu des cellules seletionnées
    Cells(1, 1).Select 'retire la selection de toutes les cellules
 
    For k = 0 To xx 'Pour chaque "colonne" du tableau bidimensionel faire....
 
        For m = 0 To (i - 1) 'Pour chaque "ligne" du tableau bidimentionel faire...
 
            Cells(m + 1, k + 1) = TheFinalArray(k, m) 'un transfer de l'element du tableau bidimensionel vers Excel
 
        Next m 'repeter pour chaque "ligne" du tableau bidimensionel
 
    Next k 'repeter pour chaque "colonne" du tableau bidimensionel
 
    Sheets("Menu").Activate 'reselectionne l'onglet avec le bouton
 
End If 'ferme la condition d'execution de la procedure liée à la trouvaille du nom de fichier
 
'*******************************************************************
' Activer la feuille de données
    Sheets("Import de données").Activate
 
' Redimensionner les tableaux
    ReDim TabTemps(xx)
    ReDim TabVmoy(xx)
 
'Création du tableau pour les Abscisses
    For n = 2 To xx
        TabTemps(n) = Cells(n, 1)
    Next n
 
    'Création d'un tableau pour les Ordonnées
    For n = 2 To xx
        'Le tableau est rempli par des valeurs aléatoires pour
        'cet exemple
        TabVmoy(n) = Cells(2, n)
    Next n
 
    'Création graphique
    Charts.Add
    'Définit la localisation du graphique:
    'dans la feuille de calcul Test
    ActiveChart.Location _
    Where:=xlLocationAsObject, Name:="Test"
 
 
   'Ajoute une série dans le graphique
    With ActiveChart
 
 
        .SeriesCollection.NewSeries
        .SeriesCollection(1).XValues = TabTemps() 'Abscisses
        .SeriesCollection(1).Values = TabVmoy() 'Ordonnées
        'Définit le type (Courbe)
        .ChartType = xlLine
    End With
'*******************************************************************
 
End Sub 'fin de la procedure
L'erreur s'affiche pour cette fonction
Code:
.SeriesCollection(1).XValues = TabTemps()
à la fin du code.

Merci d'avance
 

Discussions similaires

Réponses
47
Affichages
4 K

Statistiques des forums

Discussions
312 506
Messages
2 089 111
Membres
104 037
dernier inscrit
damsau