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

Access Discussion :

Renvoie d'une mesure de temps dans un champ


Sujet :

Access

  1. #1
    Membre habitué
    Homme Profil pro
    Apprendre
    Inscrit en
    Avril 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Apprendre
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 147
    Points : 175
    Points
    175
    Par défaut Renvoie d'une mesure de temps dans un champ
    Bonjour,

    J'ai une fonction chronomètre dans un formulaire Access.

    J'ai un bouton démarrer/arrêter et une zone texte qui affiche le temps entre le départ et l'arrêt.

    À l'aide d'un bouton de commande, j'aimerais que le temps affiché lorsque j'appuie sur ce bouton s'ajoute à un champ de la table. Ce qui fonctionne bien, mais ça ne fonctionne pas si je veux que le temps affiché s'ajoute au temps déjà inscrit dans ce champ.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Ajouter_Click()
    Me![temps total] = elapsedtime 'simplement pour enregistrer une valeur
    End Sub
     
    Private Sub Ajouter_Click()
    Me![temps total] = elapsedtime + Me![temps total] 'Pour ajouter à la valeur déjà inscrite
    End Sub
    Je me dis que ce doit être que je dois d'abord enregistré la valeur du champ dans une variable, mais je ne sais pas quel format lui appliquer...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim temps As ????
    temps = Me![temps total]
    Me![temps total] = elapsedtime + temps
    End Sub
    Est-ce que je suis sur le bon chemin? Est-ce simplement une question de variable? Quelle type déclarer?

    Merci de votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 777
    Points
    19 777
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    De quel type est la variable elapsedtime ?

    De quel Type est le champ relié à la zone de texte [temps total] ?

    Sous quelle forme souhaites-tu sauvegarder la valeur ?

    A+

  3. #3
    Membre habitué
    Homme Profil pro
    Apprendre
    Inscrit en
    Avril 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Apprendre
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 147
    Points : 175
    Points
    175
    Par défaut
    Bonjour User,

    En fait, elapsedtime est le nom de ma zone texte.

    J'y renvoie la variable msg qui est défini de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim Msg As String
     
    Hours = Format((ElapsedMS \ 360000), "00")
     Minutes = Format(((ElapsedMS \ 6000) Mod 60), "00")
     Seconds = Format((ElapsedMS \ 100) Mod 60, "00")
     MS = Format((ElapsedMS) Mod 100, "00")
     
    Msg = Msg & Minutes & ":" & Seconds & ":" & MS
    Le champ est configuré en date/heure et j'aimerais afficher la valeur totale en HH/MM/SS.

    Merci!

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 777
    Points
    19 777
    Billets dans le blog
    65
    Par défaut
    Salut,

    Ce n'est pas clair:

    J'espère que ce code pourra t'éclairer:

    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
    Dim Etat As Boolean
    Dim d As Double
     
    Private Sub Commande1_Click()
    ' Bouton démarrer/arrêter
     
    Etat = Not Etat
     
       If Etat = True Then
          d = Timer
          Me.elapsedtime = ""
       Else
          d = (Timer - d)
          Me.elapsedtime = DateAdd("s", d, 0#)
          Me![Temps Total] = DateAdd("s", d, CDate(Nz(Me![Temps Total], 0#)))
       End If
     
    End Sub
    elapsedtime n'affiche pas les MS.

    A+

  5. #5
    Membre habitué
    Homme Profil pro
    Apprendre
    Inscrit en
    Avril 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Apprendre
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 147
    Points : 175
    Points
    175
    Par défaut
    Pour être plus clair, j'ai presque fait un copier-coller de la procédure pour faire un chronomètre directement de l'Aide de Microsoft (Que j'ai trouvé via ce site).

    J'ai simplement ajouter un bouton de commande pour permettre a l'utilisateur d'additionner le temps du chrono au temps déja enregistré dans le champs temps total.

    La question est donc de savoir comment récupérer la valeur de la zone chrono et de l'Ajouter au temps déja enregistré.

    Le chrono s'Affiche dans la zone texte nommé ''elapsed time'' et pour entrer cette valeur dans le champs, je ne fait qu'ajouter ce code au bouton ''Ajouter'':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub ajouter_Click()
    Me![temps total] = elapsedtime 
    End Sub
    Ce qui fonctionne très bien quand le champ est vide, mais si une valeur y est déja entrée, alors au lieu d'afficher le total des deux temps, la valeur s'efface.

    J'aurais cru que simplement entrer le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me![temps total] = elapsedtime + Me![temps total]
    M'aurait donné l'addition voulu...Malheureusement non, une erreur survient en me donnant une imcompatibilité de type.

    Je me dit que ma valeur temps d'elapsedtime étant de type string fausse la donnée...

    Alors je me demande comment déclarer mes types de variable et ou se situe l'ereur,

    Merci

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 777
    Points
    19 777
    Billets dans le blog
    65
    Par défaut
    Re,

    Et quand tu mets:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me![Temps Total] = CDate(Nz(Me![Temps Total], 0#)) + CDate(elapsedtime)
    ça te donne quoi ?

  7. #7
    Membre habitué
    Homme Profil pro
    Apprendre
    Inscrit en
    Avril 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Apprendre
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 147
    Points : 175
    Points
    175
    Par défaut
    ça fonctionne à merveille!!

    Le temps se calcule de façon limpide, merci de m'avoir éclairé!

  8. #8
    Membre habitué
    Homme Profil pro
    Apprendre
    Inscrit en
    Avril 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Apprendre
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 147
    Points : 175
    Points
    175
    Par défaut
    En fait, c'est résolu a 90%. Si dans ma valeur temps les centièmes de secondes dépasse 60, je retombe sous l'erreur imcompatibilité de type.

    Est-ce corrigeable?

    Merci

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 777
    Points
    19 777
    Billets dans le blog
    65
    Par défaut
    Tu peux donner en exemple une série de valeurs pour elapsedtime avec à la fin la valeur qui coince:

    Je soupçonne que le format est du style "24:00:01"

  10. #10
    Membre habitué
    Homme Profil pro
    Apprendre
    Inscrit en
    Avril 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Apprendre
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 147
    Points : 175
    Points
    175
    Par défaut
    Très bon instinct. C'est effectivement le format.

    Exemple:

    00:02:70
    00:00:80
    etc.

    Merci

  11. #11
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 777
    Points
    19 777
    Billets dans le blog
    65
    Par défaut
    Et tu ne peux pas modifier la fonction qui met à jour elapsedtime, pour qu'elle respecte le format "hh:mm:ss" ?

  12. #12
    Membre habitué
    Homme Profil pro
    Apprendre
    Inscrit en
    Avril 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Apprendre
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 147
    Points : 175
    Points
    175
    Par défaut
    Effectivement, les MS ne me sont d'aucune utilité.

    En les enlevants du format, le problème disparait.

    Cette fois-ci, c'est résolu.

    Merci énormémément de ton aide!

  13. #13
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 777
    Points
    19 777
    Billets dans le blog
    65
    Par défaut
    Essaie ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me![Temps Total] = CDate(Nz(Me![Temps Total], 0#)) + (FormatHMS(elapsedtime))
    Avec la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Function FormatHMS(d As String) As Date
    Dim t As Variant
     
    t = Split(d, ":")
     
    FormatHMS = TimeSerial(t(0), t(1), t(2))
     
    End Function
    A+

  14. #14
    Membre habitué
    Homme Profil pro
    Apprendre
    Inscrit en
    Avril 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Apprendre
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 147
    Points : 175
    Points
    175
    Par défaut
    Avec l'ajout du code, les MS ne causent plus de problème lorsqu'on les intègrent.

    Le seul souci pour quelqu'un qui voudraient inclure les MS, c'est que le compteur compte 1 minute comme étant 60 MS lorsqu'on fait l'addition.

    Donc, si j'ai un temps initial de 59 MS et que j'ajoute 2 MS, le total passera a 1m01 au lieu de 61 MS.

    Le code me dépasse mais le résultat m'impressionne

    Merci!

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

Discussions similaires

  1. Mesurer le temps dans un Thread
    Par Maël dans le forum Windows
    Réponses: 3
    Dernier message: 06/02/2009, 12h36
  2. Mesurer le temps dans un thread
    Par Maël dans le forum Windows
    Réponses: 0
    Dernier message: 16/01/2009, 17h06
  3. Réponses: 3
    Dernier message: 20/05/2006, 23h28
  4. Recherche d'un mot dans une phrase se touvant dans un champ
    Par Grandbastien dans le forum Access
    Réponses: 3
    Dernier message: 02/04/2006, 09h58
  5. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38

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