Conversion nombre en date [Résolu]

cs_miss07 77 Messages postés mercredi 25 février 2004Date d'inscription 21 juin 2007 Dernière intervention - 10 janv. 2007 à 15:24 - Dernière réponse : cs_MPi 3863 Messages postés mardi 19 mars 2002Date d'inscription 13 mars 2018 Dernière intervention
- 11 janv. 2007 à 12:21
Bonjour,

J'ai une petite question a vous poser !
voila j'ai un nombre ..... 39152 et je voudrai le transformer en date .
je sais que DATEVAL("jj/mm/aaaa") transforme ta date en nombre .
Je voudrai faire l'inverse mais je ne sais pas si une fonction excel existe !

Merci pour votre aide

Miss07
Afficher la suite 

14 réponses

Répondre au sujet
cs_MPi 3863 Messages postés mardi 19 mars 2002Date d'inscription 13 mars 2018 Dernière intervention - 11 janv. 2007 à 12:21
+1
Utile
Avec une formule de ce genre, tu devrais pouvoir y arriver
="bidule du " & TEXTE(I32;"jj-mm-aaaa") & " au machin"

mais ce n'est pas utilisable sur un système anglais
Il faudrait alors changer
jj pour dd
et
aaaa pour yyyy

Autrement, la Function dans un Module demeure le meilleur choix.

MPi
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_MPi
_Fabien 119 Messages postés vendredi 17 novembre 2006Date d'inscription 28 avril 2008 Dernière intervention - 10 janv. 2007 à 19:32
0
Utile
tu peux convertir le format de la cellule en date. Dans ce cas, 39152 équi vaut au 30/03/2007
Commenter la réponse de _Fabien
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 10 janv. 2007 à 19:43
0
Utile
Pardonnez mon intrusion... (je ne suis pas VBAiste...)

Il me semble me rappeler que Excel fonctionne avec une date interne = 0 pour le 31 décembre 1989 (à vérifier...dans Excel)

Si c'est bien celà il suffit d'appliquer DATADD  (en nombre de jours) à la date 31/12/1989
Commenter la réponse de jmfmarques
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 10 janv. 2007 à 19:49
0
Utile
Hé bé ...

Oui j'ai vielli ! C'est le 31/12/1899 qui est = 0 en interne ...

Mais voilà un petit cadeau :

http://www.cpearson.com/excel/datetime.htm
Commenter la réponse de jmfmarques
cs_Exploreur 4824 Messages postés lundi 11 novembre 2002Date d'inscription 15 novembre 2016 Dernière intervention - 10 janv. 2007 à 21:02
0
Utile
Tu es impressionnant Jmfmarques...Tu as toujours la réponse qui fait que....Tu es tombé dans le code étant petit...
Au plaisir
Exploreur 
Commenter la réponse de cs_Exploreur
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 10 janv. 2007 à 21:59
0
Utile
Salut Exploreur,

Pas impressionnant, non... Juste cinglé !
Commenter la réponse de jmfmarques
cs_miss07 77 Messages postés mercredi 25 février 2004Date d'inscription 21 juin 2007 Dernière intervention - 11 janv. 2007 à 09:23
0
Utile
salut !
oui mais ce que tu me dis ce fait en VBA??
moi c'est juste une formule de calcul .... je sais que si je remet la cellule au format date ca fonctionne mais voila ce soucis c'est que mes dates sont a l'interieur d'une phrase : "bidule du " & =I32 & " au machin"

I32 etant une date jj/mm/aaaa
et donc la date se transforme en valeur ! d'ou le 39152

Voila

Miss07
Commenter la réponse de cs_miss07
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 11 janv. 2007 à 09:34
0
Utile
Ca concerne qui, selon toi, le lein vers lequel je t'ai renvoyé plus haut ?
Je n'ai pas l'impression qu'il traite de la façon de faire le foie gras
Commenter la réponse de jmfmarques
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 11 janv. 2007 à 09:42
0
Utile
Je ne vois pas où est le soucis
En VBA, quand tu appelles le contenu de la cellule I32, tu l'appelles comment ? Tu as 3 façons de l'appeler :

Tu mets le format de ta cellule à date, pour que ton 39152 apparaisse sous la forme 11/03/2007
En fonction de la propriété que tu utilises :
   - .Value => Ca te remonte "11/03/2007"
   - .Value2 => Ca te remonte "39152"
   - .Text => Ca te remonte "11/03/2007"
A toi de choisir la propriété qui t'intéresse.

Par ex, en VBA, pour afficher ce que tu veux, ton code serait (à condition que le format soit bien en date) :
Msgbox "bidule du " & range("I32").value & " au machin"

Tu as encore une 4ème solution, purement VBA cette fois :
msgbox Cdate("39152") te transforme le chiffre en date (et donc en 11/03/2007).
Par contre, si tu vas lire une cellule Excel, ça n'a pas d'intérêt, autant jouer sur le format de la cellule.
Mais si tu veux absolument garder un format numérique et donc afficher "39152" dans ta feuille Excel, dans ce cas, ton code en VBA serait :
Msgbox "bidule du " & CDate(range("I32").value) & " au machin"

Voilà, avec ça, je pense qu'on a fait un tour complet du problème ^^

Molenn
 

Et  jmfmarques : Cinglé ? Ca ne me rassure pas sur mon propre cas alors ^^ Et pendant que je lisais les posts, j'étais en train de me dire, mais qu'est-ce qu'il a fumé le pauvre ? 1989 ? On est mal barré
Commenter la réponse de Molenn
cs_miss07 77 Messages postés mercredi 25 février 2004Date d'inscription 21 juin 2007 Dernière intervention - 11 janv. 2007 à 10:15
0
Utile
oui mais ce n'est pas du VBA c'est du simple excel !!
et escuse moi jmfmarques mais l'anglais et moi on est pas tres pote !!
Commenter la réponse de cs_miss07
jmfmarques 7668 Messages postés samedi 5 novembre 2005Date d'inscription 22 août 2014 Dernière intervention - 11 janv. 2007 à 10:52
0
Utile
Tu te moques, là ?

Relis plus haut :

Excel gère ses dates en se référant à une date interne 0 bien précise (qu'il s'agisse de VBA ou de "simple Excel".)

Ta représentation "chiffrée" d'une date n'est donc que l'écart (en jours) de cette date interne 0

VBA connait DateAdd

Il te suffit donc d'ajouter ce nombre de jours, par dateAdd, à la représentation "en Date" de la Date correspondant à la date interne 0 !!!!

Tu vas te réveiller un peu, oui ?
Pour ton information : je ne possède pas VBA mais suis parfaitement capable de "voir" ce mécanisme pour le moins élémentaire !!!
Commenter la réponse de jmfmarques
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 11 janv. 2007 à 11:04
0
Utile
Et bien, j'ai cru que tu faisais du VBA parce que tu écris :
"bidule du " & =I32 & " au machin"
Comme ce n'était opas une formule Excel valide, et que d'autres posts parlaient de VBA, j'ai pas tilté ^^

Reprenons à zéro : ta cellule I32 contient le chiffre 39152
Il n'y a pas de formules Excel qui fasse l'équivalent du CDate de VBA (ou alors je ne l'ai pas trouvé), mais tu peux biaiser avec une formule de ce style :
="bidule du " & JOUR(I32 ) & "/" & MOIS(I32 ) & "/" & ANNEE(I32 ) & " au machin"

Molenn
Commenter la réponse de Molenn
cs_miss07 77 Messages postés mercredi 25 février 2004Date d'inscription 21 juin 2007 Dernière intervention - 11 janv. 2007 à 11:27
0
Utile
oui Molenn tu as bien compris !!
merci bcp pour votre aide je vais essayer ce que tu me dis Molenn  !

merci bcp ca fonctionne !

miss07
Commenter la réponse de cs_miss07
Molenn 797 Messages postés mardi 7 juin 2005Date d'inscription 23 février 2011 Dernière intervention - 11 janv. 2007 à 11:17
-1
Utile
Après plusieurs relectures du post initial, j'ai cru comprendre qu'en fait, c'était juste un pb d'affichage purement Excel ^^

En fait, quand dans ta cellule I32, tu as 39152 ou 11/03/2007 selon le format de cellule, quand, dans ta cellule A1 tu mets ="toto " & I32, quelque soit le format, ça te marquera toujours "toto 39152"
Et il voulait juste obtenir "toto 11/03/2007" ce qui n'est pas possible avec une formule disponible d'Excel, je viens donc juste de lui fournir la réponse au dessus. Bon, j'avoue que j'ai relu plusieurs fois pour en arriver là

Par contre, si on veut obtenir un résultat plus propre, il est tout à fait possible d'écrire sa propre fonction Excel qui ferait le boulot avec une vraie mise en forme (pb avec les jours et mois inférieurs à 10, ils sont sur un seul caractère, ce qui est moche ^^). Et là, avec un peu de VBA, ça roule tout seul.

Par exemple, tu ouvres l'éditeur VBA (Alt+F11), tu insères un nouveau module (menu Insertion\Module) et tu codes le code suivant :

Public Function ConvertirDate(Cellule As Range) As String
   
    Dim Jour As String
    Dim Mois As String
   
    If Len(Day(Cellule)) = 1 Then
        Jour = "0" & Day(Cellule)
        Else
        Jour = Day(Cellule)
    End If
    If Len(Month(Cellule)) = 1 Then
        Mois = "0" & Month(Cellule)
        Else
        Mois = Month(Cellule)
    End If
   
    ConvertirDate = Jour & "/" & Mois & "/" & Year(Cellule)
   
End Function

Dans ton fichier Excel, tu n'as plus qu'à taper la formule suivante :
="bidule du " & ConvertirDate(I32) & " au machin"
Et là, tu obitens un truc propre et même mieux, un truc que tu peux configurer à ta guise.

Molenn
Commenter la réponse de Molenn

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.