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 :

Faire clignoter une cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 42
    Par défaut
    Bonjour à tous,

    J'aimerai, faire clignoter la cellule A1 à un intervalle de 500ms, pour ça j'utilise les fonction settimer et killtimer de l'API:
    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
    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
     
    Public TimerID As Long, TimerSeconds As Single, tim As Boolean
    Dim Counter As Long
     
    Sub StartTimer()
        TimerSeconds = 0.5
        TimerID = SetTimer(0&, 0&, TimerSeconds * 1000&, AddressOf TimerProc)
    End Sub
     
    Sub EndTimer()
        On Error Resume Next
        KillTimer 0&, TimerID
    End Sub
     
    Sub TimerProc(ByVal HWnd As Long, ByVal uMsg As Long, _
    ByVal nIDEvent As Long, ByVal dwTimer As Long)
        If Sheet1.Range("A1").Interior = xlNone Then
            Sheet1.Range("A1").Interior = 7
        Else
            Sheet1.Range("A1").Interior = 0
        End If
    End Sub
    Des que je lance mon programme, il plante et je ne comprends pas pourquoi, j'ai l'impression de declarer et appeler mes fonction API correctement pourtant..
    Si quelqun à une idée de ou vient mon soucis, je suis preneur.

    Meri

    Aussi je vois une erreur de ma part, ligne 26 j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheet1.Range("A1").Interior = 0
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheet1.Range("A1").Interior = xlnone
    Mais bon, ça ne marche toujours pas.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Un exemple fonctionnel:
    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
    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
     
    Public TimerID As Long
     
    Sub StartTimer()
        TimerID = SetTimer(0&, 0&, 500&, AddressOf TimerProc)
    End Sub
     
    Sub EndTimer()
        On Error Resume Next
        KillTimer 0&, TimerID
    End Sub
     
    Sub TimerProc(ByVal HWnd As Long, ByVal uMsg As Long, _
            ByVal nIDEvent As Long, ByVal dwTimer As Long)
        If Worksheets("Feuil1").Range("A1").Interior.ColorIndex = xlNone Then
            Worksheets("Feuil1").Range("A1").Interior.ColorIndex = 7
        Else
            Worksheets("Feuil1").Range("A1").Interior.ColorIndex = xlNone
        End If
    End Sub
    Attention, il faut adapter le nom de la feuille.

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 42
    Par défaut
    Super merci

    Par contre je constate que c'est quand même assez delicat d'utiliser le timer. Si je touche la feuille en ecriture pendant le fonctionnement du timer ça plante par exemple. Il y a t-il un moyen de contourner ce problème?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Si tu veux un taux de rafraichissement inférieur à la seconde tu est obligé de passer par les API et tu ne peux pas passer en 'EDIT MODE'.

    Sinon il faut regarder du coté de la fonction 'Application.OnTime' mais le passage en 'EDIT MODE' va mettre en pause le clignotement.
    Dernière modification par Invité ; 14/10/2013 à 17h19.

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour.
    Citation Envoyé par vcottineau Voir le message
    Si tu veux un taux de rafraichissement inférieur à la seconde tu est obligé de passer par les API et tu ne peux pas passer en 'EDIT MODE'.

    Sinon il faut regarder du coté de la fonction 'Application.OnTime' mais le passage en 'EDIT MODE' va mettre en pause le clignotement.

    Pas obligé, je l'ai fait pour diverses animations via une boucle de pause avec les fonctions VBA Timer & DoEvents

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 42
    Par défaut
    A ok, c'est bon a savoir. Et dernière petite question, si je veux utiliser un timer dans un userform, est ce que je peux?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Oui c'est possible.

  8. #8
    Membre confirmé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Septembre 2013
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 42
    Par défaut
    Et ducoup si on modifie le userform en ecriture, cela fait planter le programme aussi ou ça passe?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Fais le test de ton côté parce que je n'ai jamais essayé.

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

Discussions similaires

  1. [XL-2003] faire Clignoter une cellule sous condition
    Par LaPanic dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 21/06/2009, 19h49
  2. Faire clignoter une cellule
    Par JP.NUAGE dans le forum Débuter
    Réponses: 4
    Dernier message: 10/07/2008, 22h18
  3. faire clignoter une cellule
    Par laurent1803 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/10/2007, 11h57
  4. faire clignoter une cellule d'une gridview
    Par guigui11 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/09/2007, 10h44
  5. Faire clignoter une cellule d'un MSFlexGrid
    Par sundjata dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 13/08/2006, 23h50

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