Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Faire clignoter une cellule si ......

1,604 views
Skip to first unread message

Dom Férampière®©

unread,
Mar 18, 2010, 11:50:25 AM3/18/10
to

Bonjour,

Question déjà posée par moi ou par d'autres mais je n'arrive pas à faire
fonctionner avec les solutions proposées.
Faut dire que le VBA et moi .....

Avec mise en forme conditionnelle, je change la couleur de fond et celle
du texte sans problème mais ce n'est pas toujours suffisant pour attirer
l'oeil sur une alerte.
Y-a'-t'il une/des solutions plus simples (comme dans word par exemple)

Merci

--
Dom Férampière®©
-----------------------------------------------

michdenis

unread,
Mar 18, 2010, 3:06:11 PM3/18/10
to
Bonjour,

Voici un fichier exemple que tu peux télécharger : http://cjoint.com/?dsufUAYKCq


"Dom Férampière®©" <ner...@galacsys.news> a écrit dans le message de groupe de discussion
: MPG.260c6a2a4...@news.galacsys.net...

Dom Férampière®©

unread,
Mar 18, 2010, 3:56:44 PM3/18/10
to
À michdenis et aux lecteurs de passage :

Merci, pour la réponse, non seulement rapide mais ça me semble bien.
Hélas, je suis vraiment nul .... :-(
- C'est quoi le "moidule feuille" ?
- J'ai vu la macro clignotement mais je ne vois pas la condition > 20,
ni les références aux 4 cellules concernées .. C'ets où ? dans le module
feuille ? qui lui même est où ?
- Si l'alerte correspond à une date, ça ce met dans le module feuille ou
dans ???

Désolé mais suis pas doué

michdenis

unread,
Mar 18, 2010, 4:23:01 PM3/18/10
to
Module Feuille : Un clic droit sur l'onglet de la feuille et
tu sélectionnes la commande du menu contextuel
-visualiser le code- où le code est écrit, ce module est
le module feuille ou de classe de ladite feuille.

Dans la section de gauche, afficher l'arborescence des
objets de ton projetVBA, tu verras aussi l'item "Module1"
un double-clique et tu apercevras une ligne de code dans le haut.

"Dom Férampière®©" <ner...@galacsys.news> a écrit dans le message de groupe de discussion

: MPG.260ca3e8f...@news.galacsys.net...

Dom Férampière®©

unread,
Mar 18, 2010, 5:25:20 PM3/18/10
to
À michdenis et aux lecteurs de passage :

Merci pour tous ces renseignements. Je verrai ça dimanche car 2 jours
hors de la maison => à suivre

--
Dom Férampière®©
-----------------------------------------------

Dom Férampière®©

unread,
Mar 20, 2010, 10:13:08 AM3/20/10
to
À michdenis et aux lecteurs de passage :

> Merci, pour la réponse, mais hélas, je suis vraiment nul .... :-(

J'ai esayé le bidule (comparaison de la valeur de 2 cases) après la
signature mais fiasco.
De plus, y'a-t'il un lien avec la macro ?

On continue en privé pour éviter de surcharger le forum .... sauf si ça
peut en aider ?

Merci

--
Dom Férampière®©
-----------------------------------------------
Rem Private Sub Worksheet_Change(ByVal Target As Range)
Rem Dim S As Double
Rem With Range("A3,B7,C2,D7")
Rem If Not Intersect(Target, .Cells) Is Nothing Then
If "B22" = "P22" Then
For i = 0 To 40 'Valeur à augmenter pour la durée !
If ("B22").Interior.ColorIndex = xlNone Then
.Cell.Interior.ColorIndex = 3
Else:
.Cell.Interior.ColorIndex = xlNone
End If
'La fonction sleep relève de l'API en module1
Sleep 100 'vitesse du clignotement
DoEvents
Next i
End If
.Cells.Interior.ColorIndex = xlNone
Rem End If
End With

End Sub

michdenis

unread,
Mar 20, 2010, 10:38:28 AM3/20/10
to

| On continue en privé pour éviter de surcharger le forum
| .... sauf si ça peut en aider ?

**** Le forum et l'aide c'est ici.
Tout le mode peut participer et apporter des suggestions.
C'est ce qui fait la richesse du forum.

D'abord, il faut définir ta question. Où est-elle ?
Modifier une ligne du code que j'ai commis n'est pas suffisant...


Dom Férampière®©

unread,
Mar 20, 2010, 10:59:06 AM3/20/10
to
À michdenis et aux lecteurs de passage :

> **** Le forum et l'aide c'est ici.


> Tout le mode peut participer et apporter des suggestions.
> C'est ce qui fait la richesse du forum.

Vi mais vi mon incompétence, ça peut durer er dond faire beaucoup de
bande passante indésirable



> D'abord, il faut définir ta question. Où est-elle ?

If "B22" = "P22" Then

P22 correspond à une équivalence entre 2 dates ddmm donc après avoir
extrait ces jjmm de jjmmyyyy

--
Dom Férampière®©
-----------------------------------------------

michdenis

unread,
Mar 20, 2010, 1:36:36 PM3/20/10
to
Dans la cellule B22 ou P22,

si tu changes MANUELLEMENT ou par COPIER-COLLER,
la date de l'une de ces cellules et si le contenu de ces 2
cellules est égal, ces 2 cellules clignoteront. Dans les 2
cellules, j'ai supposé que tu avais un format "date" reconnu
par Excel.

La procédure suivante est à mettre dans le module feuille où
l'action se déroule. Pour ce faire, un clic droit sur l'onglet de
cette feuille et dans le menu contextuel, tu sélectionnes la
commande "Visualiser le code". Tu copies ce qui suit dans la
"page" blanche.

'----------------------------------------


Private Sub Worksheet_Change(ByVal Target As Range)

Dim S As Double
On Error Resume Next
With Range("B22,P22")


If Not Intersect(Target, .Cells) Is Nothing Then

If Range("B22").Value2 = Range("P22").Value Then
Range("B22").Select


For i = 0 To 40 'Valeur à augmenter pour la durée !

If Range("B22").Interior.ColorIndex = xlNone Then
.Cells.Interior.ColorIndex = 3
Else:
.Cells.Interior.ColorIndex = xlNone


End If
'La fonction sleep relève de l'API en module1
Sleep 100 'vitesse du clignotement
DoEvents
Next i
End If
.Cells.Interior.ColorIndex = xlNone

End If
End With

End Sub
'----------------------------------------

"Dom Férampière®©" <ner...@galacsys.news> a écrit dans le message de groupe de discussion

: MPG.260f01249...@news.galacsys.net...

michdenis

unread,
Mar 20, 2010, 1:50:33 PM3/20/10
to
Si le contenu des cellules B22 et P22 contient des formules
qui retournent des "dates", utilise plutôt cette procédure :

'----------------------------------------
Private Sub Worksheet_Calculate()
Dim S As Double
With Range("B22,P22")


If Range("B22").Value2 = Range("P22").Value Then
Range("B22").Select

For i = 0 To 40 'Valeur à augmenter pour la durée !

If Range("B22").Interior.ColorIndex = xlNone Then
.Cells.Interior.ColorIndex = 3
Else:

.Cells.Interior.ColorIndex = xlNone


End If
'La fonction sleep relève de l'API en module1
Sleep 100 'vitesse du clignotement
DoEvents
Next i
End If
.Cells.Interior.ColorIndex = xlNone

End With
End Sub
'----------------------------------------

"Dom Férampière®©" <ner...@galacsys.news> a écrit dans le message de groupe de discussion
: MPG.260f01249...@news.galacsys.net...

michdenis

unread,
Mar 20, 2010, 1:52:20 PM3/20/10
to
Dans la procédure

"Private Sub Worksheet_Change(ByVal Target As Range)"
Il serait préférable que tu remplaces :
la ligne : Range("B22").Select
par
Target.Select


Dom Férampière®©

unread,
Mar 24, 2010, 5:40:31 AM3/24/10
to
À michdenis et aux lecteurs de passage :

A L L E L U I A !!!!!!!!
Ca fonctionne (après de multiples tâtonnements !)

0 new messages