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

MFC clignotante

17 réponses
Avatar
michir
Bonjour,
J'aimerais faire clignoter une cellule (toujours la m=EAme, soit E2) d=E8s
que le texte qui s'affiche dans cette cellule est soit "Dimanche",
soit" F=E9ri=E9"
Il faudrait que cette macro (si c'est une macro) s'applique =E0 chacune
des 20 feuilles nomm=E9es "Jour 1" =E0 "Jour 20"
Merci =E0 tous
Michel

10 réponses

1 2
Avatar
MichD
Bonjour,

Voici un fichier exemple que tu devras adapter...
http://cjoint.com/?ADsmvqIbTUm

Et si tu veux que cela s'applique dans toutes les feuilles de calcul,
au lieu de mettre la procédure de la feuille "Sheet1" dans le module
de la feuille, il faut la mettre dans le ThisWorkbook du classeur dans
cet événement :

'------------------------------------
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Sh représente un objet feuille -> la feuille active de l'application
'comme cela doit s'appliquer à toutes les feuilles, tu n'en a pas
'besoin d'en spécifier une en particulier

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

MichD
--------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


Bonjour,
J'aimerais faire clignoter une cellule (toujours la même, soit E2) dès
que le texte qui s'affiche dans cette cellule est soit "Dimanche",
soit" Férié"
Il faudrait que cette macro (si c'est une macro) s'applique à chacune
des 20 feuilles nommées "Jour 1" à "Jour 20"
Merci à tous
Michel
Avatar
michir
Oui, Merci MichD
La macro me fait une crise de calgon sous prétexte que je suis en 64
bits...
Michel

On 18 avr, 12:26, "MichD" wrote:
Bonjour,

Voici un fichier exemple que tu devras adapter...http://cjoint.com/?ADsmv qIbTUm

Et si tu veux que cela s'applique dans toutes les feuilles de calcul,
au lieu de mettre la procédure de la feuille "Sheet1" dans le module
de la feuille, il faut la mettre dans le ThisWorkbook du classeur dans
cet événement :

'------------------------------------
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Rang e)
'Sh représente un objet feuille -> la feuille active de l'application
'comme cela doit s'appliquer à toutes les feuilles, tu n'en a pas
'besoin d'en spécifier une en particulier

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

MichD
--------------------------------------------
"michir"  a écrit dans le message de groupe de discussion :


Bonjour,
J'aimerais faire clignoter une cellule (toujours la même, soit E2) dè s
que le texte qui s'affiche dans cette cellule est soit "Dimanche",
soit" Férié"
Il faudrait que cette macro (si c'est une macro) s'applique à chacune
des 20 feuilles nommées "Jour 1" à "Jour 20"
Merci à tous
Michel
Avatar
MichD
Comme tu es avec la version 64 bits d'office, cette
dernière n'aime pas l'API 32 bits !

Il est possible de contourner la situation comme ceci :
et tu adaptes les valeurs selon la durée et la vitesse
de clignotement de ta cellule que tu désires.

'--------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim S As Double
With Range("A3,B7,C2,D7")
If Not Intersect(Target, .Cells) Is Nothing Then
If Application.Sum(.Cells) >= 20 Then
For i = 0 To 20 'Valeur à augmenter pour la durée !
If .Cells.Interior.ColorIndex = xlNone Then
.Cells.Interior.ColorIndex = 3
Else:
.Cells.Interior.ColorIndex = xlNone
End If
'La fonction sleep relève de l'API en module1
'Sleep 100
Pause 1 ' 1= une seconde,vitesse du clignotement
DoEvents
Next i
End If
.Cells.Interior.ColorIndex = xlNone
End If
End With
End Sub
'--------------------------------
Sub Pause(T As Double)
T = Timer + (T / 10)
Do While Timer <= T
DoEvents
Loop
End Sub
'--------------------------------


MichD
--------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


Oui, Merci MichD
La macro me fait une crise de calgon sous prétexte que je suis en 64
bits...
Michel

On 18 avr, 12:26, "MichD" wrote:
Bonjour,

Voici un fichier exemple que tu devras adapter...http://cjoint.com/?ADsmvqIbTUm

Et si tu veux que cela s'applique dans toutes les feuilles de calcul,
au lieu de mettre la procédure de la feuille "Sheet1" dans le module
de la feuille, il faut la mettre dans le ThisWorkbook du classeur dans
cet événement :

'------------------------------------
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Sh représente un objet feuille -> la feuille active de l'application
'comme cela doit s'appliquer à toutes les feuilles, tu n'en a pas
'besoin d'en spécifier une en particulier

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

MichD
--------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


Bonjour,
J'aimerais faire clignoter une cellule (toujours la même, soit E2) dès
que le texte qui s'affiche dans cette cellule est soit "Dimanche",
soit" Férié"
Il faudrait que cette macro (si c'est une macro) s'applique à chacune
des 20 feuilles nommées "Jour 1" à "Jour 20"
Merci à tous
Michel
Avatar
MichD
En passant, tu as essayé de modifier la déclaration de l'API du module4

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

Par

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


MichD
--------------------------------------------
Avatar
michir
Merci pour ton aide MichD
J'ai continué à chercher et cette macro me donne satisfaction, mais
j'aimerais la compléter sur deux points:
. qu'elle clignote également lorsque ma cellule (E2) affiche "Férié"
. qu'elle s'arrête de clignoter après 5 secondes (elle clignote
actuellement à chaque changement de cellule): voici

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim n As Byte
Dim Start As Variant
Dim i As Integer
If [E2] = "Dimanche" Then
Const Texte As String = ""
For i = 1 To 4
Cells(2, 5).Font.ColorIndex = 6
Cells(2, 5).Interior.ColorIndex = 3
For n = 1 To 10
Start = Timer
Do While Timer < Start + 1 / 100
Loop
If n Mod 5 = 0 Then
Cells(2, 5).Interior.ColorIndex = xlNone
Cells(2, 5).Font.ColorIndex = 1
End If
Next n
Next i
End If
Exit Sub
End Sub

Merci à toi
Michel

On 18 avr, 16:35, "MichD" wrote:
En passant, tu as essay de modifier la d claration de l'API du module4

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

Par

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

MichD
--------------------------------------------
Avatar
MichD
Si tu veux que la cellule clignote immédiatement après avoir changé de valeur
tu dois utiliser cet événement :

Dans le ThisWorkbook de ton classeur, si tu veux que la cellule clignote
immédiatement la modification de la valeur de la cellule E2.

Si tu veux que la cellule clignote si tu la sélectionnes, regarde l'événement
plus bas.

'----------------------------
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim n As Byte, Start As Double, i As Integer

If Not Intersect(Range("E2"), Target) Is Nothing Then
If UCase(Range("E2")) = "DIMANCHE" Or _
UCase(Range("E2")) = "FÉRIÉ" Then
Const Texte As String = ""
For i = 1 To 43
Cells(2, 5).Font.ColorIndex = 6
Cells(2, 5).Interior.ColorIndex = 3
For n = 1 To 10
Start = Timer
Do While Timer < Start + (1 / 100)
'DoEvents
Loop
If n Mod 5 = 0 Then
Cells(2, 5).Interior.ColorIndex = xlNone
Cells(2, 5).Font.ColorIndex = 1
End If
Next n
Next i
End If
End If
End Sub
'----------------------------
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)


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


MichD
--------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


Merci pour ton aide MichD
J'ai continué à chercher et cette macro me donne satisfaction, mais
j'aimerais la compléter sur deux points:
. qu'elle clignote également lorsque ma cellule (E2) affiche "Férié"
. qu'elle s'arrête de clignoter après 5 secondes (elle clignote
actuellement à chaque changement de cellule): voici

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim n As Byte
Dim Start As Variant
Dim i As Integer
If [E2] = "Dimanche" Then
Const Texte As String = ""
For i = 1 To 4
Cells(2, 5).Font.ColorIndex = 6
Cells(2, 5).Interior.ColorIndex = 3
For n = 1 To 10
Start = Timer
Do While Timer < Start + 1 / 100
Loop
If n Mod 5 = 0 Then
Cells(2, 5).Interior.ColorIndex = xlNone
Cells(2, 5).Font.ColorIndex = 1
End If
Next n
Next i
End If
Exit Sub
End Sub

Merci à toi
Michel

On 18 avr, 16:35, "MichD" wrote:
En passant, tu as essay de modifier la d claration de l'API du module4

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

Par

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

MichD
--------------------------------------------
Avatar
michir
Merci MichD, cela fonctionne
Un dernière question (enfin, avant la prochaine...).
J'ai des soucis avec Ucase. J'aimerais que le clignotement fonctionne
avec "Férié" au lieu de "FERIE"... comment fais tu ?
Merci
Michel


On 18 avr, 18:55, "MichD" wrote:
Si tu veux que la cellule clignote immédiatement après avoir changé de valeur
tu dois utiliser cet événement :

Dans le ThisWorkbook de ton classeur, si tu veux que la cellule clignote
immédiatement la modification de la valeur de la cellule E2.

Si tu veux que la cellule clignote si tu la sélectionnes, regarde l'é vénement
plus bas.

'----------------------------
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Rang e)
Dim n As Byte, Start As Double, i As Integer

If Not Intersect(Range("E2"), Target) Is Nothing Then
    If UCase(Range("E2")) = "DIMANCHE" Or _
        UCase(Range("E2")) = "FÉRIÉ" Then
        Const Texte As String = ""
        For i = 1 To 43
            Cells(2, 5).Font.ColorIndex = 6
            Cells(2, 5).Interior.ColorIndex = 3
            For n = 1 To 10
                Start = Timer
                Do While Timer < Start + (1 / 100)
                    'DoEvents
                Loop
                If n Mod 5 = 0 Then
                    Cells(2, 5).Interior.ColorIndex = xlNone
                    Cells(2, 5).Font.ColorIndex = 1
                End If
            Next n
        Next i
    End If
End If
End Sub
'----------------------------
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Targe t As Range)

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

MichD
--------------------------------------------
"michir"  a écrit dans le message de groupe de discussion :


Merci pour ton aide MichD
J'ai continué à chercher et cette macro me donne satisfaction, mais
j'aimerais la compléter sur deux points:
. qu'elle clignote également lorsque ma cellule (E2) affiche "Férié "
. qu'elle s'arrête de clignoter après 5 secondes (elle clignote
actuellement à chaque changement de cellule): voici

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim n As Byte
Dim Start As Variant
Dim i As Integer
If [E2] = "Dimanche" Then
Const Texte As String = ""
For i = 1 To 4
Cells(2, 5).Font.ColorIndex = 6
Cells(2, 5).Interior.ColorIndex = 3
For n = 1 To 10
Start = Timer
Do While Timer < Start + 1 / 100
Loop
If n Mod 5 = 0 Then
Cells(2, 5).Interior.ColorIndex = xlNone
Cells(2, 5).Font.ColorIndex = 1
End If
Next n
Next i
End If
Exit Sub
End Sub

Merci à toi
Michel

On 18 avr, 16:35, "MichD" wrote:







> En passant, tu as essay de modifier la d claration de l'API du module4

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

> Par

> Declare Sub Sleep Lib "kernel64" (ByVal dwMilliseconds As Long)

> MichD
> --------------------------------------------
Avatar
michir
D'une manière générale, comment s'affranchir de la casse pour DIMANCH E
et FERIE ?
Merci

On 18 avr, 18:55, "MichD" wrote:
Si tu veux que la cellule clignote immédiatement après avoir changé de valeur
tu dois utiliser cet événement :

Dans le ThisWorkbook de ton classeur, si tu veux que la cellule clignote
immédiatement la modification de la valeur de la cellule E2.

Si tu veux que la cellule clignote si tu la sélectionnes, regarde l'é vénement
plus bas.

'----------------------------
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Rang e)
Dim n As Byte, Start As Double, i As Integer

If Not Intersect(Range("E2"), Target) Is Nothing Then
    If UCase(Range("E2")) = "DIMANCHE" Or _
        UCase(Range("E2")) = "FÉRIÉ" Then
        Const Texte As String = ""
        For i = 1 To 43
            Cells(2, 5).Font.ColorIndex = 6
            Cells(2, 5).Interior.ColorIndex = 3
            For n = 1 To 10
                Start = Timer
                Do While Timer < Start + (1 / 100)
                    'DoEvents
                Loop
                If n Mod 5 = 0 Then
                    Cells(2, 5).Interior.ColorIndex = xlNone
                    Cells(2, 5).Font.ColorIndex = 1
                End If
            Next n
        Next i
    End If
End If
End Sub
'----------------------------
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Targe t As Range)

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

MichD
--------------------------------------------
"michir"  a écrit dans le message de groupe de discussion :


Merci pour ton aide MichD
J'ai continué à chercher et cette macro me donne satisfaction, mais
j'aimerais la compléter sur deux points:
. qu'elle clignote également lorsque ma cellule (E2) affiche "Férié "
. qu'elle s'arrête de clignoter après 5 secondes (elle clignote
actuellement à chaque changement de cellule): voici

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim n As Byte
Dim Start As Variant
Dim i As Integer
If [E2] = "Dimanche" Then
Const Texte As String = ""
For i = 1 To 4
Cells(2, 5).Font.ColorIndex = 6
Cells(2, 5).Interior.ColorIndex = 3
For n = 1 To 10
Start = Timer
Do While Timer < Start + 1 / 100
Loop
If n Mod 5 = 0 Then
Cells(2, 5).Interior.ColorIndex = xlNone
Cells(2, 5).Font.ColorIndex = 1
End If
Next n
Next i
End If
Exit Sub
End Sub

Merci à toi
Michel

On 18 avr, 16:35, "MichD" wrote:







> En passant, tu as essay de modifier la d claration de l'API du module4

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

> Par

> Declare Sub Sleep Lib "kernel64" (ByVal dwMilliseconds As Long)

> MichD
> --------------------------------------------
Avatar
MichD
L'utilisation du Ucase, c'est simplement pour éviter que la procédure
soit sensible à la casse des caractères.

En ce sens, que tu écrives "Dimanche" ou "DIMANCHE" ou "DiMaNChe"
dans la cellule, la procédure fonctionnera car l'important c'est le mot
qui est écrit et non son format. Il en est de même pour l'expression "férié".

Si tu veux que la procédure devienne sensible à la casse des caractères, tu inscris :
If Range("E2") = "Dimanche" Or _
Range("E2") = "Férié" Then


MichD
--------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


D'une manière générale, comment s'affranchir de la casse pour DIMANCHE
et FERIE ?
Merci

On 18 avr, 18:55, "MichD" wrote:
Si tu veux que la cellule clignote immédiatement après avoir changé de valeur
tu dois utiliser cet événement :

Dans le ThisWorkbook de ton classeur, si tu veux que la cellule clignote
immédiatement la modification de la valeur de la cellule E2.

Si tu veux que la cellule clignote si tu la sélectionnes, regarde l'événement
plus bas.

'----------------------------
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim n As Byte, Start As Double, i As Integer

If Not Intersect(Range("E2"), Target) Is Nothing Then
If UCase(Range("E2")) = "DIMANCHE" Or _
UCase(Range("E2")) = "FÉRIÉ" Then
Const Texte As String = ""
For i = 1 To 43
Cells(2, 5).Font.ColorIndex = 6
Cells(2, 5).Interior.ColorIndex = 3
For n = 1 To 10
Start = Timer
Do While Timer < Start + (1 / 100)
'DoEvents
Loop
If n Mod 5 = 0 Then
Cells(2, 5).Interior.ColorIndex = xlNone
Cells(2, 5).Font.ColorIndex = 1
End If
Next n
Next i
End If
End If
End Sub
'----------------------------
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

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

MichD
--------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


Merci pour ton aide MichD
J'ai continué à chercher et cette macro me donne satisfaction, mais
j'aimerais la compléter sur deux points:
. qu'elle clignote également lorsque ma cellule (E2) affiche "Férié"
. qu'elle s'arrête de clignoter après 5 secondes (elle clignote
actuellement à chaque changement de cellule): voici

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim n As Byte
Dim Start As Variant
Dim i As Integer
If [E2] = "Dimanche" Then
Const Texte As String = ""
For i = 1 To 4
Cells(2, 5).Font.ColorIndex = 6
Cells(2, 5).Interior.ColorIndex = 3
For n = 1 To 10
Start = Timer
Do While Timer < Start + 1 / 100
Loop
If n Mod 5 = 0 Then
Cells(2, 5).Interior.ColorIndex = xlNone
Cells(2, 5).Font.ColorIndex = 1
End If
Next n
Next i
End If
Exit Sub
End Sub

Merci à toi
Michel

On 18 avr, 16:35, "MichD" wrote:







> En passant, tu as essay de modifier la d claration de l'API du module4

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

> Par

> Declare Sub Sleep Lib "kernel64" (ByVal dwMilliseconds As Long)

> MichD
> --------------------------------------------
Avatar
michir
Merci MichD
Bizarre, il n'accepte pas "Férié" et je ne sais pourquoi. Je te joins
le fichier
Michel
http://www.cijoint.fr/cjlink.php?file=cj201104/cij0SvQChc.xlsm

On 19 avr, 14:08, "MichD" wrote:
L'utilisation du Ucase, c'est simplement pour éviter que la procédure
soit sensible à la casse des caractères.

En ce sens, que tu écrives "Dimanche" ou "DIMANCHE" ou "DiMaNChe"
dans la cellule, la procédure fonctionnera car l'important c'est le mot
qui est écrit et non son format. Il en est de même pour l'expression "férié".

Si tu veux que la procédure devienne sensible à la casse des caract ères, tu inscris :
If Range("E2") = "Dimanche" Or _
         Range("E2") = "Férié" Then

MichD
--------------------------------------------
"michir"  a écrit dans le message de groupe de discussion :


D'une manière générale, comment s'affranchir de la casse pour DIMAN CHE
et FERIE ?
Merci

On 18 avr, 18:55, "MichD" wrote:







> Si tu veux que la cellule clignote immédiatement après avoir chang é de valeur
> tu dois utiliser cet événement :

> Dans le ThisWorkbook de ton classeur, si tu veux que la cellule clignot e
> immédiatement la modification de la valeur de la cellule E2.

> Si tu veux que la cellule clignote si tu la sélectionnes, regarde l' événement
> plus bas.

> '----------------------------
> Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Ra nge)
> Dim n As Byte, Start As Double, i As Integer

> If Not Intersect(Range("E2"), Target) Is Nothing Then
>     If UCase(Range("E2")) = "DIMANCHE" Or _
>         UCase(Range("E2")) = "FÉRIÉ" Then
>         Const Texte As String = ""
>         For i = 1 To 43
>             Cells(2, 5).Font.ColorIndex = 6
>             Cells(2, 5).Interior.ColorIndex = 3
>             For n = 1 To 10
>                 Start = Timer
>                 Do While Timer < Start + (1 / 100)
>                     'DoEvents
>                 Loop
>                 If n Mod 5 = 0 Then
>                     Cells(2, 5).Interior.ColorIndex = xlNone
>                     Cells(2, 5).Font.ColorIndex = 1
>                 End If
>             Next n
>         Next i
>     End If
> End If
> End Sub
> '----------------------------
> Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Tar get As Range)

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

> MichD
> --------------------------------------------
> "michir"  a écrit dans le message de groupe de discussion :
>

> Merci pour ton aide MichD
> J'ai continué à chercher et cette macro me donne satisfaction, mais
> j'aimerais la compléter sur deux points:
> . qu'elle clignote également lorsque ma cellule (E2) affiche "Féri é"
> . qu'elle s'arrête de clignoter après 5 secondes (elle clignote
> actuellement à chaque changement de cellule): voici

> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
> Dim n As Byte
> Dim Start As Variant
> Dim i As Integer
> If [E2] = "Dimanche" Then
> Const Texte As String = ""
> For i = 1 To 4
> Cells(2, 5).Font.ColorIndex = 6
> Cells(2, 5).Interior.ColorIndex = 3
> For n = 1 To 10
> Start = Timer
> Do While Timer < Start + 1 / 100
> Loop
> If n Mod 5 = 0 Then
> Cells(2, 5).Interior.ColorIndex = xlNone
> Cells(2, 5).Font.ColorIndex = 1
> End If
> Next n
> Next i
> End If
> Exit Sub
> End Sub

> Merci à toi
> Michel

> On 18 avr, 16:35, "MichD" wrote:

> > En passant, tu as essay de modifier la d claration de l'API du module 4

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

> > Par

> > Declare Sub Sleep Lib "kernel64" (ByVal dwMilliseconds As Long)

> > MichD
> > --------------------------------------------
1 2