cs_miss07
Messages postés77Date d'inscriptionmercredi 25 février 2004StatutMembreDernière intervention21 juin 2007
-
10 janv. 2007 à 15:24
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
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 !
cs_miss07
Messages postés77Date d'inscriptionmercredi 25 février 2004StatutMembreDernière intervention21 juin 2007 11 janv. 2007 à 09:23
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
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 11 janv. 2007 à 09:42
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é
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 janv. 2007 à 10:52
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 !!!
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 11 janv. 2007 à 11:04
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
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 11 janv. 2007 à 11:17
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.