Problème Macro Excel

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. 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
    1. Je viens d'essayer et là, peut importe le paramètre que j'envoie dans la fonction, ça ne fonctionne pas :s
      0
      1. 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
        1. 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
          1. 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
            1. 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
              1. 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
                1. 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
                  1. 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
                    1. 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
                      1. 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
                        1. 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
                          1. 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