[VBA Excel] graphique

Résolu/Fermé
lalilu Messages postés 35 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 17 décembre 2009 - 20 août 2008 à 17:01
 Utilisateur anonyme - 21 août 2008 à 13:47
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!
A voir également:

9 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
20 août 2008 à 17:06
Bonjour,

essaie avec :
"=DATA_graph!R7C2:R" & nb_ligne & "C2"
idem pour le suivant...
eric
-1
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
20 août 2008 à 17:09
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
-1
lalilu Messages postés 35 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 17 décembre 2009 1
20 août 2008 à 17:11
ok j'essaie ...
-1
lalilu Messages postés 35 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 17 décembre 2009 1
20 août 2008 à 17:27
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.
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
20 août 2008 à 17:32
et les & aussi, respecte bien la syntaxe
"blablabla" & nb_ligne & "blabla"
et puis quand ça plante contrôle la valeur de nb_ligne
-1
lalilu Messages postés 35 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 17 décembre 2009 1
20 août 2008 à 18:10
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 ".
-1
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
20 août 2008 à 18:42
erreur, fin d'instruction attendue ça ressemble bien à une erreur de syntaxe, relis bien...

nb_ligne = .Cells(7 + 1) : ça ne te donnera jamais G1
nb_ligne = .Cells(1,7) peut-être plus
-1
lalilu Messages postés 35 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 17 décembre 2009 1 > eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023
20 août 2008 à 18:50
effectivement, mon doigt a fourché ...
mais le problème est toujours là ...
-1
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213 > lalilu Messages postés 35 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 17 décembre 2009
20 août 2008 à 20:10
essaie la proposition à lupin,

et si tjs pb dépose ton fichier sur cijoint.fr et colle ici le lien fourni.
eric
-1
lalilu Messages postés 35 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 17 décembre 2009 1 > eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023
21 août 2008 à 10:47
mon problème est résolu, mais merci pour ton aide, ça fait plaisir.
-1
Utilisateur anonyme
20 août 2008 à 18:33
Bonjour,

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
-1
lalilu Messages postés 35 Date d'inscription mardi 15 avril 2008 Statut Membre Dernière intervention 17 décembre 2009 1
21 août 2008 à 10:45
nickel ! merci lupin ça marche !
-1
Utilisateur anonyme
21 août 2008 à 13:47
re :

Bienvenue :-)

Cordialement

Lupin
-1