Correction code - Merci

M

Marc

Guest
Bonjour le forum,
Je fais appel à vous encore et encore car je ne m'en sort pas. Je deviens fou.
Qui veut bien me dire ou je commet une (ou des) erreur dans ce code :

Option Explicit

Public OrigBkgCol As Long, OrigTxtCol As Long
Public OldCell As Range
Declare Sub Sleep Lib 'kernel32' (ByVal dwMilliseconds As Long)

Sub LookingForRedCell()
Dim FirstCell As Range
Dim Cell As Range
Dim Plage As Range
Dim i As Byte
For Each Cell In Range('B7:H183')
If Cell = Range('B1') Then
Set FirstCell = Cell
Exit For
End If
Next
If FirstCell Is Nothing Then
MsgBox 'Date ' & Range('B1') & ' non trouvée, procédure avortée', vbCritical
Exit Sub
End If
Set Plage = Range(FirstCell.Offset(1, 0), ActiveCell.Offset(98, 0))
'Moi j'ai juste mis un truc pour que ça clignotte dix fois (Rouge/Jaune/Rouge)
'pour attirer l'attention puis le code te laisse la main...
For Each Cell In Plage
If Cell.Interior.ColorIndex = 3 Then
Cell.Activate
For i = 1 To 10
Sleep (100)
Set OldCell = ActiveCell
Sleep (100000)
OrigBkgCol = ActiveCell.Interior.ColorIndex = 3
Sleep (100000)
OrigTxtCol = ActiveCell.Font.ColorIndex = 6
Application.OnTime Now + TimeValue('00:00:01'), 'Flash'
'Cell.Interior.ColorIndex = 3 'rouge
'Sleep (100)
'Cell.Interior.ColorIndex = 6 'jaune
Next i
Exit For
End If
Next
End Sub

En vous en remerciant très chaleureusement - Marc
 

jeromegmc

XLDnaute Occasionnel
Salut,

alors rapidement je vois plusieurs erreurs:

A propos de:
Code:
Set Plage = Range(FirstCell.Offset(1, 0), ActiveCell.Offset(98, 0))

je ne sais pas exactement ce que tu veux définir, mais pour définir une plage de cellules on peut utiliser ça sous cette forme:

Code:
Set Plage = Range(Cells(1, 1), Cells(2, 2))
'cellules A1:B2



A propos de:
Code:
Sleep (100)

Je ne le trouve pas dans l'aide, je te conseil de la remplacer par:

Code:
Application.Wait (Now + TimeValue('0:01:10'))


Dis moi si ça bug encore?

A+
 
M

Marc

Guest
Bonjour Jerome et merci de t'interesser à moi qui rame lamentablement. C'est vrai que c'est la premiere fois que je suis confronte a du code suite au dc de notre papy et de plus je ne comprends pas ce que je fait
D'autre part, le code initial m'a été donné par _Thierry et Didier mdF je suis incapable de t'en dire plus
C'est pourquoi je compte beaucoup sur vous pour arriver à finir l'application
Il s'agit de faire clignoter une cellule qui passe en rouge dans une plage comprise entre B7 et H183
En te remerciant

Option Explicit
Public OrigBkgCol As Long, OrigTxtCol As Long
Public OldCell As Range
Declare Sub Sleep Lib 'kernel32' (ByVal dwMilliseconds As Long)

Sub LookingForRedCell()
Dim FirstCell As Range
Dim Cell As Range
Dim Plage As Range
Dim i As Byte
For Each Cell In Range('B7:H183')
If Cell = Range('B1') Then
Set FirstCell = Cell
Exit For
End If
Next
If FirstCell Is Nothing Then
MsgBox 'Date ' & Range('B1') & ' non trouvée, procédure avortée', vbCritical
Exit Sub
End If
Set Plage = Range(FirstCell.Offset(1, 0), ActiveCell.Offset(98, 0))
'Moi j'ai juste mis un truc pour que ça clignotte dix fois (Rouge/Jaune/Rouge)
'pour attirer l'attention puis le code te laisse la main...
For Each Cell In Plage
If Cell.Interior.ColorIndex = 3 Then
Cell.Activate
For i = 1 To 10
Set OldCell = ActiveCell
Application.Wait (Now + TimeValue('0:01:10'))
'Sleep (100000)
OrigBkgCol = ActiveCell.Interior.ColorIndex = 3
Application.Wait (Now + TimeValue('0:01:10'))
'Sleep (100000)
OrigTxtCol = ActiveCell.Font.ColorIndex = 6
Application.OnTime Now + TimeValue('00:00:01'), 'Flash'
Next i
Exit For
End If
Next
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 396
Membres
103 534
dernier inscrit
Kalamymustapha