Modifier tempo TimeValue

Bonjour a tous, forum bonjour,

J'ai récupérer ce petit code sur le site qui permets de faire clignoter une cellule ici (B9).

La tempo est de 1 Seconde par défaut.

Ma question :

Est t'il possible de modifier le code ci-dessous afin d'obtenir 0,5 seconde pour faire clignoter ma cellule (B)

Merci a vous pour votre aide, un bon dimanche a vous.

Cdlt Ray

Dim vNow As Variant

Sub Eclairage()
    vNow = Now + TimeValue("00:00:01")                      ' Réglage de tempo

        If Range("B9").Value <> "" Then
            If Range("B9").Interior.ColorIndex = 4 Then
                Range("B9").Interior.ColorIndex = 3
            Else
                Range("B9").Interior.ColorIndex = 4
            End If
        End If

    Application.OnTime vNow, "Eclairage"
End Sub

Public Sub Arr?tEclairage()
    Application.OnTime vNow, "Eclairage", schedule:=False
End Sub

Sub ess()
Range("B9").Interior.ColorIndex = 4
End Sub

Bonjour eliot raymond,

Je te propose ce code VBA :

Option Explicit

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

Dim vNow As Variant

Sub Eclairage()
  Sleep 50 ' Réglage de tempo en millisecondes
  With [B9]
    If .Value <> "" Then
      .Interior.ColorIndex = 7 - .Interior.ColorIndex
    End If
  End With
  Application.OnTime vNow, "Eclairage"
End Sub

Public Sub ArrêtEclairage()
  Application.OnTime vNow, "Eclairage", schedule:=False
End Sub

Sub ess()
  [B9].Interior.ColorIndex = 4
End Sub

Merci de me dire si ça te convient.

dhany

Salut Dhany,

Merci pour ta réponse, c'est sympa a toi.

J'ai supprimer la macro d'origine et mis ton code dans ma feuille 1 puis essai ca fonctionne pas

j'ai donc mis ton code dans un module puis de nouveau essai ca fonctionne pas

pas d'erreur a signaler, mais la cellule B9 ne clignote pas

Merci de ton aide

Raymond

Y'a pas longtemps, j'ai fait cet exo avec clignotement de cellule, qui marche très bien :

42exo-kleon.xlsm (20.59 Ko)

Regarde-le, car il pourra sûrement t'aider.

dhany

Re,

Merci pour le fichier pas mal cela va mettre utile sans aucun doute, étant joueur (modéré) de kéno, a creuser.

Je joint mon fichier qui coince.

But : juste faire clignoter la cellule B9 dès l'ouverture du fichier a une vitesse réglable.

Merci pour l'aide apportée.

Cdlt Ray

Re salut Dhany,

J'ai fait de multiples essais avec ton code mais je n'arrive pas a faire clignoter ma cellule B9.

je vais encore essayer après diner

Merci A plus tard et bon app

Cdlt Ray

@Ray

Bon appétit à toi aussi !

Je te retourne ton fichier modifié :

Faire clignoter la cellule B9 a été très facile ; c'est avec la macro FlashB9() que tu trouveras dans Module1, et que tu peux appeler directement par Ctrl e (c'est plus simple que via Alt F8).

Par contre, même si j'y suis finalement arrivé, faire clignoter B9 à l'ouverture du classeur a été très difficile ! car si tu mets dans Workbook_Open() un appel à FlashB9(), ça l'exécute bien à l'ouverture du classeur, mais avant que la feuille soit affichée ! donc on voit juste un fond gris et ça prend le temps des flashs invisibles ; c'est seulement après que la feuille apparaît, ce qui va pas du tout !!!

J'ai trouvé une astuce ! Temps 1 : faire lancer FlashB9() lors de l'activation de la 1ère feuille ; donc si tu vas sur une autre feuille et que tu reviens sur la 1ère feuille, B9 clignote ! et même juste comme ça, c'est déjà sympa !

Private Sub Worksheet_Activate()
  FlashB9
End Sub

Si tu as sauvé le classeur en étant sur la 1ère feuille, et que tu as fermé le classeur, lors de sa prochaine ouverture, la feuille active sera bien la 1ère feuille (normal), mais cette 1ère feuille a juste été affichée : elle n'a pas été activée, donc la sub Worksheet_Activate() n'est pas exécutée ! d'où la suite :

Temps 2 : dans Workbook_Open(), je sélectionne la 2ème feuille, puis la 1ère, uniquement pour que ce va-et-vient déclenche l'événement Worksheet_Activate() de la 1ère feuille :

Private Sub Workbook_Open()
  Application.ScreenUpdating = False: Worksheets(2).Select
  Application.ScreenUpdating = True: Worksheets(1).Select
End Sub

C'est donc comme cela qu'à l'ouverture du classeur, je déclenche indirectement l'appel à la sub FlashB9() ; inconvénient : tu dois obligatoirement avoir une autre feuille que la 1ère, et ça ne marchera plus si tu supprimes "Feuil2" et "Feuil3", mais j'ai pas trouvé d'moyen pour faire autrement !

Voilà pourquoi j'ai été si long à te répondre : c'était vraiment pas facile !!! peut-être qu'un autre intervenant connaît une méthode plus simple ?

dhany

Re salut dhany,

Merci beaucoup pour ta réponse et pour le retour du fichier c'est sympa a toi, tu vois je n'aurai pas su faire fonctionner.

Je me débrouille en VBA mais c'est parfois dur pour moi.

Donc cela fonctionne très bien comme tu le décris.

Par contre, je souhaiterai svp que la cellule B9 clignote en permanence mais pouvoir quand même stopper

le clignotement par un clic sur un bouton (STOP) sur la feuil1.

Et aussi avoir la possibilité de modifier (augmenter ou diminuer) la tempo bien sur dans la limite du possible.

Je te remercie beaucoup de ton aide et pour ton savoir partagé.

PS: je n'ai pas toucher au fichier que tu m'a retourner, je travaille sur une copie de celui-ci afin d'éviter tout cafouillage.

A plus tard bonne après midi.

Cdlt Raymond

Bonjour Raymond,

Tu a écrit :

avoir la possibilité de modifier (augmenter ou diminuer) la tempo

actuellement, ms est de 150 (nombre de millisecondes) ; plus ce nombre est grand, plus le clignotement est lent ; à l'inverse, plus ce nombre est petit, plus c'est rapide ; il suffit donc de l'ajuster à ta convenance.

comme ms est une constante, il faudrait modifier pour le mettre en variable publique, à initialiser dans Workbook_Open() à 150 (ou autre), et à modifier après-coup (quand le clignotement a cessé) :

a) via une sub pour l'augmenter de 10 en 10 (160, 170, 180... ➯ plus lent)

b) via une autre sub pour le diminuer de 10 en 10 (140, 130, 120... ➯ plus rapide)

j'ai écrit de 10 en 10, mais tu peux choisir de 20 en 20 ; je ne connais pas de moyen de faire ce changement de tempo pendant le clignotement ; de plus, si B9 clignote en permanence, c'est pas possible, car tu n'auras plus la main : tu pourras pas travailler sur ton classeur Excel pendant le clignotement ... sauf peut-être si tu utilises un timer (un des chronomètres internes) pour programmer d'avance le clignotement ? mais là, j'sais pas faire !

j'pense que j'pourrai y arriver en cherchant un peu, mais j'trouve que « le jeu n'en vaut pas la chandelle » : Excel est pas vraiment fait pour jouer avec des flashs (c'est pas un jeu vidéo, lolllll ! ).

enfin, je crois que tu te lasserais vite d'un clignotement permanent, car à la longue, ça fatigue la vue !

dhany

Salut dhany,

Merci pour les infos, j'ai chercher depuis hier mais pas trouver un code permettant de faire clignoter ma cellule B9 en

permanence dès l'ouverture du fichier.

Donc on va en rester la, ce n'ai pas grave, pas envie de faire non plus une usine a gaz.

Je te remercie pour ton travail et tes recherches pour me venir en aide.

Je te souhaite une bonne continuation, encore merci a toi.

Bien cordialement Raymond

Bonjour Raymond,

Merci pour ton retour, et bonne continuation à toi aussi.

dhany

Rechercher des sujets similaires à "modifier tempo timevalue"