• Initiateur de la discussion Initiateur de la discussion tf1
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

tf1

XLDnaute Occasionnel
Bonjour,

Qui pourrait me dit SVP comment faire clignoter une cellule.

Par exemple je met un message texte en A1 puis je met B1=A1 et donc B1 clignotera avec le message qui se trouve dedans en rouge si possible et sa tend qu'il y a un message en A1 ....

Merci
 
Re : Clignotement

Bonjour Forum
Bonjour Philippe

ci joint un exemple a adapter 😱

A+
Grazie Didier Fourgeot (myDearFriend!)😎
 

Pièces jointes

Dernière édition:
Re : Clignotement

Bonjour tf1, Ilino,

C'est un sujet rabâché cette histoire de clignotement !

Une solution vite faite :

Code:
Private Sub CommandButton1_Click()
Dim p#, t#
p = 1 'période du clignotement en secondes
With CommandButton1
  If .Caption = "Lancer" Then
    .Caption = "Arrêter"
1   t = Timer
    While Timer < t + p / 2: DoEvents: Wend
    If IsError([MFC]) Then ThisWorkbook.Names.Add "MFC", True _
      Else ThisWorkbook.Names("MFC").Delete
    GoTo 1
  Else
    .Caption = "Lancer"
    On Error Resume Next
    ThisWorkbook.Names("MFC").Delete
    End
  End If
End With
End Sub
Fichier joint.

A+
 

Pièces jointes

Re : Clignotement

Bonjour à tous, salut job75 😉


tf1
C'est quand que tu mets les mains dans le cambouis?
Tu n'as pas envie de farfouiller un peu dans VBE, de tester par toi-même?
Tu sembles attendre du tout cuit, non ?
(N'oublies pas la loupe 😉)

PS: Comme le dit job75, ce sujet a été multi-traité sur le forum.
Les archives sont pleines de cellules qui clignotent à tout va, que ça en fait mal aux yeux 😉
 
Dernière édition:
Re : Clignotement

Bonjour le fil, le forum,

Oui Staple, tf1 doit utiliser des mouchoirs en dentelles.

Il y a 36 moyens de lancer la macro, en voici 4 :

Code:
Private Sub Workbook_Open()
Application.OnTime Now, "ThisWorkbook.Lancer"
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Lancer
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
Lancer
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
Lancer
End Sub

Sub Lancer()
Dim p#, t#
p = 1 'période du clignotement en secondes
If [A1] = Date Then
1 t = Timer
  While Timer < t + p / 2: DoEvents: Wend
  If IsError([MFC]) Then ThisWorkbook.Names.Add "MFC", True _
    Else ThisWorkbook.Names("MFC").Delete
  GoTo 1
Else
  On Error Resume Next
  ThisWorkbook.Names("MFC").Delete
  End
End If
End Sub
Fichier (2).

A+
 

Pièces jointes

Dernière édition:
Re : Clignotement

Re,

Souvent on cherche à mettre en évidence les doublons.

Fichier (3).

Edit : si le UsedRange est très grand la lecture de la propriété .Text prend beaucoup de temps.

Il vaut mieux l'éviter ou utiliser CStr :

Code:
If CStr(c) <> "" And d.Exists(c.Value) Then
Fichier (3 bis).

A+
 

Pièces jointes

Dernière édition:
Re : Clignotement

Bonjour à tous,

Sur un grand tableau l'utilisation de tablo accélère beaucoup la recherche des doublons :

Code:
Sub Lancer()
Dim p#, d As Object, tablo, e, doublon As Boolean, t#
p = 1 'période du clignotement en secondes
If Me.UsedRange.Count > 1 Then
  Set d = CreateObject("Scripting.Dictionary")
  tablo = Me.UsedRange 'matrice, plus rapide
  For Each e In tablo
    If CStr(e) <> "" And d.Exists(e) Then doublon = True: Exit For
    d(e) = ""
  Next
End If
If doublon Then
1 t = Timer
  While Timer < t + p / 2: DoEvents: Wend
  If IsError([UR]) Then Me.UsedRange.Name = "UR" _
    Else ThisWorkbook.Names("UR").Delete
  GoTo 1
Else
  On Error Resume Next
  ThisWorkbook.Names("UR").Delete
    End
End If
End Sub
Fichier (4).

A+
 

Pièces jointes

Re : Clignotement

Re,

En utilisant d(e) à la place de d.Exists(e) c'est encore un peu plus rapide :

Code:
Sub Lancer()
Dim p#, d As Object, tablo, e, doublon As Boolean, t#
p = 1 'période du clignotement en secondes
If Me.UsedRange.Count > 1 Then
  Set d = CreateObject("Scripting.Dictionary")
  tablo = Me.UsedRange 'matrice, plus rapide
  For Each e In tablo
    If CStr(e) <> "" And d(e) Then doublon = True: Exit For
    d(e) = True
  Next
End If
If doublon Then
1 t = Timer
  While Timer < t + p / 2: DoEvents: Wend
  If IsError([UR]) Then Me.UsedRange.Name = "UR" _
    Else ThisWorkbook.Names("UR").Delete
  GoTo 1
Else
  On Error Resume Next
  ThisWorkbook.Names("UR").Delete
  End
End If
End Sub
Fichier (5).

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
623
W
Réponses
4
Affichages
209
Réponses
17
Affichages
710
Réponses
19
Affichages
750
Retour