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 :

Manipulation de date.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Par défaut Manipulation de date.
    Bonjour,

    J'expose mon soucis:
    - dans une feuille excel, j'ai 2 dates au format jj/mm/aaaa hh:mm:ss;
    - Je calcul la différence des 2 valeurs pour connaitre la durée (tous fonctionne);
    je convertis cette valeur en seconde en utilisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Day(Cells(1, 1)) & "j " & Hour(Cells(1, 1)) & "h " & Minute(Cells(1, 1)) & "mn " & Second(Cells(1, 1)) & "s "
    - Ca fonctionne si j'ai un duréé suprérieure à 24 heure, sinon la valeur jour est positionnée à 30 (?!);
    Exemple:
    d1=04/06/2008 12:10:08 d2=02/06/2008 08:30:00 d1-d2=51:40:08 Transformé en seconde=1j3h40mn8s ====>OK
    d1=04/06/2008 12:10:08 d2=04/06/2008 10:35:26 d1-d2=1:34:42 Transformé en seconde=30j1h34mn42s ====>KO
    Quelqu'un a t'il une solution de contournement de ce problème?

    Cordialement.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 117
    Par défaut
    bonjour,
    51:40:08 Transformé en seconde=1j3h40mn8s ====>OK
    Ah bon? ca fait pas 2j3h40mn8s plutot ?

    Sinon pour contourner le problème comme tu veux le faire, tu mettre des conditions (en ajoutant 1 jour lorsque c'est plus de 24h et en enlevant 30 lorsque c'est inférieur) mais je ne pense pas que cela soit la meilleure solution. (à moins que la méthode t'importe peu)
    En attendant qu'une personne plus compétente t'aide.
    Cordialement.

  3. #3
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    moi je serait toi, j'utiliserais une fonction super dans VBA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datediff("s",date1,Date2)
    tu recevra la durée en secondes

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    La question n'étant pas d'afficher en secondes mais bien en jours, heures, minutes et secondes, j'ai fait quelques tests.
    A la cellule A1, j'ai appliqué le format
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Cells(1, 1).Text
    donne le bon résultat.

    Mais...
    Tout marche bien jusqu'à 31 jours.
    Après, ça se gâte.
    d1=4/06/2008 12:10:08 d2=3/05/2008 10:35:26 => d1-d2 donne 01j02h34m42s

    Pour comprendre comment Excel gère les dates, il est toujours intéressant de faire tourner ce petit code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      MsgBox Cells(1, 1).Value
      MsgBox Cells(1, 1).Text
      MsgBox Cells(1, 1).Value2
    La solution finale s'imposait donc d'elle-même:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox CStr(Int(Cells(1, 1).Value2)) & "j" & Format(Cells(1, 1), "hh\hmm\mss\s")
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

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

Discussions similaires

  1. Manipulations de dates et heures
    Par benj63 dans le forum C++
    Réponses: 5
    Dernier message: 16/12/2004, 15h09
  2. [JDBC] manipulation des dates/heures en Java
    Par kurkLord dans le forum JDBC
    Réponses: 6
    Dernier message: 09/08/2004, 12h49
  3. Manipulations des Dates
    Par kurtc dans le forum Langage SQL
    Réponses: 11
    Dernier message: 13/04/2004, 14h39
  4. [IB6][BCB5]Manipulation des dates.
    Par Sitting Bull dans le forum SQL
    Réponses: 4
    Dernier message: 09/04/2004, 15h33
  5. Manipuler des dates...
    Par Ti Jen-tsie dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2003, 11h46

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