Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/11/2011, 12h40   #1
Candidat au titre de Membre du Club
 
Homme Yannick Bouvet
Technicien R&D électronique
Inscription : novembre 2011
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Yannick Bouvet
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Technicien R&D électronique
Secteur : Industrie

Informations forums :
Inscription : novembre 2011
Messages : 33
Points : 11
Points : 11
Bonjour,
Je souhaite créer un graphique à partir de tableaux dynamique, j'ai donc donc suivi le tuto du site qui dit ceci
Code :
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 creationGraphiqueParTableau()
    Dim i As Byte
    Dim Tableau(10) As Integer, Tableau2(10) As Integer
 
    'Création du tableau pour les Abscisses
    For i = 1 To 10
        Tableau(i) = i * 2
    Next i
 
    'Création d'un tableau pour les Ordonnées
    For i = 1 To 10
        'Le tableau est rempli par des valeurs aléatoires pour
        'cet exemple
        Tableau2(i) = Int((50 * Rnd) + 1)
    Next i
 
    'Création graphique
    Charts.Add
    'Définit la localisation du graphique:
    'dans la feuille de calcul Feuil1 pour cet exemple
    ActiveChart.Location _
    Where:=xlLocationAsObject, Name:="Feuil1"
 
    'Ajoute une série dans le graphique
    With ActiveChart
        .SeriesCollection.NewSeries
        .SeriesCollection(1).XValues = Tableau() 'Abscisses
        .SeriesCollection(1).Values = Tableau2() 'Ordonnées
        'Définit le type (Courbe)
        .ChartType = xlLine
    End With
End Sub
Je l'ai adapté à mon code comme ceci
Code :
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
' 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
et j'ai une erreur au niveau de la fonction
Code :
.SeriesCollection(1).XValues = TabTemps()
qui me dit :"erreur définit par l'application ou par l'objet"
Je ne comprend pas pourquoi mon code ne fonctionne pas alors que celui de base fonctionne très bien.

Merci d'avance

Pardon l'erreur produite est :"impossible de définir la propriété XValues de la classe Series."
Daetheia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 12h48   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Où est défini la variable "xx" ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/11/2011, 13h00   #3
Candidat au titre de Membre du Club
 
Homme Yannick Bouvet
Technicien R&D électronique
Inscription : novembre 2011
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Yannick Bouvet
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Technicien R&D électronique
Secteur : Industrie

Informations forums :
Inscription : novembre 2011
Messages : 33
Points : 11
Points : 11
Elle est définit plus dans mon programme en tant que Long, elle correspond à la hauteur du tableau de donnée
Daetheia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 13h10   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Au temps pour moi. Je voulais dire où est-elle initialisée ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/11/2011, 13h30   #5
Candidat au titre de Membre du Club
 
Homme Yannick Bouvet
Technicien R&D électronique
Inscription : novembre 2011
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Yannick Bouvet
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Technicien R&D électronique
Secteur : Industrie

Informations forums :
Inscription : novembre 2011
Messages : 33
Points : 11
Points : 11
Voici le code
Code :
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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
Daetheia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 14h42   #6
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Mets une ligne :

avant la ligne (ligne 89) :

et poste ici la valeur affichée.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/11/2011, 14h48   #7
Candidat au titre de Membre du Club
 
Homme Yannick Bouvet
Technicien R&D électronique
Inscription : novembre 2011
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Yannick Bouvet
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Technicien R&D électronique
Secteur : Industrie

Informations forums :
Inscription : novembre 2011
Messages : 33
Points : 11
Points : 11
Cela m'affiche 4
Daetheia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 15h17   #8
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
A priori, ça a l'air correct. Est-ce que tu peux mettre un classeur exemple en pièce jointe ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/11/2011, 15h33   #9
Candidat au titre de Membre du Club
 
Homme Yannick Bouvet
Technicien R&D électronique
Inscription : novembre 2011
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Yannick Bouvet
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Technicien R&D électronique
Secteur : Industrie

Informations forums :
Inscription : novembre 2011
Messages : 33
Points : 11
Points : 11
Test.xls

essaiCSVtext.txt

Il faut mettre le fichier text sur le bureau et aller le chercher en cliquant sur le bouton "Importer les données radar"
Normalement un graph doit s'afficher dans la feuille Test
Daetheia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2011, 16h40   #10
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Le problème ne se produit pas avec XL2010. Avec XL2003, le tableau servant aux abscisses (et vraisemblablement aux ordonnées) doit être rempli depuis la première valeur (TabTemps(0). Les lignes suivantes fonctionnent :


Code :
1
2
3
4
'Création du tableau pour les Abscisses
    For n = 2 To xx
        TabTemps(n - 2) = Cells(n, 1)
    Next n
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/11/2011, 11h08   #11
Candidat au titre de Membre du Club
 
Homme Yannick Bouvet
Technicien R&D électronique
Inscription : novembre 2011
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Yannick Bouvet
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Technicien R&D électronique
Secteur : Industrie

Informations forums :
Inscription : novembre 2011
Messages : 33
Points : 11
Points : 11
Merci beaucoup Daniel.
Cela m'affiche bien mon graph !

Je rencontre néanmoins un problème...
J'ai l'impression que la fonction :
Code :
.SeriesCollection(1).XValues = TabTemps()
est limiter en taille. Car quand je rajoute des lignes dans mon fichier texte j'ai le message d'erreur suivant au bout d'un certain nombre de ligne rajouté.
Erreur :"impossible de définir la propriété XValues de la classe Series."

Y a t'il un moyen de contourner ce problème ?
ou alors de changer de fonction ?

Par exemple dans ce code
Code :
1
2
ActiveChart.SetSourceData Source:=Sheets("Import de données").Range( _
        "A1:A6,E1:E6"), PlotBy:=xlColumns
Ce qu'il me faudrait en fait, c'est au lieu de mettre une selection dans Range(), mettre un tableau.
Remplacer A1:A6 par un premier tableau de donnée, et remplacer E1:E6 par un deuxième.
Est-ce que cela semble possible ?
Daetheia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 11h48   #12
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Esssaie comme ça. Ca casse moins de choses et ton graphique s'ajuste quelque soit le nombre de valeurs et d'abscisses :

Code :
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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 radar").Activate
 
' Redimensionner les tableaux
'Création du tableau pour les Abscisses
    TabTemps = Application.Transpose(Range([A2], Cells(Rows.Count, 1).End(xlUp)))
    'Création d'un tableau pour les Ordonnées
    TabVmoy = Application.Transpose(Range([E2], Cells(Rows.Count, 5).End(xlUp)))
 
    '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
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/11/2011, 12h18   #13
Candidat au titre de Membre du Club
 
Homme Yannick Bouvet
Technicien R&D électronique
Inscription : novembre 2011
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Yannick Bouvet
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Technicien R&D électronique
Secteur : Industrie

Informations forums :
Inscription : novembre 2011
Messages : 33
Points : 11
Points : 11
Merci.
C'est vrai que l'ajustement est mieux que dans la version précédente.
Je teste si je peux traiter suffisamment de données avec cette méthode et te tiens au courant.

Je viens de tester, je ne gagne qu'une seule ligne? ce qui me fait 15. J'ai besoin de beaucoup plus, de l'ordre de 20 000 lignes à mettre en graphe
Daetheia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 12h38   #14
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Remets un nouveau fichier texte avec plus de lignes en pièce jointe s'il te plaît.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/11/2011, 12h45   #15
Candidat au titre de Membre du Club
 
Homme Yannick Bouvet
Technicien R&D électronique
Inscription : novembre 2011
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Yannick Bouvet
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Technicien R&D électronique
Secteur : Industrie

Informations forums :
Inscription : novembre 2011
Messages : 33
Points : 11
Points : 11
essaiCSVtext.txt

Merci encore
Daetheia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 14h30   #16
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Cette macro semble fonctionner :

Code :
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
94
95
96
97
98
99
100
101
102
103
104
105
106
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 DerLig As Long
Dim Plage As Range
 
'*******************************************************
    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 radar").Activate
    DerLig = Cells(Rows.Count, 1).End(xlUp).Row
    Set Plage = Range("A2:A" & DerLig)
    Set Plage = Union(Plage, Plage.Offset(, 4))
    Var = Plage.Address
' Redimensionner les tableaux
    'TabTemps = Application.Transpose(Range([A2], Cells(Rows.Count, 1).End(xlUp)))
 
'Création du tableau pour les Abscisses
 
    'Création d'un tableau pour les Ordonnées
    'TabVmoy = Application.Transpose(Range([E2], Cells(Rows.Count, 5).End(xlUp)))
 
    'Création graphique
    Charts.Add
    With ActiveChart
        .ChartType = xlLine
        .SetSourceData Source:=Plage, PlotBy:=xlColumns
        .Location Where:=xlLocationAsObject, Name:="Test"
    End With
'*******************************************************************
 
End Sub 'fin de la procedure
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/11/2011, 15h42   #17
Candidat au titre de Membre du Club
 
Homme Yannick Bouvet
Technicien R&D électronique
Inscription : novembre 2011
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Yannick Bouvet
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Technicien R&D électronique
Secteur : Industrie

Informations forums :
Inscription : novembre 2011
Messages : 33
Points : 11
Points : 11
Effectivement, j'ai testé avec un nombre de données plus important et ce la ne pose pas de souci pour afficher les graphes.

Un grand merci pour ton aide

Si ce n'est pas abusé j'aurais une autre question.
Comment faire pour afficher plusieurs courbes sur le même graphe en fonctions du temps avec les fonctions tu as trouvé ?
Pour mon cas ce serait pour comparer la vitesse min et max sur un même graphe par exemple.

Si tu as des liens sur ces fonctions cela m’intéresse !

Merci encore
Daetheia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 16h16   #18
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Voila, sauf que, chez moi, les couleurs des courbes sont hyper nulles :

Code :
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
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 DerLig As Long
Dim Plage As Range
 
'*******************************************************
    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 radar").Activate
    DerLig = Cells(Rows.Count, 1).End(xlUp).Row
    Set Plage = Range("A2:A" & DerLig)
    Set Plage = Union(Plage, Plage.Offset(, 4))
    Var = Plage.Address
' Redimensionner les tableaux
    'TabTemps = Application.Transpose(Range([A2], Cells(Rows.Count, 1).End(xlUp)))
 
'Création du tableau pour les Abscisses
 
    'Création d'un tableau pour les Ordonnées
    'TabVmoy = Application.Transpose(Range([E2], Cells(Rows.Count, 5).End(xlUp)))
 
    'Création graphique
    Charts.Add
    With ActiveChart
        .ChartType = xlLine
        .SetSourceData Source:=Plage, PlotBy:=xlColumns
        .Location Where:=xlLocationAsObject, Name:="Test"
    End With
'*******************************************************************
'Graphique Vmin / Vmax
' Activer la feuille de données
    Sheets("Import de données radar").Activate
    DerLig = Cells(Rows.Count, 1).End(xlUp).Row
    Set Plage = Range("A1:A" & DerLig)
    Set Plage = Union(Plage, Plage.Offset(, 2).Resize(, 2))
    Var = Plage.Address
' Redimensionner les tableaux
    'TabTemps = Application.Transpose(Range([A2], Cells(Rows.Count, 1).End(xlUp)))
 
'Création du tableau pour les Abscisses
 
    'Création d'un tableau pour les Ordonnées
    'TabVmoy = Application.Transpose(Range([E2], Cells(Rows.Count, 5).End(xlUp)))
 
    'Création graphique
    Charts.Add
    With ActiveChart
        .ChartType = xlLine
        .SetSourceData Source:=Plage, PlotBy:=xlColumns
        .Location Where:=xlLocationAsObject, Name:="Test1"
    End With
 
End Sub 'fin de la procedure
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/11/2011, 08h13   #19
Candidat au titre de Membre du Club
 
Homme Yannick Bouvet
Technicien R&D électronique
Inscription : novembre 2011
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Yannick Bouvet
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Technicien R&D électronique
Secteur : Industrie

Informations forums :
Inscription : novembre 2011
Messages : 33
Points : 11
Points : 11
Je confirme, les couleurs ne sont vraiment pas terrible.
Merci
Daetheia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 10h34   #20
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Donne-moi les couleurs que tu désires pour chaque série, et aussi l'épaisseur et le style de traits; éventuellement aussi celui des points.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h54.


 
 
 
 
Partenaires

Hébergement Web