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

7 réponses

1 2
Avatar
MichD
Si tu utilises UCase(), pour que la comparaison soit identique, tu
fais comme ceci dans la procédure...

If UCase(Range("E2")) = "DIMANCHE" Or _
UCase(Range("E2")) = "FÉRIÉ" Then


MichD
--------------------------------------------
Avatar
michir
Re,
Je pense avoir trouvé grâce à toi MichD
Pour une raison inconnue, mon éditeur ne reconnaît pas les lettres
accentuée, ainsi" férié" devient" fri" et n'est donc pas reconnu par
la macro
Merci, pour tout MichD, Je ne veux pas abuser de ta disponibilité
Je vais arrêter là...pour aujourd'hui...sourire
Michel

On 19 avr, 16:23, michir wrote:
Merci MichD
Bizarre, il n'accepte pas "Férié" et je ne sais pourquoi. Je te joins
le fichier
Michelhttp://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édu re
> 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 m ot
> qui est écrit et non son format. Il en est de même pour l'expressio n "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 DIM ANCHE
> et FERIE ?
> Merci

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

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

> > Dans le ThisWorkbook de ton classeur, si tu veux que la cellule clign ote
> > 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.ColorInd ex = 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 T arget 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, ma is
> > j'aimerais la compléter sur deux points:
> > . qu'elle clignote également lorsque ma cellule (E2) affiche "Fér ié"
> > . 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 modu le4

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

> > > Par

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

> > > MichD
> > > --------------------------------------------
Avatar
michir
Une dernière colle. Lorsque "DIMANCHE" ou "FERIE" est obtenu par une
formule en E2 et non par une saisie, la macro ne fonctionne pas....
Sinon, c'est parfait lorsque l'on saisi
Michel

On 19 avr, 16:28, "MichD" wrote:
Si tu utilises UCase(), pour que la comparaison soit identique, tu
fais comme ceci dans la proc dure...

If UCase(Range("E2")) = "DIMANCHE" Or _
        UCase(Range("E2")) = "F RI " Then

MichD
--------------------------------------------
Avatar
MichD
Si en E2, c'est une formule qui retourne Dimanche ou Férié
tu dois utiliser cet événement du Thisworkbook

Il faudra que tu modifies un peu la procédure car dans la ligne de déclaration
de cette procédure, il n'y a pas d'objet range "Target".

'------------------------
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
'Insère la procédure ici.
End Sub
'------------------------


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


Une dernière colle. Lorsque "DIMANCHE" ou "FERIE" est obtenu par une
formule en E2 et non par une saisie, la macro ne fonctionne pas....
Sinon, c'est parfait lorsque l'on saisi
Michel

On 19 avr, 16:28, "MichD" wrote:
Si tu utilises UCase(), pour que la comparaison soit identique, tu
fais comme ceci dans la proc dure...

If UCase(Range("E2")) = "DIMANCHE" Or _
UCase(Range("E2")) = "F RI " Then

MichD
--------------------------------------------
Avatar
michir
Re,
J'ai essayé ta dernière modification, mais elle bogue
Je joint le fichier
Michel
http://www.cijoint.fr/cjlink.php?file=cj201104/cij527CuD2.xlsm



On 19 avr, 18:00, "MichD" wrote:
Si en E2, c'est une formule qui retourne Dimanche ou F ri
tu dois utiliser cet v nement du Thisworkbook

Il faudra que tu modifies un peu la proc dure car dans la ligne de d clar ation
de cette proc dure, il n'y a pas d'objet range "Target".

'------------------------
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
'Ins re la proc dure ici.
End Sub
'------------------------

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


Une derni re colle. Lorsque "DIMANCHE" ou "FERIE" est obtenu par une
formule en E2 et non par une saisie, la macro ne fonctionne pas....
Sinon, c'est parfait lorsque l'on saisi
Michel

On 19 avr, 16:28, "MichD" wrote:







> Si tu utilises UCase(), pour que la comparaison soit identique, tu
> fais comme ceci dans la proc dure...

> If UCase(Range("E2")) = "DIMANCHE" Or _
>         UCase(Range("E2")) = "F RI " Then

> MichD
> --------------------------------------------
Avatar
MichD
Ceci fonctionne très bien, je t'avais déjà mis au parfum à propos
de l'usage de l'expression "Target" (range) non disponible dans cet
événement !

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

If UCase(Range("E2")) = "DIMANCHE" Or _
UCase(Range("E2")) = "FERIE" Then
'If UCase(Range("E2")) = "DIMANCHE" Or _
'UCase(Range("E2")) = "Férié" Then
Const Texte As String = ""
For i = 1 To 20
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 Sub
'-----------------------------------------------

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


Re,
J'ai essayé ta dernière modification, mais elle bogue
Je joint le fichier
Michel
http://www.cijoint.fr/cjlink.php?file=cj201104/cij527CuD2.xlsm



On 19 avr, 18:00, "MichD" wrote:
Si en E2, c'est une formule qui retourne Dimanche ou F ri
tu dois utiliser cet v nement du Thisworkbook

Il faudra que tu modifies un peu la proc dure car dans la ligne de d claration
de cette proc dure, il n'y a pas d'objet range "Target".

'------------------------
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
'Ins re la proc dure ici.
End Sub
'------------------------

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


Une derni re colle. Lorsque "DIMANCHE" ou "FERIE" est obtenu par une
formule en E2 et non par une saisie, la macro ne fonctionne pas....
Sinon, c'est parfait lorsque l'on saisi
Michel

On 19 avr, 16:28, "MichD" wrote:







> Si tu utilises UCase(), pour que la comparaison soit identique, tu
> fais comme ceci dans la proc dure...

> If UCase(Range("E2")) = "DIMANCHE" Or _
> UCase(Range("E2")) = "F RI " Then

> MichD
> --------------------------------------------
Avatar
michir
Re,
Ok , ta dernière macro fonctionne parfaitement bien
Merci à toi MichD.
Il me reste à savoir pourquoi mon éditeur ne reconnaît pas les lettre s
accentuées
Michel

On 20 avr, 12:16, "MichD" wrote:
Ceci fonctionne tr s bien, je t'avais d j mis au parfum propos
de l'usage de l'expression "Target" (range) non disponible dans cet
v nement !

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

If UCase(Range("E2")) = "DIMANCHE" Or _
        UCase(Range("E2")) = "FERIE" Then
    'If UCase(Range("E2")) = "DIMANCHE" Or _
        'UCase(Range("E2")) = "F ri " Then
        Const Texte As String = ""
        For i = 1 To 20
            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 Sub
'-----------------------------------------------

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


Re,
J'ai essay ta derni re modification, mais elle bogue
Je joint le fichier
Michelhttp://www.cijoint.fr/cjlink.php?file=cj201104/cij527CuD2.xlsm

On 19 avr, 18:00, "MichD" wrote:







> Si en E2, c'est une formule qui retourne Dimanche ou F ri
> tu dois utiliser cet v nement du Thisworkbook

> Il faudra que tu modifies un peu la proc dure car dans la ligne de d cl aration
> de cette proc dure, il n'y a pas d'objet range "Target".

> '------------------------
> Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
> 'Ins re la proc dure ici.
> End Sub
> '------------------------

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

> Une derni re colle. Lorsque "DIMANCHE" ou "FERIE" est obtenu par une
> formule en E2 et non par une saisie, la macro ne fonctionne pas....
> Sinon, c'est parfait lorsque l'on saisi
> Michel

> On 19 avr, 16:28, "MichD" wrote:

> > Si tu utilises UCase(), pour que la comparaison soit identique, tu
> > fais comme ceci dans la proc dure...

> > If UCase(Range("E2")) = "DIMANCHE" Or _
> >         UCase(Range("E2")) = "F RI " Then

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