Dans une feuille, j'utilise des ScrollBar qui commandent une macro, laquelle
modifie des données sur la feuille.
Le problème est que lorsque je déplace le bouton de la ScrollBar, ma feuille
se réactualise à chaque mouvement de la souris, et la feuille se met à
clignoter désagréablement. Pour remédier à cela, j'aimerais donc que la
feuille ne puisse s'actualiser que toutes les secondes, mais je n'y arrive
pas :-(
J'ai cherché du côté de Wait, ou de OnTime, mais je reste coincé.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-François Aubert
salut Nicolas,
Est-ce qu'un
Application .Calculation = xlManual
au début de la macro
et un
Application .Calculation = xlAutomatic
à la fin ferait l'affaire ? -- Amicalement
Jean-François Aubert {Vaudois de la Côte Lémanique}
"Nicolas B." a écrit dans le message de news:
Bonjour à tous,
Dans une feuille, j'utilise des ScrollBar qui commandent une macro, laquelle modifie des données sur la feuille. Le problème est que lorsque je déplace le bouton de la ScrollBar, ma feuille se réactualise à chaque mouvement de la souris, et la feuille se met à clignoter désagréablement. Pour remédier à cela, j'aimerais donc que la feuille ne puisse s'actualiser que toutes les secondes, mais je n'y arrive pas :-( J'ai cherché du côté de Wait, ou de OnTime, mais je reste coincé.
Jean-François Aubert
{Vaudois de la Côte Lémanique}
"Nicolas B." <nicolas.bruot@adresse.bidon.com> a écrit dans le message de
news:eZNSYkWlDHA.1672@TK2MSFTNGP09.phx.gbl...
Bonjour à tous,
Dans une feuille, j'utilise des ScrollBar qui commandent une macro, laquelle
modifie des données sur la feuille.
Le problème est que lorsque je déplace le bouton de la ScrollBar, ma feuille
se réactualise à chaque mouvement de la souris, et la feuille se met à
clignoter désagréablement. Pour remédier à cela, j'aimerais donc que la
feuille ne puisse s'actualiser que toutes les secondes, mais je n'y arrive
pas :-(
J'ai cherché du côté de Wait, ou de OnTime, mais je reste coincé.
Jean-François Aubert {Vaudois de la Côte Lémanique}
"Nicolas B." a écrit dans le message de news:
Bonjour à tous,
Dans une feuille, j'utilise des ScrollBar qui commandent une macro, laquelle modifie des données sur la feuille. Le problème est que lorsque je déplace le bouton de la ScrollBar, ma feuille se réactualise à chaque mouvement de la souris, et la feuille se met à clignoter désagréablement. Pour remédier à cela, j'aimerais donc que la feuille ne puisse s'actualiser que toutes les secondes, mais je n'y arrive pas :-( J'ai cherché du côté de Wait, ou de OnTime, mais je reste coincé.
Malheureusement, ce n'est pas ce que je cherche. Ce ne sont pas des formules qui ne doivent pas être actualisées, mais la feuille entière (contenu des cellules, mises en forme...).
Dans une feuille, j'utilise des ScrollBar qui commandent une macro, laquelle modifie des données sur la feuille. Le problème est que lorsque je déplace le bouton de la ScrollBar, ma feuille se réactualise à chaque mouvement de la souris, et la feuille se met à clignoter désagréablement. Pour remédier à cela, j'aimerais donc que la feuille ne puisse s'actualiser que toutes les secondes, mais je n'y arrive pas :-( J'ai cherché du côté de Wait, ou de OnTime, mais je reste coincé.
Malheureusement, ce n'est pas ce que je cherche. Ce ne sont pas des formules
qui ne doivent pas être actualisées, mais la feuille entière (contenu des
cellules, mises en forme...).
"Nicolas B." <nicolas.bruot@adresse.bidon.com> a écrit dans le
message de news:eZNSYkWlDHA.1672@TK2MSFTNGP09.phx.gbl...
Bonjour à tous,
Dans une feuille, j'utilise des ScrollBar qui commandent une macro,
laquelle modifie des données sur la feuille.
Le problème est que lorsque je déplace le bouton de la ScrollBar, ma
feuille se réactualise à chaque mouvement de la souris, et la
feuille se met à clignoter désagréablement. Pour remédier à cela,
j'aimerais donc que la feuille ne puisse s'actualiser que toutes les
secondes, mais je n'y arrive pas :-(
J'ai cherché du côté de Wait, ou de OnTime, mais je reste coincé.
Malheureusement, ce n'est pas ce que je cherche. Ce ne sont pas des formules qui ne doivent pas être actualisées, mais la feuille entière (contenu des cellules, mises en forme...).
Dans une feuille, j'utilise des ScrollBar qui commandent une macro, laquelle modifie des données sur la feuille. Le problème est que lorsque je déplace le bouton de la ScrollBar, ma feuille se réactualise à chaque mouvement de la souris, et la feuille se met à clignoter désagréablement. Pour remédier à cela, j'aimerais donc que la feuille ne puisse s'actualiser que toutes les secondes, mais je n'y arrive pas :-( J'ai cherché du côté de Wait, ou de OnTime, mais je reste coincé.
Dans une feuille, j'utilise des ScrollBar qui commandent une macro, laquelle modifie des données sur la feuille. Le problème est que lorsque je déplace le bouton de la ScrollBar, ma feuille se réactualise à chaque mouvement de la souris, et la feuille se met à clignoter désagréablement. Pour remédier à cela, j'aimerais donc que la feuille ne puisse s'actualiser que toutes les secondes, mais je n'y arrive pas :-( J'ai cherché du côté de Wait, ou de OnTime, mais je reste coincé.
"Nicolas B." <nicolas.bruot@adresse.bidon.com> a écrit dans le
message de news:eZNSYkWlDHA.1672@TK2MSFTNGP09.phx.gbl...
Bonjour à tous,
Dans une feuille, j'utilise des ScrollBar qui commandent une macro,
laquelle modifie des données sur la feuille.
Le problème est que lorsque je déplace le bouton de la ScrollBar, ma
feuille se réactualise à chaque mouvement de la souris, et la
feuille se met à clignoter désagréablement. Pour remédier à cela,
j'aimerais donc que la feuille ne puisse s'actualiser que toutes les
secondes, mais je n'y arrive pas :-(
J'ai cherché du côté de Wait, ou de OnTime, mais je reste coincé.
Dans une feuille, j'utilise des ScrollBar qui commandent une macro, laquelle modifie des données sur la feuille. Le problème est que lorsque je déplace le bouton de la ScrollBar, ma feuille se réactualise à chaque mouvement de la souris, et la feuille se met à clignoter désagréablement. Pour remédier à cela, j'aimerais donc que la feuille ne puisse s'actualiser que toutes les secondes, mais je n'y arrive pas :-( J'ai cherché du côté de Wait, ou de OnTime, mais je reste coincé.
Je n'avais pas pensé à cela, mais ça ne marche toujours pas :-( En effet, même avec Application.ScreenUpdating = False, lorsque la macro a fini d'être exécutée, les modification apparaissent sur la feuille. En fait, il me faudrait une fonction comme Now ou Time, car elles me permettent par exemple de déclencher la macro toutes les dix secondes (si Int(Now*86400) est un multiple de dix, par exemple). Le problème de ces deux fonctions est qu'elles sont arrondies à la seconde près, et moi je voudrais descendre dans les millisecondes (ou au moins les dixièmes de secondes). Y a-t-il une fonction qui fasse cela ?
Je n'avais pas pensé à cela, mais ça ne marche toujours pas :-(
En effet, même avec Application.ScreenUpdating = False, lorsque la macro a
fini d'être exécutée, les modification apparaissent sur la feuille.
En fait, il me faudrait une fonction comme Now ou Time, car elles me
permettent par exemple de déclencher la macro toutes les dix secondes (si
Int(Now*86400) est un multiple de dix, par exemple). Le problème de ces deux
fonctions est qu'elles sont arrondies à la seconde près, et moi je voudrais
descendre dans les millisecondes (ou au moins les dixièmes de secondes). Y
a-t-il une fonction qui fasse cela ?
Je n'avais pas pensé à cela, mais ça ne marche toujours pas :-( En effet, même avec Application.ScreenUpdating = False, lorsque la macro a fini d'être exécutée, les modification apparaissent sur la feuille. En fait, il me faudrait une fonction comme Now ou Time, car elles me permettent par exemple de déclencher la macro toutes les dix secondes (si Int(Now*86400) est un multiple de dix, par exemple). Le problème de ces deux fonctions est qu'elles sont arrondies à la seconde près, et moi je voudrais descendre dans les millisecondes (ou au moins les dixièmes de secondes). Y a-t-il une fonction qui fasse cela ?
Salut Nicolas, Avec l'API GetTickCount, tu te mets un bouton pour lancer le timer qui va lui, lancer la macro voulue toutes les x millisecondes, il va aussi définir la valeur booléenne de la variable publique "Arreter" pour stopper le timer. Enfin, adapte : Declare Function GetTickCount Lib "Kernel32" () As Long
Sub Minuterie(Milliseconde As Long) Dim Arret As Long Arret = GetTickCount() + Milliseconde Do While GetTickCount() < Arret DoEvents Loop End Sub
Private Sub Timer() Dim I As Integer Do While Arreter = False Minuterie 10000 LaMacroALancer Loop End Sub
Sub LaMacroALancer() MsgBox "Macro lancée !" End Sub
Hervé.
"Nicolas B." a écrit dans le message news:
Salut Hervé,
Je n'avais pas pensé à cela, mais ça ne marche toujours pas :-( En effet, même avec Application.ScreenUpdating = False, lorsque la macro a fini d'être exécutée, les modification apparaissent sur la feuille. En fait, il me faudrait une fonction comme Now ou Time, car elles me permettent par exemple de déclencher la macro toutes les dix secondes (si Int(Now*86400) est un multiple de dix, par exemple). Le problème de ces deux
fonctions est qu'elles sont arrondies à la seconde près, et moi je voudrais
descendre dans les millisecondes (ou au moins les dixièmes de secondes). Y a-t-il une fonction qui fasse cela ?
Salut Nicolas,
Avec l'API GetTickCount, tu te mets un bouton pour lancer le timer qui va
lui, lancer la macro voulue toutes les x millisecondes, il va aussi définir
la valeur booléenne de la variable publique "Arreter" pour stopper le timer.
Enfin, adapte :
Declare Function GetTickCount Lib "Kernel32" () As Long
Sub Minuterie(Milliseconde As Long)
Dim Arret As Long
Arret = GetTickCount() + Milliseconde
Do While GetTickCount() < Arret
DoEvents
Loop
End Sub
Private Sub Timer()
Dim I As Integer
Do While Arreter = False
Minuterie 10000
LaMacroALancer
Loop
End Sub
Sub LaMacroALancer()
MsgBox "Macro lancée !"
End Sub
Hervé.
"Nicolas B." <nicolas.bruot@adresse.bidon.com> a écrit dans le message news:
eIXWlmhlDHA.2676@TK2MSFTNGP11.phx.gbl...
Salut Hervé,
Je n'avais pas pensé à cela, mais ça ne marche toujours pas :-(
En effet, même avec Application.ScreenUpdating = False, lorsque la macro a
fini d'être exécutée, les modification apparaissent sur la feuille.
En fait, il me faudrait une fonction comme Now ou Time, car elles me
permettent par exemple de déclencher la macro toutes les dix secondes (si
Int(Now*86400) est un multiple de dix, par exemple). Le problème de ces
deux
fonctions est qu'elles sont arrondies à la seconde près, et moi je
voudrais
descendre dans les millisecondes (ou au moins les dixièmes de secondes). Y
a-t-il une fonction qui fasse cela ?
Salut Nicolas, Avec l'API GetTickCount, tu te mets un bouton pour lancer le timer qui va lui, lancer la macro voulue toutes les x millisecondes, il va aussi définir la valeur booléenne de la variable publique "Arreter" pour stopper le timer. Enfin, adapte : Declare Function GetTickCount Lib "Kernel32" () As Long
Sub Minuterie(Milliseconde As Long) Dim Arret As Long Arret = GetTickCount() + Milliseconde Do While GetTickCount() < Arret DoEvents Loop End Sub
Private Sub Timer() Dim I As Integer Do While Arreter = False Minuterie 10000 LaMacroALancer Loop End Sub
Sub LaMacroALancer() MsgBox "Macro lancée !" End Sub
Hervé.
"Nicolas B." a écrit dans le message news:
Salut Hervé,
Je n'avais pas pensé à cela, mais ça ne marche toujours pas :-( En effet, même avec Application.ScreenUpdating = False, lorsque la macro a fini d'être exécutée, les modification apparaissent sur la feuille. En fait, il me faudrait une fonction comme Now ou Time, car elles me permettent par exemple de déclencher la macro toutes les dix secondes (si Int(Now*86400) est un multiple de dix, par exemple). Le problème de ces deux
fonctions est qu'elles sont arrondies à la seconde près, et moi je voudrais
descendre dans les millisecondes (ou au moins les dixièmes de secondes). Y a-t-il une fonction qui fasse cela ?
J'ai réussi à avancer dans mon classeru, mais il reste encore un problème. Dans le code ci-dessous, la ScrollBar déclenche la macro Attendre, et si le temps en dixièmes de secondes est divisible par 10, alors la macro Couleurs se déclenche. Là, tout marche bien : quand je joue de la ScrollBar, la macro se déclenche toutes les secondes.
Le problème est que si je touche un peu à la scrollbar et que la macro ne se déclenche pas (car la condition de temps n'est pas respectée), alors après avoir relâché le clic, la feuille ne se met pas à jour. Il me faudrait donc quelque chose comme : - tant que le bouton de la souris est enfoncé, exécuter la macro toutes les secondes seulement (comme c'est déjà le cas avec le code ci-dessous), - et lorsque je relâche le bouton, la macro se déclenche.
Encore merci.
Declare Function GetTickCount Lib "Kernel32" () As Long Sub Attendre() temps = GetTickCount If Int(temps / 100) Mod 10 = 0 Then Couleurs End Sub
Salut Nicolas, Avec l'API GetTickCount, tu te mets un bouton pour lancer le timer qui va lui, lancer la macro voulue toutes les x millisecondes, il va aussi définir la valeur booléenne de la variable publique "Arreter" pour stopper le timer. Enfin, adapte : Declare Function GetTickCount Lib "Kernel32" () As Long
Sub Minuterie(Milliseconde As Long) Dim Arret As Long Arret = GetTickCount() + Milliseconde Do While GetTickCount() < Arret DoEvents Loop End Sub
Private Sub Timer() Dim I As Integer Do While Arreter = False Minuterie 10000 LaMacroALancer Loop End Sub
Sub LaMacroALancer() MsgBox "Macro lancée !" End Sub
Hervé.
"Nicolas B." a écrit dans le message news:
Salut Hervé,
Je n'avais pas pensé à cela, mais ça ne marche toujours pas :-( En effet, même avec Application.ScreenUpdating = False, lorsque la macro a fini d'être exécutée, les modification apparaissent sur la feuille. En fait, il me faudrait une fonction comme Now ou Time, car elles me permettent par exemple de déclencher la macro toutes les dix secondes (si Int(Now*86400) est un multiple de dix, par exemple). Le problème de ces deux fonctions est qu'elles sont arrondies à la seconde près, et moi je voudrais descendre dans les millisecondes (ou au moins les dixièmes de secondes). Y a-t-il une fonction qui fasse cela ?
J'ai réussi à avancer dans mon classeru, mais il reste encore un problème.
Dans le code ci-dessous, la ScrollBar déclenche la macro Attendre, et si le
temps en dixièmes de secondes est divisible par 10, alors la macro Couleurs
se déclenche. Là, tout marche bien : quand je joue de la ScrollBar, la macro
se déclenche toutes les secondes.
Le problème est que si je touche un peu à la scrollbar et que la macro ne se
déclenche pas (car la condition de temps n'est pas respectée), alors après
avoir relâché le clic, la feuille ne se met pas à jour.
Il me faudrait donc quelque chose comme :
- tant que le bouton de la souris est enfoncé, exécuter la macro toutes les
secondes seulement (comme c'est déjà le cas avec le code ci-dessous),
- et lorsque je relâche le bouton, la macro se déclenche.
Encore merci.
Declare Function GetTickCount Lib "Kernel32" () As Long
Sub Attendre()
temps = GetTickCount
If Int(temps / 100) Mod 10 = 0 Then Couleurs
End Sub
Salut Nicolas,
Avec l'API GetTickCount, tu te mets un bouton pour lancer le timer
qui va lui, lancer la macro voulue toutes les x millisecondes, il va
aussi définir la valeur booléenne de la variable publique "Arreter"
pour stopper le timer. Enfin, adapte :
Declare Function GetTickCount Lib "Kernel32" () As Long
Sub Minuterie(Milliseconde As Long)
Dim Arret As Long
Arret = GetTickCount() + Milliseconde
Do While GetTickCount() < Arret
DoEvents
Loop
End Sub
Private Sub Timer()
Dim I As Integer
Do While Arreter = False
Minuterie 10000
LaMacroALancer
Loop
End Sub
Sub LaMacroALancer()
MsgBox "Macro lancée !"
End Sub
Hervé.
"Nicolas B." <nicolas.bruot@adresse.bidon.com> a écrit dans le
message news: eIXWlmhlDHA.2676@TK2MSFTNGP11.phx.gbl...
Salut Hervé,
Je n'avais pas pensé à cela, mais ça ne marche toujours pas :-(
En effet, même avec Application.ScreenUpdating = False, lorsque la
macro a fini d'être exécutée, les modification apparaissent sur la
feuille.
En fait, il me faudrait une fonction comme Now ou Time, car elles me
permettent par exemple de déclencher la macro toutes les dix
secondes (si Int(Now*86400) est un multiple de dix, par exemple). Le
problème de ces deux fonctions est qu'elles sont arrondies à la
seconde près, et moi je voudrais descendre dans les millisecondes
(ou au moins les dixièmes de secondes). Y a-t-il une fonction qui
fasse cela ?
J'ai réussi à avancer dans mon classeru, mais il reste encore un problème. Dans le code ci-dessous, la ScrollBar déclenche la macro Attendre, et si le temps en dixièmes de secondes est divisible par 10, alors la macro Couleurs se déclenche. Là, tout marche bien : quand je joue de la ScrollBar, la macro se déclenche toutes les secondes.
Le problème est que si je touche un peu à la scrollbar et que la macro ne se déclenche pas (car la condition de temps n'est pas respectée), alors après avoir relâché le clic, la feuille ne se met pas à jour. Il me faudrait donc quelque chose comme : - tant que le bouton de la souris est enfoncé, exécuter la macro toutes les secondes seulement (comme c'est déjà le cas avec le code ci-dessous), - et lorsque je relâche le bouton, la macro se déclenche.
Encore merci.
Declare Function GetTickCount Lib "Kernel32" () As Long Sub Attendre() temps = GetTickCount If Int(temps / 100) Mod 10 = 0 Then Couleurs End Sub
Salut Nicolas, Avec l'API GetTickCount, tu te mets un bouton pour lancer le timer qui va lui, lancer la macro voulue toutes les x millisecondes, il va aussi définir la valeur booléenne de la variable publique "Arreter" pour stopper le timer. Enfin, adapte : Declare Function GetTickCount Lib "Kernel32" () As Long
Sub Minuterie(Milliseconde As Long) Dim Arret As Long Arret = GetTickCount() + Milliseconde Do While GetTickCount() < Arret DoEvents Loop End Sub
Private Sub Timer() Dim I As Integer Do While Arreter = False Minuterie 10000 LaMacroALancer Loop End Sub
Sub LaMacroALancer() MsgBox "Macro lancée !" End Sub
Hervé.
"Nicolas B." a écrit dans le message news:
Salut Hervé,
Je n'avais pas pensé à cela, mais ça ne marche toujours pas :-( En effet, même avec Application.ScreenUpdating = False, lorsque la macro a fini d'être exécutée, les modification apparaissent sur la feuille. En fait, il me faudrait une fonction comme Now ou Time, car elles me permettent par exemple de déclencher la macro toutes les dix secondes (si Int(Now*86400) est un multiple de dix, par exemple). Le problème de ces deux fonctions est qu'elles sont arrondies à la seconde près, et moi je voudrais descendre dans les millisecondes (ou au moins les dixièmes de secondes). Y a-t-il une fonction qui fasse cela ?