Cellule clignotante
#1
Aspirant XLPages

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

 

 

Pièce jointe:
xls Classeur formule avec Alarme222222.xls   [ Taille: 53.00 Ko - Téléchargements: 520 ]
Hors Ligne
Rapport   Haut 

Re: Cellule clignotante
#2
Aspirant XLPages

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

 

Hors Ligne
Rapport   Haut 

Re: Cellule clignotante
#3
Webmestre

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

 
J'espère que ça pourra t'aider.

Bien cordialement,

 

 

Pièce jointe:
xls PourEriccool.xls   [ Taille: 57.50 Ko - Téléchargements: 494 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Cellule clignotante
#4
Aspirant XLPages

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 yes. Toujours aussi réactif et professionnel. Comme tu le sais, je suis ch...t blushet 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

Pièce jointe:
xls PourEriccool.xls   [ Taille: 54.00 Ko - Téléchargements: 550 ]
Hors Ligne
Rapport   Haut 

Re: Cellule clignotante
#5
Webmestre

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.

En espérant que ça réponde à ton besoin.

J'arrêterai là pour ma part car je crois, ericcool, que tu commences à transformer ton oeuvre en guirlande de noël, lol

 
Bien cordialement,

Pièce jointe:
xls PourEriccool2.xls   [ Taille: 60.00 Ko - Téléchargements: 472 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Cellule clignotante
#6
Aspirant XLPages

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

 

 

 

Hors Ligne
Rapport   Haut 

Re: Cellule clignotante
#7
Webmestre

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,

Je pense qu'en remplaçant simplement la procédure Private Sub Clign() par celle-ci, ça devrait le faire (voir pièce jointe) :
 

' 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.wink

 

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,

Pièce jointe:
xls PourEriccool3.xls   [ Taille: 60.50 Ko - Téléchargements: 494 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Cellule clignotante
#8
Aspirant XLPages

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

Hors Ligne
Rapport   Haut 

Re: Cellule clignotante
#9
Aspirant XLPages

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 frown. 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
Hors Ligne
Rapport   Haut 

Re: Cellule clignotante
#10
Webmestre

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é ! wink

 

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 frown).

 

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
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes