[VBA Excel] graphique

Résolu
lalilu Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -  
 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!
A voir également:

9 réponses

eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

essaie avec :
"=DATA_graph!R7C2:R" & nb_ligne & "C2"
idem pour le suivant...
eric
-1
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
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   Statut Membre Dernière intervention   1
 
ok j'essaie ...
-1
lalilu Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   1
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
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   Statut Membre Dernière intervention   1
 
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 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
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   Statut Membre Dernière intervention   1 > eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention  
 
effectivement, mon doigt a fourché ...
mais le problème est toujours là ...
-1
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275 > lalilu Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   1 > eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention  
 
mon problème est résolu, mais merci pour ton aide, ça fait plaisir.
-1
Utilisateur anonyme
 
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   Statut Membre Dernière intervention   1
 
nickel ! merci lupin ça marche !
-1
Utilisateur anonyme
 
re :

Bienvenue :-)

Cordialement

Lupin
-1