HansGruber
Messages postés8Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention 9 septembre 2008
-
6 sept. 2008 à 17:11
HansGruber
Messages postés8Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention 9 septembre 2008
-
9 sept. 2008 à 22:04
Bonjour
Je souhaite faire defiler une courbe sur un tableau dans une petite application didactique (où l'on parametre certains reglages).
J'ai utilisé un code assez simple; une procedure modifie la valeur d'une colonne de 20 cellules, et cette colonne est liée au tableau.
J'effectue une pause de 1 seconde à chaque modification des valeurs. Les valeurs se modifient bien dans les cellules, mais la courbe sur le graphique ne change pas...Celle ci n'est reactualisé qu'à l'arret de l'execution du code.
Quelqu'un pourrait il me donner une astuce pour reactualiser le graph en temps reel ?
A voir également:
Utiliser un tableau excel pour faire defiler une courbe en scrolling.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 9 sept. 2008 à 02:35
Essaie comme ceci
Public Sub CommandButton1_Click()
'effectue 30 fois le changement des valeurs de la 2eme colonne
For t = 1 To 30
Application.ScreenUpdating = False 'empêche le clignotement un peu
If t = 30 Then Stop
'modifie la valeur de la cellule 17.2 de façon à modifier l'ensemble des valeurs
'cette commande n'est ici qu'à titre d'essai
'dans l'application finale la valeur de cette cellule sera fonction du resultat d'une mesure 'pas certain que ça serve à quoique ce soit...
Cells(17, 2).Value = Cells(1, 2).Value + 1
For i = 1 To 16
'appele la procedure permettant de modifier la pile des valeurs
'la valeur de i permet d'identifier la cellule concernée
Call modifcellules
Next i
Actualiser 'routine qui réinitialise les données sources du graph
'appelle la procedure permettant une temporisation afin d'avoir un defilement chaque seconde
Call Form_Load
Application.ScreenUpdating = True
Next t
End Sub
'Actualiser le graphique
Sub Actualiser()
ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.ChartArea.Select
ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("B1:B16"), _
PlotBy:=xlColumns
Range("A1").Select
End Sub
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
HansGruber
Messages postés8Date d'inscriptionmercredi 31 octobre 2007StatutMembreDernière intervention 9 septembre 2008 8 sept. 2008 à 21:52
Merci pour ta réponse.
Une petite explication avant tout:
Mon graphique utilise les valeurs de la 2eme colonne de la feuille de données.
Ces valeurs sont stoquées de la ligne 1 à 17
Le code fonctionne tres bien, le probleme reside dans la reactualisation du graphique; la courbe sur le graph ne se modifie qu'à la fin de l'execution, alors que je voudrais que l'aspect change entre chaque boucle de tempo
Voici le code:
Public i As Integer
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
---------------------------------------------
Private Sub CommandButton1_Click()
'effectue 30 fois le changement des valeurs de la 2eme colonne
For t = 1 To 30
'modifie la valeur de la cellule 17.2 de façon à modifier l'ensemble des valeurs
'cette commande n'est ici qu'à titre d'essai
'dans l'application finale la valeur de cette cellule sera fonction du resultat d'une mesure
Cells(17, 2).Value = Cells(1, 2).Value + 1
For i = 1 To 16
'appele la procedure permettant de modifier la pile des valeurs
'la valeur de i permet d'identifier la cellule concernée
Call modifcellules
Next i
'appelle la procedure permettant une temporisation afin d'avoir un defilement chaque seconde
Call Form_Load
Next t
End Sub
----------------------------------------
Private Sub modifcellules()
' deplace la valeur de chaque cellule vers le haut
Cells(i, 2).Value = Cells(i + 1, 2).Value
End Sub
---------------------------------------------
Private Sub Form_Load()
' temporisation de 1 seconde