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 :

incrémentation et Timer


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
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 60
    Par défaut incrémentation et Timer
    Bonjour,
    Je souhaite incrémenter toute les seconde une variable i et ce afin de "capturer" une mesure faîte via un boitier de mesure.
    Je n'arrive pas à réaliser cette incrémentation, il se trouve que pour l'instant mon programme ne remplis qu'une ligne et non chaque ligne.
    Je penses que le problème vient ici du fait que l'incrémentation se fait uniquement indépendamment du timer.
    Auriez-vous une solution pour lier la constante au timer ?
    voici la partie de code concerné:

    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
    Private Sub Timer1_Timer()
      ReDim temp_buffer(9) As Single
      Dim overflow_flag As Integer
      Dim i As Integer
       i = 25
     
      If (tc08_handle > 0) Then
        If (Not in_timer) Then
          in_timer = True
     
          ok = usb_tc08_get_single(tc08_handle, temp_buffer(0), overflow_flag, 0)
     
          If (ok) Then
           Cells(4, "A").value = temp_buffer(0)
           Cells(4, "B").value = temp_buffer(1)
           Cells(4, "C").value = temp_buffer(2)
            Range("B4").Select
            Selection.Copy
            Cells(i, "A").Select
            Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
          End If
          in_timer = False
        End If
      End If
     
      If tc08_handle > 0 Then Application.OnTime Now + TimeValue("00:00:01"), "Timer1_Timer", i = i + 1
     
    End Sub
    Merci d'avance de votre aide
    Cordialement
    Adam

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Bonjour,

    Si je comprends bien ton code...

    A partir de la ligne 7 tu fais des tests pour "écrire" dans ta feuille mais l'incrémentation de ton i se fait dans un autre test (ligne 27) donc si le résultat de ces deux test est différent, ton i ne s'incrémente pas.

    Dans des cas plus ou moins similaires, j'ai l'habitude d'incrémenter mes variables juste après l'écriture (concrètement, l'incrément du i je le mettrais avant le 'end if' de la ligne 22)

    Fred

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 60
    Par défaut
    Oui j'avais pensé à ça aussi seulement quand je le fais le code n’exécute qu'une fois le l'incrémentation, du coup je n'ai qu'une valeur dans ma liste qui se met à jour toute les secondes.
    Merci

  4. #4
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2011
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 112
    Par défaut
    Bonjour,

    Visiblement la sub ne comporte pas de boucle, et le "i" incriminé étant une variable locale de cette sub, elle est réinitialisée à chaque exécution, sa valeur revient à 25 à chaque fois que la sub est appelée.

    Il faut soit déclarer ce i à un niveau plus global, soit le passer en paramètre, soit carrément ne pas l'utiliser et chercher la première ligne vide à chaque fois, ou encore mettre une boucle.

    Letienne

  5. #5
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Bonjour,

    si le problème c'est de garder la valeur de i lors des appels successifs à la procédure, il n'y a qu'à la déclarer en Static.
    Mais bon, c'est peut être pas ça le problème!!
    Cordialement,

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 60
    Par défaut
    Merci à vous deux, j'ai eut l'idée d'inscrire le nombre i dans une cellules ainsi le résultat est mis à jour et le tout défile!
    Merci pour votre aide

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

Discussions similaires

  1. [] [Réseau] Anti-timer, anti-idle
    Par clonevince dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 15/01/2003, 22h19
  2. Timer de précision
    Par guigui dans le forum MFC
    Réponses: 1
    Dernier message: 04/12/2002, 15h21
  3. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10
  4. Timer en µsecondes
    Par Dagobert dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 25/11/2002, 00h59
  5. Post incrémentation?
    Par Defrag dans le forum C
    Réponses: 4
    Dernier message: 08/10/2002, 10h36

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