IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Clignotement de l'intitulé d'un "Label"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 79
    Par défaut Clignotement de l'intitulé d'un "Label"
    Bonjour à tous,

    Je souhaiterais intégrer le clignotement le "caption" d'un Label, du genre visible-pas visible avec un clignotement, rythmé à une seconde, pendant une durée de 10 secondes.

    D'abord, est-ce imaginable ? Puis, si oui, quel pourrait être le code ?

    J'ai vu quelque chose sur le clignotement d'une cellule mais rien sur les labels. Puis-je interpréter la proposition ?

    Merci de votre aide.

    Très cordialement,
    Maurice

  2. #2
    Membre confirmé
    Inscrit en
    Août 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Par défaut
    Hmm bah je pense tu peut reprendre le tempo que tu trouves dans ton lien et ensuite utiliser la méthode Visible pour rendre le caption invisible puis visible et ainsi de suite pendant 10 secondes!


    Chipss

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 77
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 79
    Par défaut
    Bonjour,

    Je vais donc tenter la transposition...

    Merci pour cette première aide.

    Cordialement,
    Maurice

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Je te propose une solution qui fonctionne pour tous les objets qui ont une propriété caption, et qui permet de choisir la durée du clignotement.
    Dans un module standard,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Public oObjCligno As Object
    Public sTextCligno As String
    Public iDureeCligno As Integer
     
     
    Public Sub subInitCligno(ByVal oLabel As Object, ByVal iDuree As Integer)
     
    sTextCligno = ""
    On Error Resume Next
        Set oObjCligno = oLabel
        sTextCligno = oObjCligno.Caption
        'vérifie que la variable obj contient qqc qui ait une prop Caption et que le texte nest pas ""
        If (sTextCligno = "") Or (iDuree <= 0) Then GoTo lblRAZ
    On Error GoTo 0
     
    iDureeCligno = iDuree
    Application.OnTime Now + TimeValue("00:00:01"), "subRefreshCligno"
     
    lblSortie:
        Exit Sub
     
    lblRAZ:
        Set oObjCligno = Nothing
        sTextCligno = ""
        iDureeCligno = 0
        GoTo lblSortie
     
    End Sub
     
     
    Public Sub subRefreshCligno()
     
    oObjCligno.Caption = IIf(oObjCligno.Caption = "", sTextCligno, "")
    iDureeCligno = iDureeCligno - 1
     
    If iDureeCligno > 0 Then
        Application.OnTime Now + TimeValue("00:00:01"), "subRefreshCligno"
     
    Else
        oObjCligno.Caption = sTextCligno
        Set oObjCligno = Nothing
        sTextCligno = ""
        iDureeCligno = 0
    End If
     
    End Sub
    Et pour déclencher le process, il suffit d'appeler subInitCligno en passant l'étiquette et la durée de clignotement souhaitée. Par exemple, pour un contrôle ActiveX "lblTexte1" dans une feuille, dans le module de feuille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub lblTexte1_Click()
    Call subInitCligno(Me.lblTexte1, 6)
    End Sub
    Cordialement,

    PGZ

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour tout le monde,

    Une autre façon de faire avec l'Api "GetTickCount" Pour lancer le test, entrer 10 dans la cellule A2 de la feuille où se trouve le Label. Le code ci-dessous est à mettre dans le modukle de la feuille en question, à adapter de toutes manières :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
     
    Private Declare Function GetTickCount Lib "Kernel32" () As Long
     
    Sub Minuterie(Milliseconde As Long)
     
    Dim Arret As Long
     
    Arret = GetTickCount() + Milliseconde
     
    Do While GetTickCount() < Arret
        DoEvents
    Loop
     
    End Sub
     
    Sub Clignote()
     
    Dim I As Integer
     
    'cache ou affiche le label
    Do While I < 5
        Label1.Visible = True
        Minuterie 1000
        Label1.Visible = False
        Minuterie 1000
        I = I + 1
    Loop
     
    End Sub
     
    'le test est fait ici sur l'évennement "Worksheet_Change"
    'à adapter :
    Private Sub Worksheet_Change(ByVal Target As Range)
    'si c'est la cellule A2
    If Not Intersect(Target, [A2]) Is Nothing Then
    'et si elle est égale à 10
        If Target = 10 Then
        Clignote
        End If
    End If
    End Sub
    Hervé.

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    bonjour


    et avec les api

    tu apelle la macro clignote quand tu veux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
     
     
    'DANS UN MODULE STANDARD!!!!!!
    Public Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
    Public Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
     
     
    Sub clignote()
         SetTimer Application.hWnd, 0, 1000, AddressOf UpDateTime
    End Sub
     
    Sub UpDateTime(ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
       Dim fini As Long
         If fini > 10 Then stoptout
        If UserForm1.Label1.BackStyle = fmBackStyleOpaque Then
        UserForm1.Label1.BackStyle = fmBackStyleTransparent
        fini = fini + 1
        UserForm1.Label1.Caption = fini & "fois"
        Else
        UserForm1.Label1.BackStyle = fmBackStyleOpaque
        fini = fini + 1
        UserForm1.Label1.Caption = fini & "fois"
     
        End If
     End Sub
     
    Sub stoptout()
        KillTimer Application.hWnd, 0
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo