houston87
Messages postés26Date d'inscriptionmercredi 27 janvier 2010StatutMembreDernière intervention28 septembre 2011
-
3 févr. 2010 à 18:27
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
3 févr. 2010 à 23:10
Bonjour,
je souhaiterais tracer un graphique à partir des données que j'ai paramétré sur vba et je voudrais voir donc mon graphe sur la page excel se tracer au fur à mesure que vba fait les calculs . et si comment on peut faire pour ne pas afficher les résultats d'un calcul sur la page d'excel par exemple dans mon cas ci dessous je récupère les données des pfaible et pfort sur deux colonnes
For i = 1 To 40382
f = FreeFile
Open chemin For Binary As #f
Get #f, ((2 * i) - 1) + 44, pfaible
Get #f, (2 * i) + 44, pfort
Close #f
à partir de ce résultat obtenu cela va me mené à une deuxième étape qui me permettra de trouver finalement les données sur lesquels je vais me basé pour tracer mon graphe comme dans l'exemple suivant
If npiste 1 Then Range("H" & [i]).Value Range("D" & [i]).Value * 256 + Range("E" & [i]).Value
If npiste 2 Then Range("H" & [i]).Value Range("D" & (2 * i) - 1).Value * 256 + Range("E" & (2 * i) - 1).Value
If npiste 2 Then Range("I" & [i]).Value Range("D" & (2 * i)).Value * 256 + Range("E" & (2 * i)).Value
Si quelqu'un a une idée ça pourra vraiment me faciliter la vie. Merci
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 3 févr. 2010 à 19:52
Salut
Avant tout, je veux juste relever un truc bizarre :
Range("D" & (2 * i) - 1).Value
me parait audacieux parce qu'il manque une parenthèse et que cela pourrait mener à une erreur d'instruction : "D5 - 1" n'étant pas correct.
La syntaxe corrigée serait :
Range("D" & ((2 * i) - 1)).Value
En fait, mieux vaudrait utiliser la fonction permettant de cibler une cellule par rapport à l'adresse fournie :
Range("D" & (2 * i)).Offset(-1, 0).Value
où le -1 représente le décalage de ligne voulu.
Range("H" & [ i]).Value : Pourquoi des crochets [ et ] autour du i ?
Pour ce qui est de ta courbe :
Si tu veux faire tracer ta courbe à chaque cycle (bonjour la lenteur occasionnée), il te suffit de modifier la série utilisée pour la courbe :
Par exemple, au début, ta série sera petite, disons les 3 première lignes des colonnes A, B et C ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("A1:C3
"), PlotBy:=xlColumns
A chaque cycle, il te suffit de modifier cette série et d'incrémenter la plage représentant la série :
ActiveChart.SeriesCollection(1).Select
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("A1:C4
"), PlotBy :=xlColumns
Pense aussi à donner le temps au système de se rafraichir : Un simple DoEvents après la modification devrait suffire.
Enfin, en ce qui concerne le stockage temporaire dans des cellules, je ne vois pas comment tu pourrais faire autrement : l'argument Source de l'instruction SetSourceData n'accepte qu'un Range.
Tu peux, par contre, insérer ces données dans une autre feuille, dédiée au stockage temporaire que tu pourras peut-être masquer.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 3 févr. 2010 à 23:10
Bah tu pourrais le trouver toi même en enregistrant une macro et en regardant le code qui est généré (le b.a.ba en VBA), mais je vais te le donner tout cuit.
Il te suffit de faire référence à la feuille en question :
Au lieu de Range("A1").Value = 10
Tu fais un Sheets("monAutreFeuille").Range("A1").Value = 10
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)