Problème Macro Excel

poussin -  
 poussin -
Bonjour,

J'essaye (en vain) de créer une macro Excel qui me permet de convertir un tableau de Timestamp en date et heure compréhensible par l'Homme.

Sub Test_V1()
    Dim test As Double
    test = ActiveCell.Value
    Cells(ActiveCell.Row, 1).Value = Timestamp_To_Date(test)
End Sub

Function Timestamp_To_Date(TimeStamp As Double) As Date
    Timestamp_To_Date = DateAdd("s", TimeStamp, CDate("01/01/1970"))
End Function


Le problème est que lorsque je passe la variable test en paramètre, un message d'erreur s'affiche indiquant "Incompatibilité du type"

Par contre, lorsque je passe en paramètre directement la valeur du Timestamp (exemple : 1255502257.881) là il n'y a aucun problème, la fonction s'exécute parfaitement...

Pouvez-vous m'aidez svp !!!

Cordialement.
Configuration: Windows XP
Firefox 3.0.14

13 réponses

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    Function Timestamp_To_Date(TimeStamp As Double) As Date
    Timestamp_To_Date = DateAdd("s", TimeStamp, CDate("01/01/1970"))
    End Function


    heu! ce ne serais pas l'inverse...?

    tu donnes une date et la fonction te calcul l'écart (différence) en seconde et donc te donnes un double en sortie

    Function Timestamp_To_Date(TimeStamp As date) As double
    Timestamp_To_Date = DateAdd("s", TimeStamp, CDate("01/01/1970"))
    End Function
    0
  2. poussin
     
    Je viens d'essayer et là, peut importe le paramètre que j'envoie dans la fonction, ça ne fonctionne pas :s
    0
  3. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    As-tu essayé ce que je t'ai donné?
    essaye ça! et donne moi ton résultat....

    sub test()
    dim X as date
    dim y as variant
    x=cdate("15/10/2009")
    y=Timestamp_To_Date(x)

    End Sub

    Function Timestamp_To_Date(TimeStamp As date) As double
    Timestamp_To_Date = DateAdd("s", TimeStamp, CDate("01/01/1970"))
    End Function
    0
  4. poussin
     
    Le résultat de la fonction que tu m'as proposé est le suivant : 25569,46413

    le résultat que j'attendais était une date au format jj/mm/aaaa hh:mm:ss
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    je crois que j'ai mal compris ce que tu souhaitais faire....
    je n'ai pas le temps de regarder mais si j'ai un momment...
    0
  7. poussin
     
    en fait, j'ai un tableau de Timestamp que je dois convertir en date et heure compréhensible mais je n'y arrives pas
    0
  8. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    peux-tu faire voir ton fichier sans données confidentielles sur ci-joint.fr
    sinon

    je ne connais pas le format de timestamp.

    montre les données explique ce que tu veux obtenir.
    si je peux t'aider...
    A+
    0
  9. poussin
     
    Voila un exemple de mon problème :

    J'ai une colonne de Timestamp comme ceci :

    1255424354.687
    1255424354.724
    1255424354.862
    ...

    Et je souhaite obtenir un format compréhensible comme ceci :

    13/10/2009 10:59:14
    13/10/2009 10:59:14
    13/10/2009 10:59:14
    ...

    J'ai fait cette conversion à partir d'un site internet qui propose de le convertir mais vu le nombre d'enregistrement je ne pourrais pas les convertir tous un par un...
    0
  10. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    j'ai regardé ta fonction initiale

    elle fonctionne dans les deux cas en vba et sur la feuille.

    il ne faut pas de point ( 1255424354.687 ) il y un point

    ce qu'il faut 1255424354,687 une virgule

    sinon j'ai remaqué une différence de 2 heures entre ta fonction et un convertisseur en ligne

    autre chose je pense qu'il est préférable d'utiliser un double plutôt qu'un long

    A+
    0
  11. poussin
     
    Tu sais je suis vraiment pas doué en vba...

    Es ce que tu peux me donner ce que tu as fait pour que cela fonctionne ?
    0
  12. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    http://www.cijoint.fr/cjlink.php?file=cj200910/cijDj459tM.xls

    voilà l'essai que j'ai fait
    j'ai mis un format dans les cellules
    0
  13. poussin
     
    Super ca marche !!!!

    Tu avais raison c'était bien les . qui faisait tout foirer ^^

    Par contre, il y a bien une différence de 2h es ce que tu sais comment y remédier ?
    0
  14. poussin
     
    Finalement j'ai trouvé comment régler ce problème de 2h manquante, j'ai rajouté dans la fonction 7200 secondes

    Function Timestamp_To_Date(TimeStamp As Double) As Date
        TimeStamp = TimeStamp + 7200
        Timestamp_To_Date = DateAdd("s", TimeStamp, CDate("01/01/1970"))
    End Function


    En tout cas merci beaucoup de ton aide :D
    0