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 :

Decompte de 60 secondes lorsque cellule remplie. [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 25
    Par défaut Decompte de 60 secondes lorsque cellule remplie.
    Bonjours a vous tousse existe-t-il une formule faire ceci.

    Exemple lorsque que une cellule de la colonne A est remplie, un décompte de 60 seconde apparait dans la cellule B, a coter de la A, une foi le décompte de 60 seconde terminer , la cellule B écrit (Terminer)

    Merci a vous

  2. #2
    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
    Bonsoir,

    Teste ce qui suit mais attention, pour modifier une autre cellule, il te faudra attendre la fin du décompte :
    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
     
    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
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        Dim I As Integer
     
        If Target.Column <> 1 Then Exit Sub
     
        I = 60
     
        'évite l'appel inutile de cette proc tant que le décompte n'est pas fini
        'l'évènement "Change" est appelé chaque foir que la décrémentation
        'à lieu en colonne B
        Application.EnableEvents = False
     
        Do
     
            Minuterie 1000
            I = I - 1
            Target.Offset(, 1) = I
     
        Loop While I > 0
     
        Target.Offset(, 1) = "Terminé"
     
        Application.EnableEvents = True
     
    End Sub
    Hervé.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 25
    Par défaut
    Merci je vai tester

    Je vais définir un peut mon raisonnement,
    en fait je dois recueillir des chiffres sur un site boursier ,

    si exemple J'écrit en A1 ,ex: 824,
    en B1 Ya un compte a rebours de 60 seconde ,
    lorsque celui-ci arrive a 0 , B1 Affiche Terminer
    et En C1 je rentre la nouvelle valeur que Jai cueilli.

    Ensuite D1 m'afficheront une statistique, mais pour le moment je suis bloquer sur le timer de B1

  4. #4
    Invité
    Invité(e)
    Par défaut
    Une variante avec laquelle tu peux continuer à travailler sur le fichier en parallèle.

    Dans le module de la feuille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Target.Cells.Count <> 1 Then Exit Sub
      If Target.Column <> 1 Then Exit Sub
      Temp# = Target.Row
      Cells(Temp#, 2) = 60
      Call RunOnTime
    End Sub
    Et 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
    Public Temp#
    Public dTime As Date
     
    Sub RunOnTime()
      dTime = Now + TimeSerial(0, 0, 1)
      Application.OnTime dTime, "RunOnTime"
      Cells(Temp#, 2).Value = Cells(Temp#, 2).Value - 1
      If Cells(Temp#, 2).Value = 0 Then Call CancelOnTime
    End Sub
     
    Sub CancelOnTime()
      Application.OnTime dTime, "RunOnTime", , False
      Cells(Temp#, 2).Value = "Terminer"
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 25
    Par défaut
    Citation Envoyé par Theze Voir le message
    ptrsafe.
    Salut Theze , c'est exactement ce que je voulais
    tout semble bien fonctionner
    j'ai du ajouter l'attribut ptrsafe car Jai Excel 64bit.

    Le seule problème, comme tu a fait mention c'est que pendant le décompte
    j'aimerai la possibilité de mettre des valeurs dans d'autre cellule
    Pendant le décompte des que j'écrit quelque chose sur une autre cellule
    tout s'arête
    .

    Salut vcottineau, malheureusement sa ne fonctionne pas rien ne ce passe en B1, lorsque j'écrit quelque chose en A1.
    Une idée ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par djmisterjon1 Voir le message
    Salut vcottineau, malheureusement sa ne fonctionne pas rien ne ce passe en B1, lorsque j'écrit quelque chose en A1.
    Une idée ?
    Teste le classeur en PJ t'as du faire une erreur quelque part.

    Par contre il ne faut pas s'amuser à changer d'autres valeurs dans la colonne A sinon ça va faire bugguer la macro.
    Dernière modification par Invité ; 25/09/2013 à 11h47.

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2013
    Messages : 25
    Par défaut
    Ses vraiment super, sa fonctionne très bien,
    j'ai une petite question ,
    esceque ces possible de faire en sorte que le décompte ne sarrette pas
    pendant que l'on entre des chose dans une autre cellule ,
    exemple en D1 quand je rentre des chiffres le décompte stop

    j'aimerai pouvoir travailler sur d'autre cellule en même temp que le décompte
    tu aurai une idée ?

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

Discussions similaires

  1. [OLE Excel] Aller jusqu'à la dernière cellule rempli
    Par JBrek dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 07/08/2009, 19h21
  2. Trouver la première cellule remplie d'une ligne
    Par nicacc dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/08/2008, 15h16
  3. Tester l'existence d'une cellule remplie
    Par Thierry_94 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/11/2007, 21h25
  4. Réponses: 2
    Dernier message: 02/08/2007, 12h30

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