OVH Cloud OVH Cloud

Cellule clignotante

1 réponse
Avatar
Denys
Bonjour =E0 tous,

En fouillant sur le site de Fr=E9d=E9ric Sigonneau, j'ai vu=20
des instructions pour avoir une cellule clignotante. Apr=E8s=20
de l=E9g=E8res modifications, cela fonctionne =E0 mon go=FBt, sauf=20
que je voudrais bien que la macro cesse de s'ex=E9cuter =E0 la=20
sortie du programme.

Comment fait-on pour qu'une macro arr=EAte de fonctionner?=20
Car =E0 chaque fois que je ferme l'application, elle s'ouvre=20
d'elle m=EAme automatiquement!!!!

Dans le workbook open, j'appelle l'instruction InitFlash

Sub InitFlash()
Set OldCell =3D ActiveCell
OrigBkgCol =3D ActiveCell.Interior.ColorIndex
OrigTxtCol =3D ActiveCell.Font.ColorIndex
Application.OnTime Now + TimeValue("00:00:01"), "Flash"
End Sub

Sub Flash()
If ActiveCell.Interior.ColorIndex < 0 Then
ActiveCell.Interior.ColorIndex =3D 3 'fond noir
ActiveCell.Font.ColorIndex =3D 2 'texte en blanc
Else
ActiveCell.Interior.ColorIndex =3D=20
(ActiveCell.Interior.ColorIndex + 1) Mod 2
ActiveCell.Font.Color =3D 1
ActiveCell.Interior.ColorIndex =3D 3
End If
Application.OnTime Now + TimeValue("00:00:01"), "Flash"
End Sub

J'aimerais bien pouvoir arr=EAter cette macro...

Merci de votre aide...

Denys

1 réponse

Avatar
michdenis
Bonjour Denys,


Pour la cellule qui flashe :

Copie tout ce qui suit dans un module standard.
UnStop est une variable qui doit être déclaré dans le haut du module.

Pour arrêter la procédure, tu peux utiliser un bouton de commande dans la feuille et lui attacher la macro : "Sub
ArreterLaMacro" défini plus bas... ou tu peux utiliser des événements dans le ThisWorkbook :Exemple : le changement de
la feuille comme déclencheur pour arrêter la macro . A copier dans le thisWorkbook
'--------------------
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

UnStop = False

End Sub
'----------------------

Si tu veux pouvoir exécuter une ou des macros sur une feuille donnée sans que cela ne cause de problème avec le fait
qu'elle soit protégée. copie ceci dans le ThisWorkbook de ton classeur. Cette procédure va s'exécuter à l'ouverture du
classeur et te permettre d'exécuter toutes les macros que tu voudras sur la feuille (ou les feuilles) que tu auras
choisies.
'------------------------
Private Sub Workbook_Open()

With Worksheets("Feuil1")
.Protect "toto", True, True, True, True
End With

End Sub
'------------------------


L'ensemble des procédures à mettre dans le module standard.
'---------------------------------------
Public UnStop As Boolean

Sub InitFlash()
UnStop = True
Set OldCell = ActiveCell
OrigBkgCol = ActiveCell.Interior.ColorIndex
OrigTxtCol = ActiveCell.Font.ColorIndex
Application.OnTime Now + TimeValue("00:00:01"), "Flash"
End Sub

Sub Flash()

If ActiveCell.Interior.ColorIndex < 8 Then
ActiveCell.Interior.ColorIndex = 3 'fond noir
ActiveCell.Font.ColorIndex = 2 'texte en blanc
Else
ActiveCell.Interior.ColorIndex = _
(ActiveCell.Interior.ColorIndex + 1) Mod 2
ActiveCell.Font.Color = 1
ActiveCell.Interior.ColorIndex = 3
End If
DoEvents
If UnStop = False Then
Exit Sub
Else
DoEvents
Application.OnTime Now + TimeValue("00:00:01"), "Flash"
End If
End Sub

Sub ArreterLaMacro()
UnStop = False
End Sub
'--------------------------------


Salutations!




"Denys" a écrit dans le message de news:100201c37dfb$0db5afe0$
Rebonjour,

De plus, je ne peux me servir de cette macro si ma feuille
est protégée..... Ca va mal!!!!

Denys


-----Original Message-----
Bonjour à tous,

En fouillant sur le site de Frédéric Sigonneau, j'ai vu
des instructions pour avoir une cellule clignotante.
Après

de légères modifications, cela fonctionne à mon goût,
sauf

que je voudrais bien que la macro cesse de s'exécuter à
la

sortie du programme.

Comment fait-on pour qu'une macro arrête de fonctionner?
Car à chaque fois que je ferme l'application, elle
s'ouvre

d'elle même automatiquement!!!!

Dans le workbook open, j'appelle l'instruction InitFlash

Sub InitFlash()
Set OldCell = ActiveCell
OrigBkgCol = ActiveCell.Interior.ColorIndex
OrigTxtCol = ActiveCell.Font.ColorIndex
Application.OnTime Now + TimeValue
("00:00:01"), "Flash"

End Sub

Sub Flash()
If ActiveCell.Interior.ColorIndex < 0 Then
ActiveCell.Interior.ColorIndex = 3 'fond noir
ActiveCell.Font.ColorIndex = 2 'texte en blanc
Else
ActiveCell.Interior.ColorIndex >(ActiveCell.Interior.ColorIndex + 1) Mod 2
ActiveCell.Font.Color = 1
ActiveCell.Interior.ColorIndex = 3
End If
Application.OnTime Now + TimeValue("00:00:01"), "Flash"
End Sub

J'aimerais bien pouvoir arrêter cette macro...

Merci de votre aide...

Denys
.