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.
A voir également:

13 réponses

Bidouilleu_R Messages postés 1209 Statut Membre 295
 
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
poussin
 
Je viens d'essayer et là, peut importe le paramètre que j'envoie dans la fonction, ça ne fonctionne pas :s
0
Bidouilleu_R Messages postés 1209 Statut Membre 295
 
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bidouilleu_R Messages postés 1209 Statut Membre 295
 
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
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
Bidouilleu_R Messages postés 1209 Statut Membre 295
 
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
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
Bidouilleu_R Messages postés 1209 Statut Membre 295
 
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
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
Bidouilleu_R Messages postés 1209 Statut Membre 295
 
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
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
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