Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Clignotement

24 réponses
Avatar
Jacquouille
Bonjour
Pour faire clignoter une cel, j'utilise une partie de procédure tirée chez
Misange (Excelabo.net:
--------------
For i = 1 To 10000
Cells(y, x).Interior.ColorIndex = 7
Cells(y, x).Interior.ColorIndex = 6
Next i
-----------
Mais cela clignote très vite.
Peut-être via timmer, pourrais-on afficher en jaune 1 seconde, puis 1 sec en
rouge, 1 sec en jaune .....pendant 1 minute?

Question subsidiaire pour départager les ex-aequo, comment puis-je afficher
la cel active (cells(y,x)) à 10 cm du bord gauche et à 10 cm du bord sup ?

Grand merci
Bonne soirée

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com

10 réponses

1 2 3
Avatar
denys.p
Bonjour,

Je ne sais pas si j'ai le droit de m'introduire dans votre fil, mais à to ut hasard, ceci fonctionne bien....et pas trop rapidement.
Le code n'est pas de moi et désolé s'il y a répétition (je n'ai pas lu toutes les réponses reçues, mais si ça peut vous aider...

Sub Anniversaire()
Application.EnableCancelKey = xlErrorHandler
Application.ScreenUpdating = False

z = 2
Range(Cells(z, 2), Cells(z + 1, 2)).Select
Selection.ClearContents
Selection.Font.Name = "Comic Sans MS"
Selection.Font.Size = 36
Selection.Font.Bold = True
Txt_1 = "Bon anniversaire !!!!!!!"
Txt_2 = "DENYS"

Range("B2").Value = Txt_1
Range("B3").Value = Txt_2

ActiveWindow.DisplayGridlines = False
Columns("B:B").EntireColumn.AutoFit
Range("B3").HorizontalAlignment = xlCenter
Range("A1").Select

Application.ScreenUpdating = True

For i = 1 To 10
For k = 1 To 2
Txt = Cells(z - 1 + k, 2).Value
For n = 1 To Len(Txt)
Cells(z - 1 + k, 2).Characters(n, 1).Font.ColorIndex = 2 + Int(8 * Rnd) + 1
Next n
Next k

DoEvents
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 1
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
Next i
End Sub
Avatar
Jacquouille
Bonsoir Michel

Chez moi (XL2003), il n'accepte pas la première phrase, la déclaration :

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Je suis retourné chez Misange où elle prend exactement la même ligne de
déclaration (exemple de Bob DEZAN, ex MPFE si tu te souviens)
Dommage, car je comprenais ta macro et elle semble convenir à mes désirs.
Je ne connais aucune autre manière de déclarer SLEEP. J'ignorais jusqu'à son
existence.
Merci de t'être penché sur mon cas.
Bonne soirée
Jacques


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"Péhemme" a écrit dans le message de groupe de discussion :
mgoolj$qeu$

Bonsoir Jacquouille,

Je ne sais pas où tu en es dans ton problème de clignotement.
Cependant je te propose :
Sub Cligne()
Dim i As Byte
For i = 1 To 15
Sleep (200)
DoEvents
Cells(1, 1).Interior.ColorIndex = 7
Sleep (200)
DoEvents
Cells(1, 1).Interior.ColorIndex = 6
Next i
End Sub
Sans oublier de déclarer Sleep en haut de module :
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Cela fonctionne chez moi avec Excel 2010
Bonne soirée
Michel (le seul qui s'accroche)


"Jacquouille" a écrit dans le message de groupe de discussion :
mgogrn$3oi$

Hello Isabelle,
Je ne sais pas si c'est dû aux valeurs attribuées aux variables ou si c'est
uns question de PC ou de version d'Excel, mais, chez moi, la cel clignote
tellement vite que j'ai du mal à identifier la couleur. Puis, cela se bloque
et après quelques secondes, cela se fige définitivement sur le rouge ou le
jaune.

Si je prends comme comparaison et comme étalon, le tic-tac d'une horloge et
que je décrète que le tic-tac se fait toutes les secondes, voici ce que
j'aimerais
Sur le tic: la couleur blanche de fonde cellule
sur le tac (1 seconde après, la couleur jaune vif pendant 1 sec
puis, on recommence la séquence tic-tac.

J'ai essayé de modifier les paramètres des var, mais cela reste pratiquement
la même chose.
Pour faire bref: 1 sec en jaune et 1 sec en blanc ... le tout , pendant 1
min, puis on sort de la macro.

Merci de te pencher sur ce sujet, mais pas trop fort, car on bascule et on
se casse la figure .. -))
Merci
Jacques.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"isabelle" a écrit dans le message de groupe de discussion :
mgmqeo$14e$

salut Jacques,

bien sur,

Sub Macro1()
Dim x As Single
x = Timer
For i = 1 To 10000
Cells(1, 1).Interior.ColorIndex = 7
While Timer - x < 0.5 'pause 1/2 seconde
Wend
Cells(1, 1).Interior.ColorIndex = 6
While Timer - x < 0.5 'pause 1/2 seconde
Wend
Next i
End Sub

isabelle

Le 2015-04-15 17:00, Jacquouille a écrit :
Bonjour
Pour faire clignoter une cel, j'utilise une partie de procédure tirée chez
Misange (Excelabo.net:
--------------
For i = 1 To 10000
Cells(y, x).Interior.ColorIndex = 7
Cells(y, x).Interior.ColorIndex = 6
Next i
-----------
Mais cela clignote très vite.
Peut-être via timmer, pourrais-on afficher en jaune 1 seconde, puis 1 sec
en
rouge, 1 sec en jaune .....pendant 1 minute?

Question subsidiaire pour départager les ex-aequo, comment puis-je
afficher la
cel active (cells(y,x)) à 10 cm du bord gauche et à 10 cm du bord sup ?

Grand merci
Bonne soirée

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."

---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel
antivirus Avast.
http://www.avast.com





---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
Jacquouille
Bonsoir

Vous me parlez d'un truc en grand breton..... et je ne cause que le Gaulois
de Belgique.
Pour moi, la norme Française, c'est le Français.


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"La Norme Française c'est pas le FN" a écrit dans le message de groupe de
discussion :

On Thu, 16 Apr 2015 03:56:52 +0200, GL wrote:

Dommage que cela disparût, car votre Cod'labo occupe Excel,
qui vous tient la jambe sans rendre la main le temps du
clin d'oeuillage.

Cdt.
Florent.



C'est la question que je me posais.
Il y a ontime qui semble plus adapté :

Exécuter MaFonction dans 1 seconde.
Application.OnTime Now + TimeValue("00:00:01"), "MaFonction"

https://msdn.microsoft.com/en-us/library/office/ff196165.aspx


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
Jacquouille
Bonsoir Denis
Ton code fonctionne à merveille (qui en douterait?), mais je ne sais pas
l'adapter à mon problème qui est beaucoup plus simple que cela.
(comment faire clignoter la cellule (blanc pendant 1 sec, puis jaune pendant
1 sec ... le tout pendant une minute)

Tu sais me dire pourquoi ma machine ne veut pas cette ligne proposée par
Michel, Misange et Bob Dezan?
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Mille mercis
Bonne soirée
Jacques.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
mgopll$t3j$

Un dernier ajout : http://cjoint.com/?EDqtkPywxQC


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
MichD
Bonjour,

Tu peux intervenir aussi souvent que tu le désires et ce peu importe le fil de discussion. Cela ne
demande pas une autorisation... nous sommes tous des bénévoles.

Je me permets ce petit commentaire sur cette ligne de code de la procédure que tu as émise.

waitTime = TimeSerial(newHour, newMinute, newSecond)


Copie le code suivant dans un module feuille.
Reviens à l'interface de calcul et à l'aide de la fenêtre des macros (Alt + F8)
lance la macro "Test" et observe ce qui se passe durant les 15 secondes
suivantes lorsque tu cliques dans une cellule dans la feuille de calcul.

Refais le même test avec la macro "Test1" et observe la différence!

Le 15 secondes, c'est seulement pour rendre évidemment le processus.

'--------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox Target.Address
End Sub
'--------------------------------------
Sub test()
Application.Wait (Now() + TimeValue("00:00:15"))
End Sub
'--------------------------------------

Sub test1()
Dim T As Double
T = Timer + 15 '15 secondes
Do While T >= Timer
DoEvents
Loop
End Sub
'--------------------------------------
Avatar
MichD
| Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Cette ligne de code est la déclaration de l'API de Windows.
Tu insères cette ligne de code dans le haut d'un module standard et
pour l'utiliser, tu fais ceci :

Entre le lancement de la procédure "Temps" et l'affichage du message,
2 secondes se seront écoulées.
'-----------------------------------------
Sub Temps()
Sleep 2000 '2000 = 2 secondes
Msgbox "Bonjour"
End Sub
'-----------------------------------------


Copie ce qui suit dans un module et exécute la procédure TEST.
La cellule A1 de la feuille active va clignoter tel que tu le demandes.
'------------------------------------------------------------------
Sub test()
Dim T As Double, T1 As Double
T = Timer + 60 '60 secondes (1 min)

Do While T >= Timer
With Range("A1").Interior
If .Color = vbWhite Then
.Color = vbYellow
'1 pour une seconde à toi d'adapter...
Call Délai_Modifier_La_Couleur(1)
Else
.Color = xlNone
'1 pour une seconde à toi d'adapter...
Call Délai_Modifier_La_Couleur(1)
End If
End With
DoEvents
Loop
End Sub
'------------------------------------------------------------------
Sub Délai_Modifier_La_Couleur(T As Double)
Dim S As Double
S = Timer + T
Do While S >= Timer
DoEvents
Loop
End Sub
'------------------------------------------------------------------
Avatar
La Norme Française c'est pas le FN
On Thu, 16 Apr 2015 21:36:27 +0200, "Jacquouille"
wrote:

Bonsoir

Vous me parlez d'un truc en grand breton..... et je ne cause que le Gaulois
de Belgique.


.......
Exécuter MaFonction dans 1 seconde.
Application.OnTime Now + TimeValue("00:00:01"), "MaFonction"

https://msdn.microsoft.com/en-us/library/office/ff196165.aspx





t'as essayé ?
Avatar
MichD
Peut-être préfères-tu ceci :

Tu exécutes la procédure "Définir_Plage_Cellules".
Adapte le nom de la feuille et la plage de cellules à faire clignoter

'------------------------------------------------------------------
Sub Définir_Plage_Cellules()
Dim Plg As Range
With Worksheets("Feuil1")
'Tu définis la plage que tu veux faire clignoter
'Une plage de cellules ou seulement une cellule.
Set Plg = .Range("A1,A5,B10")
Call Appliquer_Couleur(Plg)
End With
End Sub

'------------------------------------------------------------------
Sub Appliquer_Couleur(Rg As Range)
Dim T As Double
T = Timer + 60 '60 secondes (1 min)

Do While T >= Timer
With Rg.Interior
If .Color = vbWhite Then
.Color = vbYellow
Call Délai_Modifier_La_Couleur(1)
Else
.Color = xlNone
Call Délai_Modifier_La_Couleur(1)
End If
End With
DoEvents
Loop
End Sub
'------------------------------------------------------------------
Sub Délai_Modifier_La_Couleur(T As Double)
Dim S As Double
S = Timer + T
Do While S >= Timer
DoEvents
Loop
End Sub
'------------------------------------------------------------------
Avatar
isabelle
salut Jacques,

j'espère que tu auras trouvé la solution dans les nombreuses suggestion des copains,
j'ai fait le le test sur un win 7, 64 bit quadruple processeur pour le calcul
et double processeur pour l'affichage(très bon pour acad),
mais malgré tous ça, ça reste une perception visuel ;-)
maudite vieillesse %(
bisou***
isabelle

Le 2015-04-16 10:27, Jacquouille a écrit :
Hello Isabelle,
Je ne sais pas si c'est dû aux valeurs attribuées aux variables ou si c'est uns
question de PC ou de version d'Excel, mais, chez moi, la cel clignote tellement
vite que j'ai du mal à identifier la couleur. Puis, cela se bloque et après
quelques secondes, cela se fige définitivement sur le rouge ou le jaune.

Si je prends comme comparaison et comme étalon, le tic-tac d'une horloge et que
je décrète que le tic-tac se fait toutes les secondes, voici ce que j'aimerais
Sur le tic: la couleur blanche de fonde cellule
sur le tac (1 seconde après, la couleur jaune vif pendant 1 sec
puis, on recommence la séquence tic-tac.

J'ai essayé de modifier les paramètres des var, mais cela reste pratiquement la
même chose.
Pour faire bref: 1 sec en jaune et 1 sec en blanc ... le tout , pendant 1 min,
puis on sort de la macro.

Merci de te pencher sur ce sujet, mais pas trop fort, car on bascule et on se
casse la figure .. -))
Merci
Jacques.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"isabelle" a écrit dans le message de groupe de discussion :
mgmqeo$14e$

salut Jacques,

bien sur,

Sub Macro1()
Dim x As Single
x = Timer
For i = 1 To 10000
Cells(1, 1).Interior.ColorIndex = 7
While Timer - x < 0.5 'pause 1/2 seconde
Wend
Cells(1, 1).Interior.ColorIndex = 6
While Timer - x < 0.5 'pause 1/2 seconde
Wend
Next i
End Sub

isabelle

Le 2015-04-15 17:00, Jacquouille a écrit :
Bonjour
Pour faire clignoter une cel, j'utilise une partie de procédure tirée chez
Misange (Excelabo.net:
--------------
For i = 1 To 10000
Cells(y, x).Interior.ColorIndex = 7
Cells(y, x).Interior.ColorIndex = 6
Next i
-----------
Mais cela clignote très vite.
Peut-être via timmer, pourrais-on afficher en jaune 1 seconde, puis 1 sec en
rouge, 1 sec en jaune .....pendant 1 minute?

Question subsidiaire pour départager les ex-aequo, comment puis-je afficher la
cel active (cells(y,x)) à 10 cm du bord gauche et à 10 cm du bord sup ?

Grand merci
Bonne soirée

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."

---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel
antivirus Avast.
http://www.avast.com





---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel
antivirus Avast.
http://www.avast.com

Avatar
MichD
Une toute dernière présentation de la dernière suggestion.

Toutes les variables à définir sont dans la procédure "Définir_Plage_Cellules"

N.B "TIMER" retourne le nombre de secondes à partir de minuit de chaque jour.
À minuit, la valeur retournée est 0. Par conséquent, si tu utilises la procédure autour
de minuit, l'exécution de la procédure peut devenir problématique.

Amuse-toi bien!

'----------------------------------------------------------------------------------------
Sub Définir_Plage_Cellules()
Dim Plg As Range, CouleurOrigine As Long
Dim DuréeTotale As Double, Délai As Double

'Durée pendant laquelle la cellule ou plage clignote
DuréeTotale = 60 '60 Secondes
'Délai entre la modification de l'affichage des couleurs
'Tu peux saisir une fraction de seconde :
'Exemple : 0.333 pour 1/3 seconde
Délai = 1 '1 seconde

With Worksheets("Feuil1")
'Tu définis la plage que tu veux faire clignoter
'Une plage de cellules ou seulement une cellule.
Set Plg = .Range("A1,A5,B10")
'En supposant que toute la plage est de la
'même couleur au départ
CouleurOrigine = Plg.Interior.Color
Call Appliquer_Couleur(Plg, DuréeTotale, Délai)
Plg.Interior.Color = CouleurOrigine
End With
End Sub
'----------------------------------------------------------------------------------------
Sub Appliquer_Couleur(Rg As Range, DuréeTotale As Double, Délai As Double)
Dim T As Double
T = Timer + DuréeTotale

Do While T >= Timer
With Rg.Interior
If .Color = vbWhite Then
.Color = vbYellow
Call Délai_Modifier_La_Couleur(Délai)
Else
.Color = xlNone
Call Délai_Modifier_La_Couleur(Délai)
End If
End With
DoEvents
Loop
End Sub
'----------------------------------------------------------------------------------------
Sub Délai_Modifier_La_Couleur(T As Double)
Dim S As Double
S = Timer + T
Do While S >= Timer
DoEvents
Loop
End Sub
'----------------------------------------------------------------------------------------
1 2 3