Clignotement conditionnel d'une cellule (ne fonctionne pas toujours !)
3 réponses
JAL
Bonjour , avez-vous une idée sur ce problème
...
Je viens de tester un morceau de VB ci-dessous...
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Target.Select
If IsNumeric(Target) Then
If ActiveCell.Value > 100 Then Call Clignotement
End If
End Sub
fait passer la couleur de remplissage du blanc
au rouge 300 fois.
Sub Clignotement()
Set plage = ActiveCell
Fond = ActiveCell.Interior.ColorIndex
For i = 1 To 300
plage.Interior.ColorIndex = 2
plage.Interior.ColorIndex = 3
Next i
plage.Interior.ColorIndex = Fond
End Sub
Celui-ci fonctionne mais ,... , pas toujours !
En effet , lorsqu'il est seul dans un fichier "tout neuf" cela va bien ,
sinon , dés que l'on rajoute un autre morceau de prog , il y à blocquage
Le message est alors : "Impossible de définir la propriété colorIndex"
Je ne parviens pas à trouver.... Auriez-vous la solution ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour Jal,
Copie ce qui suit dans le module feuille où l'action se déroule ...
'------------------------------ Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If IsNumeric(Target) And Target > 100 Then Call Clignotement(Target) End If
End Sub '------------------------------ Sub Clignotement(Rg As Range)
fond = Rg.Interior.ColorIndex For i = 1 To 300 Rg.Interior.ColorIndex = 3 Application.Wait Now + (TimeValue("00:00:01") / 2) Rg.Interior.ColorIndex = fond Next i
End Sub '------------------------------
Salutations!
"JAL" a écrit dans le message de news: % Bonjour , avez-vous une idée sur ce problème
... Je viens de tester un morceau de VB ci-dessous...
Private Sub Worksheet_Change(ByVal Target As Excel.Range) Target.Select If IsNumeric(Target) Then If ActiveCell.Value > 100 Then Call Clignotement End If End Sub
fait passer la couleur de remplissage du blanc au rouge 300 fois.
Sub Clignotement() Set plage = ActiveCell Fond = ActiveCell.Interior.ColorIndex For i = 1 To 300 plage.Interior.ColorIndex = 2 plage.Interior.ColorIndex = 3 Next i plage.Interior.ColorIndex = Fond End Sub
Celui-ci fonctionne mais ,... , pas toujours !
En effet , lorsqu'il est seul dans un fichier "tout neuf" cela va bien , sinon , dés que l'on rajoute un autre morceau de prog , il y à blocquage
Le message est alors : "Impossible de définir la propriété colorIndex"
Je ne parviens pas à trouver.... Auriez-vous la solution ?
Cordialement.
Bonjour Jal,
Copie ce qui suit dans le module feuille où l'action se déroule ...
'------------------------------
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If IsNumeric(Target) And Target > 100 Then
Call Clignotement(Target)
End If
End Sub
'------------------------------
Sub Clignotement(Rg As Range)
fond = Rg.Interior.ColorIndex
For i = 1 To 300
Rg.Interior.ColorIndex = 3
Application.Wait Now + (TimeValue("00:00:01") / 2)
Rg.Interior.ColorIndex = fond
Next i
End Sub
'------------------------------
Salutations!
"JAL" <nospam-xesjal@tiscali.fr> a écrit dans le message de news: %23MfOp3t5FHA.2192@TK2MSFTNGP14.phx.gbl...
Bonjour , avez-vous une idée sur ce problème
...
Je viens de tester un morceau de VB ci-dessous...
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Target.Select
If IsNumeric(Target) Then
If ActiveCell.Value > 100 Then Call Clignotement
End If
End Sub
fait passer la couleur de remplissage du blanc
au rouge 300 fois.
Sub Clignotement()
Set plage = ActiveCell
Fond = ActiveCell.Interior.ColorIndex
For i = 1 To 300
plage.Interior.ColorIndex = 2
plage.Interior.ColorIndex = 3
Next i
plage.Interior.ColorIndex = Fond
End Sub
Celui-ci fonctionne mais ,... , pas toujours !
En effet , lorsqu'il est seul dans un fichier "tout neuf" cela va bien ,
sinon , dés que l'on rajoute un autre morceau de prog , il y à blocquage
Le message est alors : "Impossible de définir la propriété colorIndex"
Je ne parviens pas à trouver.... Auriez-vous la solution ?
Copie ce qui suit dans le module feuille où l'action se déroule ...
'------------------------------ Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If IsNumeric(Target) And Target > 100 Then Call Clignotement(Target) End If
End Sub '------------------------------ Sub Clignotement(Rg As Range)
fond = Rg.Interior.ColorIndex For i = 1 To 300 Rg.Interior.ColorIndex = 3 Application.Wait Now + (TimeValue("00:00:01") / 2) Rg.Interior.ColorIndex = fond Next i
End Sub '------------------------------
Salutations!
"JAL" a écrit dans le message de news: % Bonjour , avez-vous une idée sur ce problème
... Je viens de tester un morceau de VB ci-dessous...
Private Sub Worksheet_Change(ByVal Target As Excel.Range) Target.Select If IsNumeric(Target) Then If ActiveCell.Value > 100 Then Call Clignotement End If End Sub
fait passer la couleur de remplissage du blanc au rouge 300 fois.
Sub Clignotement() Set plage = ActiveCell Fond = ActiveCell.Interior.ColorIndex For i = 1 To 300 plage.Interior.ColorIndex = 2 plage.Interior.ColorIndex = 3 Next i plage.Interior.ColorIndex = Fond End Sub
Celui-ci fonctionne mais ,... , pas toujours !
En effet , lorsqu'il est seul dans un fichier "tout neuf" cela va bien , sinon , dés que l'on rajoute un autre morceau de prog , il y à blocquage
Le message est alors : "Impossible de définir la propriété colorIndex"
Je ne parviens pas à trouver.... Auriez-vous la solution ?
Cordialement.
jb
Bonjour,
Worksheet_Change est activé pour tous les changements de la feuille, y compris les modifs de couleur et les effacements. Ci dessous, les événnements sont désactivés pendant l'eécution de la procédure.
http://cjoint.com/?llwK5zqFNi
Private Sub Worksheet_Change(ByVal Target As Excel.Range) Application.EnableEvents = False ' désactive les événements If Not Intersect([A1:B10], Target) Is Nothing Then ' champ A1: B10 seulement If IsNumeric(Target.Value) Then If Target.Value > 50 Then beep '--- clignote mémoFond = ActiveCell.Interior.ColorIndex For c = 1 To 100 Target.Interior.ColorIndex = 3 Target.Interior.ColorIndex = mémoFond Next '--- End If End If End If Application.EnableEvents = True End Sub
Ci dessous, le programme est activé seulement lors des saisies dans les cellules.
Sub auto_open() ActiveWorkbook.Worksheets("Feuil2").OnEntry = "clignote" End Sub
Sub clignote() If Not Intersect([A1:B10], ActiveCell) Is Nothing Then ' champ A1: B10 seulement If IsNumeric(ActiveCell) Then If ActiveCell > 50 Then beep '--- clignote mémoFond = ActiveCell.Interior.ColorIndex For c = 1 To 100 ActiveCell.Interior.ColorIndex = 3 ActiveCell.Interior.ColorIndex = mémoFond Next '--- End If End If End If End Sub
Cordialement JB
Bonjour,
Worksheet_Change est activé pour tous les changements de la feuille, y
compris les modifs de couleur et les effacements.
Ci dessous, les événnements sont désactivés pendant l'eécution de
la procédure.
http://cjoint.com/?llwK5zqFNi
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False ' désactive les
événements
If Not Intersect([A1:B10], Target) Is Nothing Then ' champ A1: B10
seulement
If IsNumeric(Target.Value) Then
If Target.Value > 50 Then
beep
'--- clignote
mémoFond = ActiveCell.Interior.ColorIndex
For c = 1 To 100
Target.Interior.ColorIndex = 3
Target.Interior.ColorIndex = mémoFond
Next
'---
End If
End If
End If
Application.EnableEvents = True
End Sub
Ci dessous, le programme est activé seulement lors des saisies dans
les cellules.
Sub auto_open()
ActiveWorkbook.Worksheets("Feuil2").OnEntry = "clignote"
End Sub
Sub clignote()
If Not Intersect([A1:B10], ActiveCell) Is Nothing Then ' champ A1: B10
seulement
If IsNumeric(ActiveCell) Then
If ActiveCell > 50 Then
beep
'--- clignote
mémoFond = ActiveCell.Interior.ColorIndex
For c = 1 To 100
ActiveCell.Interior.ColorIndex = 3
ActiveCell.Interior.ColorIndex = mémoFond
Next
'---
End If
End If
End If
End Sub
Worksheet_Change est activé pour tous les changements de la feuille, y compris les modifs de couleur et les effacements. Ci dessous, les événnements sont désactivés pendant l'eécution de la procédure.
http://cjoint.com/?llwK5zqFNi
Private Sub Worksheet_Change(ByVal Target As Excel.Range) Application.EnableEvents = False ' désactive les événements If Not Intersect([A1:B10], Target) Is Nothing Then ' champ A1: B10 seulement If IsNumeric(Target.Value) Then If Target.Value > 50 Then beep '--- clignote mémoFond = ActiveCell.Interior.ColorIndex For c = 1 To 100 Target.Interior.ColorIndex = 3 Target.Interior.ColorIndex = mémoFond Next '--- End If End If End If Application.EnableEvents = True End Sub
Ci dessous, le programme est activé seulement lors des saisies dans les cellules.
Sub auto_open() ActiveWorkbook.Worksheets("Feuil2").OnEntry = "clignote" End Sub
Sub clignote() If Not Intersect([A1:B10], ActiveCell) Is Nothing Then ' champ A1: B10 seulement If IsNumeric(ActiveCell) Then If ActiveCell > 50 Then beep '--- clignote mémoFond = ActiveCell.Interior.ColorIndex For c = 1 To 100 ActiveCell.Interior.ColorIndex = 3 ActiveCell.Interior.ColorIndex = mémoFond Next '--- End If End If End If End Sub
Cordialement JB
JAL
Merci pour vos réponses rapides et ... complètes...
Bien cordialement.
Merci pour vos réponses rapides et ... complètes...