[VBA Excel] graphique
Résolu
lalilu
Messages postés
35
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
mon problème n'est sûrement pas insoluble mais un peu difficile à expliquer ...
donc, veuillez m'excuser par avance si mon post est un peu long. je tiens également à préciser que je suis une néophyte en VBA.
je cherche à tracer l'évolution d'un paramètre (disons x) en fonction du temps.
j'ai le choix entre
- déterminer la date limitte à laquelle je stoppe la simulation (autrement dit, je cherche la valeur de x à une date donée)
ou
- déterminer la valeur limitte de x à laquelle je stoppe la simu (autrement dit, je cherche combien de temps met x pour atteindre cette valeur)
le tout en partant d'une date et d'un x initiaux.
j'utilise une méthode itérative qui calcule la valeur que prend x tous les trois jours. pour cela, j'ai fabriqué une formule (peu importe laquelle) que j'ai recopié sur 1000 lignes. cette formule renvoie soit un champ vide si la date est dépassée ou si x a atteint sa valeur limitte, soit la valeur calculée de x.
celà à pour conséquence que mon tableau de résultats a une taille variable en fonction des paramètres de date limitte ou x limitte, et c'est ça mon problème ...
quand je trace x = f(t), je trace les 1000 lignes du tableau et meme celles qui vallent zéro.
j'obtiens donc un truc moche du genre:
|_______*
|_____*
|___*
|__*
|*________*************************************
alors que je voudrais:
|____________**
|_________**
|______**
|___**
|**
vous voyez ce que je veux dire ?
pour contrer ce problème, j'ai calculé le nombre de cases non vides du tableau, et j'appelle le résultat nb_lignes
j'ai ensuite enregistré la macro suivante qui crée un graphique à partir de la plage de 1000 lignes:
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 20/08/2008 par sophie
'
'
Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
ActiveChart.SeriesCollection(1).XValues = "=DATA_graph!R7C2:R1000C2"
ActiveChart.SeriesCollection(1).Values = "=DATA_graph!R7C6:R1000C6"
ActiveChart.Location Where:=xlLocationAsObject, Name:="DATA_graph"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
End Sub
ce que je voudrais, c'est que ce 1000 (souligné) soit remplacé par la valeur de nb_lignes.
j'ai donc rajouté ceci à la macro :
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 20/08/2008 par sophie
'
dim nb_ligne as byte
with sheets ("MaFeuille")
nb_ligne = .cells (7+1) 'car nb_ligne se trouve dans la case G1
'
Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
-->ActiveChart.SeriesCollection(1).XValues = "=DATA_graph!R7C2:Rnb_ligneC2"
--> ActiveChart.SeriesCollection(1).Values = "=DATA_graph!R7C6:Rnb_ligneC6"
ActiveChart.Location Where:=xlLocationAsObject, Name:="DATA_graph"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
end with
End Sub
évidemment ça ne marche pas... (faute de compilation sur les liqnes pécédées de -->)
voyez vous une solution, ou même quelque chose sans aucun rapport avec ma startégie initiale ?
encore pardon pour la longueur du mess!
merci d'avance!
mon problème n'est sûrement pas insoluble mais un peu difficile à expliquer ...
donc, veuillez m'excuser par avance si mon post est un peu long. je tiens également à préciser que je suis une néophyte en VBA.
je cherche à tracer l'évolution d'un paramètre (disons x) en fonction du temps.
j'ai le choix entre
- déterminer la date limitte à laquelle je stoppe la simulation (autrement dit, je cherche la valeur de x à une date donée)
ou
- déterminer la valeur limitte de x à laquelle je stoppe la simu (autrement dit, je cherche combien de temps met x pour atteindre cette valeur)
le tout en partant d'une date et d'un x initiaux.
j'utilise une méthode itérative qui calcule la valeur que prend x tous les trois jours. pour cela, j'ai fabriqué une formule (peu importe laquelle) que j'ai recopié sur 1000 lignes. cette formule renvoie soit un champ vide si la date est dépassée ou si x a atteint sa valeur limitte, soit la valeur calculée de x.
celà à pour conséquence que mon tableau de résultats a une taille variable en fonction des paramètres de date limitte ou x limitte, et c'est ça mon problème ...
quand je trace x = f(t), je trace les 1000 lignes du tableau et meme celles qui vallent zéro.
j'obtiens donc un truc moche du genre:
|_______*
|_____*
|___*
|__*
|*________*************************************
alors que je voudrais:
|____________**
|_________**
|______**
|___**
|**
vous voyez ce que je veux dire ?
pour contrer ce problème, j'ai calculé le nombre de cases non vides du tableau, et j'appelle le résultat nb_lignes
j'ai ensuite enregistré la macro suivante qui crée un graphique à partir de la plage de 1000 lignes:
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 20/08/2008 par sophie
'
'
Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
ActiveChart.SeriesCollection(1).XValues = "=DATA_graph!R7C2:R1000C2"
ActiveChart.SeriesCollection(1).Values = "=DATA_graph!R7C6:R1000C6"
ActiveChart.Location Where:=xlLocationAsObject, Name:="DATA_graph"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
End Sub
ce que je voudrais, c'est que ce 1000 (souligné) soit remplacé par la valeur de nb_lignes.
j'ai donc rajouté ceci à la macro :
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 20/08/2008 par sophie
'
dim nb_ligne as byte
with sheets ("MaFeuille")
nb_ligne = .cells (7+1) 'car nb_ligne se trouve dans la case G1
'
Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
-->ActiveChart.SeriesCollection(1).XValues = "=DATA_graph!R7C2:Rnb_ligneC2"
--> ActiveChart.SeriesCollection(1).Values = "=DATA_graph!R7C6:Rnb_ligneC6"
ActiveChart.Location Where:=xlLocationAsObject, Name:="DATA_graph"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
end with
End Sub
évidemment ça ne marche pas... (faute de compilation sur les liqnes pécédées de -->)
voyez vous une solution, ou même quelque chose sans aucun rapport avec ma startégie initiale ?
encore pardon pour la longueur du mess!
merci d'avance!
A voir également:
- [VBA Excel] graphique
- Liste déroulante excel - Guide
- Changer carte graphique - Guide
- Graphique camembert excel - Guide
- Word et excel gratuit - Guide
- Comment faire un graphique sur excel - Guide
9 réponses
PS:
dim nb_ligne as byte ça fait un peu radin... sauf si tu es sûre de ne jamais dépasser 255 lignes.
Sinon met plutôt as long
dim nb_ligne as byte ça fait un peu radin... sauf si tu es sûre de ne jamais dépasser 255 lignes.
Sinon met plutôt as long
j'y ai cru mais non ...
avec les " --> erreur de compilation,
sans les " --> erreur d'exécution...
pfffffffff :-(
mais il ne faut jalais s'avouer vaincue !
je suis toujours ouverte à toute proposition !
et merci quand même eriic.
avec les " --> erreur de compilation,
sans les " --> erreur d'exécution...
pfffffffff :-(
mais il ne faut jalais s'avouer vaincue !
je suis toujours ouverte à toute proposition !
et merci quand même eriic.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
et les & aussi, respecte bien la syntaxe
"blablabla" & nb_ligne & "blabla"
et puis quand ça plante contrôle la valeur de nb_ligne
"blablabla" & nb_ligne & "blabla"
et puis quand ça plante contrôle la valeur de nb_ligne
j'ai essayé comme ça "blabla"&truc&"blabla", mais ça compile pas,
ça me dit erreur, fin d'instruction attendue en surlignant tout ce qui se trouve à droite du deuxième ".
ça me dit erreur, fin d'instruction attendue en surlignant tout ce qui se trouve à droite du deuxième ".
Bonjour,
Voici une autre suggestion :
A adapter bien sur !
Lupin
Voici une autre suggestion :
A adapter bien sur !
Sub PremierGraphique() Dim rngCible As Range, strChaine As String, Compteur As Long Dim nb_Lignes As Long Sheets(strNomFleGraph).Select ActiveSheet.ChartObjects(cteGraph1).Activate ActiveChart.ChartArea.Select ' Nom de la collection 1 Set rngCible = Sheets(strNomFleMaitre).Range("B5") ActiveChart.SeriesCollection(1).Name = rngCible ' Valeur de la collection 1 strChaine = "C" & nb_Lignes & ":N" & nb_Lignes Set rngCible = Sheets(strNomFleMaitre).Range(strChaine) ActiveChart.SeriesCollection(1).Values = rngCible ' Abscisse de la collection 1 Set rngCible = Sheets(strNomFleMaitre).Range("C1:N1") ActiveChart.SeriesCollection(1).XValues = rngCible End Sub '
Lupin