Cellule clignotante | ||
---|---|---|
Inscription: 26/10/2014
De ST QUENTIN 02
Messages:
30
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 30-10-2014 19h35
Bonsoir au forum & à son modérateur Bonsoir à toutes & à tous
Je viens vers vous car j'ai tenté (mon niveau en vBA est faible) d'appliquer une application de MdF (cellules clignotantes) à mon petit projet mais en vain. J'ai beau retourner le problème dans tous les sens, ce n'est pas ça, il manque un petit plus. Le but est qu'une alarme visuelle (voire sonore en plus mais bon...) se déclenche si l'écart est supérieur à 0.6 en F28. Merci à la personne qui voudra bien se pencher sur mon blème. Ericcool
|
|
|
Re: Cellule clignotante | ||
---|---|---|
Inscription: 26/10/2014
De ST QUENTIN 02
Messages:
30
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 14-11-2014 16h35
Bonjour le forum, Petit Up - Toujours pas d'âme charitable pour me dépanner ?? Ericcool
|
|
|
Re: Cellule clignotante | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 14-11-2014 18h26
Bonjour ericcool, le Forum,
En pièce jointe, peut-être une solution si j'ai bien compris le problème...
J'ai utilisé de le code VBA suivant :
DANS LE MODULE DE CODE DE L'OBJET THISWORKBOOK Option Explicit
' myDearFriend! - www.mdf-xlpages.com Private Sub Workbook_Open() Set CellCible = Sheets(1).Range("B28") Set CellTest = Sheets(1).Range("F28") 'Lance le clignotement à l'ouverture si Feuil1 est active et si la cellule F28 supérieure à 0.6 OkClign ActiveSheet End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) 'Interrompt le clignotement éventuel avant fermeture StopClign End Sub Private Sub Workbook_SheetActivate(ByVal Sh As Object) OkClign Sh End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Not Sh Is Feuil1 Then Exit Sub If Not Application.Intersect(Target, Sh.Range("F11:F26")) Is Nothing Then 'Lance ou stoppe le clignotement OkClign Sh End If End Sub
DANS UN MODULE DE CODE STANDARD (ex: Module1) Option Explicit
' myDearFriend! - www.mdf-xlpages.com Public CellCible As Range, CellTest As Range Dim Temps As Variant Public Sub OkClign(Sh As Worksheet) 'Lance le clignotement si Feuil1 est active et si la cellule F28 supérieure à 0.6 If Sh Is Feuil1 And CellTest.Value > 0.6 Then Clign Else StopClign End If End Sub Private Sub Clign() 'Programmation de l'évènement toutes les secondes Temps = Now + TimeValue("00:00:01") Application.OnTime Temps, "Clign" 'Affiche l'alerte ou la fait disparaître (alternativement) With CellCible .Interior.ColorIndex = IIf(.Interior.ColorIndex = 3, xlNone, 3) End With End Sub Public Sub StopClign() On Error Resume Next 'Stoppe la gestion de l'évènement OnTime Application.OnTime Temps, "Clign", , False On Error GoTo 0 'Cache l'alerte CellCible.Interior.ColorIndex = xlNone End Sub
Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Cellule clignotante | ||
---|---|---|
Inscription: 26/10/2014
De ST QUENTIN 02
Messages:
30
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 14-11-2014 19h01
Bonsoir le forum Bonsoir MyDearFriend
Grand Merki à toi Didier . Toujours aussi réactif et professionnel. Comme tu le sais, je suis ch...t et je me permets de poursuivre dans ma quête : 1- Si le tableau est vide, la première saisie génère une erreur "91" variable objet non définie (peut être la division par zéro .... Pas beau ... hein !!) ??? 2- Pourrait on envisager que le clignotement soit temporaire (10 secondes par exemple) ? 3- Cerise sur le gâteau : pourrais tu faire clignoter la shape; issue de ton application, en même temps que la cellule "B28" ??? Je te remercie par avance. Bonne soirée à toutes & à tous Ericcool |
|
|
Re: Cellule clignotante | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 15-11-2014 00h24
Re ericcool,
Ci-joint une façon de faire je pense....
J'ai d'abord modifié la procédure Workbook_Open() de l'objet ThisWorkbook comme suit :
Private Sub Workbook_Open()
With Sheets(1) Set CellCible = .Range("B28") Set CellTest = .Range("F28") Set ShapeAlerte = .Shapes("Alerte") ShapeAlerte.Visible = False End With 'Lance le clignotement à l'ouverture si Feuil1 est active et si la cellule F28 supérieure à 0.6 OkClign ActiveSheet End Sub
J'ai modifié ensuite le code du module Standard : Option Explicit
' myDearFriend! - www.mdf-xlpages.com Public CellCible As Range, CellTest As Range Public ShapeAlerte As Shape Dim Temps As Variant Public Sub OkClign(Sh As Worksheet) 'Lance le clignotement si Feuil1 est active et si la cellule F28 supérieure à 0.6 If Sh Is Feuil1 And CellTest.Value > 0.6 Then Clign True Else StopClign End If End Sub Private Sub Clign(Optional vInit As Boolean = False) Static TempsMax As Variant 'Programmation de l'évènement toutes les secondes Temps = Now + TimeValue("00:00:01") If vInit Then TempsMax = Now + TimeValue("00:00:12") End If Application.OnTime Temps, "Clign", TempsMax 'Affiche l'alerte ou la fait disparaître (alternativement) With CellCible .Interior.ColorIndex = IIf(.Interior.ColorIndex = 3, xlNone, 3) End With With ShapeAlerte .Visible = Not .Visible End With End Sub Public Sub StopClign() On Error Resume Next 'Stoppe la gestion de l'évènement OnTime Application.OnTime Temps, "Clign", , False On Error GoTo 0 'Cache l'alerte CellCible.Interior.ColorIndex = xlNone ShapeAlerte.Visible = False End Sub J'ai aussi modifié les formules en F27 et F28 pour éviter les valeurs d'erreur de calcul. Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Cellule clignotante | ||
---|---|---|
Inscription: 26/10/2014
De ST QUENTIN 02
Messages:
30
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 15-11-2014 07h37
Bonjour le forum Bonjour MyDearFriend
Alors là...... parfait, du Grand Art. - Je te remercie énormément pour le travail réalisé qui est, comme je l'ai dit, parfait (non ce n'est pas pour mettre autour du sapin). Allez pour le fun, on atteindrait l'EXCELlence si, à la fin du clignotement, on retrouvait la "position initiale" à savoir "ALARME !" : faisaible ===> Je dis oui pour le maître. Allez je pars bosser et reviens ce soir comptempler le chef d'oeuvre.
Bonne journée à toutes & à tous et surtout à notre ami MyDearFriend Ericcool
|
|
|
Re: Cellule clignotante | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 15-11-2014 12h06
Bonjour ericcool, le Forum, ' myDearFriend! - www.xlpages.com
Private Sub Clign(Optional vInit As Boolean = False) Static NbMax As Byte 'Programmation de l'évènement toutes les secondes Temps = Now + TimeValue("00:00:01") NbMax = IIf(vInit, 0, NbMax + 1) If NbMax < 10 Then 'Nbre de cycles maximum (à adapter) Application.OnTime Temps, "Clign" 'Affiche l'alerte ou la fait disparaître (alternativement) With CellCible.Interior .ColorIndex = IIf(.ColorIndex = 3, xlNone, 3) End With With ShapeAlerte .Visible = Not .Visible End With Else StopClign End If End Sub
Voilà, j'espère que ça ira ericcool.
Si la réponse te convient (et que tu n'as pas d'autre idée... lumineuse!) , je te remercie de solder ce fil de discussions comme indiqué dans ma signature.
Bien cordialement, Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|
Re: Cellule clignotante | ||
---|---|---|
Inscription: 26/10/2014
De ST QUENTIN 02
Messages:
30
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 15-11-2014 18h37
Re le forum Re MyDearFriend
Vous allez me trouver lourd mais mon désidérata était de retrouver (je n'ai pas tout dit... et m'en excuse) à l'issue du clignotement la cellule "B28" avec sur fond rouge, écrit en blanc ALARME ! (au cas où.... l'utilisateur aurait loupé un épisode.. lol). J'imprimérai le code demain pour l'étudier en espérant comprendre (ça c'est une autre histoire). Bonne soirée à toutes à & tous Ericcool |
|
|
Re: Cellule clignotante | ||
---|---|---|
Inscription: 26/10/2014
De ST QUENTIN 02
Messages:
30
Système d'exploitation: PC Version Excel utilisée: 2003 |
Posté le : 17-11-2014 21h04
Bonsoir le forum Bonsoir à toutes & à tous Bonsoir MyDearFriend
Après étude du code, il s'avèrerai que le dernier code fourni pour Private Sub Clign() 3ème version ne diffère pas de celui proposé la 2ème fois . Peut être n'ai je pas vu la subtilité mais il y a quelque chose qui m'échappe. Bonne soirée à toutes & à tous. Ericcool
Edité par ericcool le 17/11/2014 22:56:27
|
|
|
Re: Cellule clignotante | ||
---|---|---|
Inscription: 18/05/2006
De Saône-et-Loire (71)
Messages:
1539
Système d'exploitation: PC Version Excel utilisée: 97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365 |
Posté le : 17-11-2014 21h53
Bonsoir ericcool, le Forum,
Cher ericcool, oui, je pense que tu as raté quelque chose... et vu le temps que j'ai pu passer sur ton problème, j'ajoute même que ce fut loin d'être une subtilité !
Pour info, j'ai posté 3 fichiers dans ce fil de discussions. Chacun étant numéroté comme suit : PourEriccool, PourEriccool2 et.... PourEriccool3. Je te remercie de bien vouloir vérifier STP et prendre le temps de bien analyser l'ensemble et en particulier la procédure Clign() des fichiers numérotés 2 et 3.
Et si tu ne vois toujours pas la différence, je t'invite à simplement relire mes 3 posts dans lesquels, comme à mon habitude, j'ai pris la peine de recopier le code VBA utilisé dans chaque fichier joint et mis en évidence en gras les passages de code modifié à chaque fois (par souci pédagogique ).
En tout cas, je ne pourrai pas faire mieux ericcool et j'espère que tu pourras t'en sortir comme ça. Concernant ta dernière demande, je pense qu'un simple format conditionnel sur ta cellule B28 serait amplement suffisant (sans clignotement), sachant que le shape d'alerte clignotant, placé juste à côté, suffirait déjà bien à alerter l'utilisateur, aussi distrait ou inattentif soit-il.
Bien cordialement, Didier_mDF
Le Webmaster La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien |
|
|