Microsoft 365 Convertir un nombre au format date courte

  • Initiateur de la discussion Initiateur de la discussion pat66
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pat66

XLDnaute Impliqué
Bonsoir le forum,

est il possible de saisir dans une cellule, par exemple 15061980 et faire en sorte qu'en cliquant sur entrée, cela devienne 15/06/1980 automatiquement

un grand merci

bonne soirée
 
Bonsoir.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   Application.EnableEvents = False
   Target.Value = DateSerial(Int(Target.Value) Mod 10000, Int(Target.Value / 10000) Mod 100, Int(Target.Value / 1000000))
   Application.EnableEvents = True
   End Sub
 
Bonjour le forum,
Bonjour le fil,

Oui j'aimerai pouvoir saisir rapidement 15061980 en E4 et effectivement je dois pouvoir calculer l'écart avec une autre date déjà au format date courte 00/00/0000

Dranreb, j'ai essayé votre solution, mais je n'obtiens que #################

merci à tous
 
Dernière édition:
re,

j'ai bien trouvé cette macro, mais elle m'oblige quand même à saisir un point, exemple : 15.06.1980 = 15/06/1980

Mais existe t'il la possibilité de saisir uniquement 15061980, sans saisir le point entre le jour, le mois et l'année ?
et que le format dd/mm/yyyy s'applique lors de la saisie dans E4 comme le suggère Dranreb ?

Sub ConversionDate()
Dim c As Range, txdh, txd
Dim Rangeeffect As Range
Set Rangeeffect = Worksheets("Retraite").Range("E4")
For Each c In Rangeeffect
On Error GoTo errform
txdh = Split(Trim(c.Value))
txd = Split(txdh(0), ".")
txdh(0) = DateSerial(CInt(txd(2)), CInt(txd(1)), CInt(txd(0)))
c.Value = CDate(txdh(0)) ' + CDate(txdh(1))
c.NumberFormat = "dd/mm/yyyy"
errform:
Next c
End Sub

merci pour votre aide
,
 
Dernière édition:
re,

je dois très mal m'exprimer et je m'en excuse, mais je souhaite saisir en E4 : 15061980 et au clic sur entrée E4 devient 15/06/1980

j'ai testé vos solutions, mais hélas cela ne fonctionne pas, mais peut être que cela n'est pas possible .

merci beaucoup
 
Bonjour le forum,

La colonne A est mise au format Texte, entrez-y des nombres entiers de 8 chiffres.

Cette macro traite aussi les entrées multiples :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
'La colonne A doit être au format Texte
Set Target = Intersect(Target, Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row + 1), UsedRange)
If Target Is Nothing Then Exit Sub
Dim dat As Variant
Application.EnableEvents = False 'désactive les évènements
For Each Target In Target 'si entrées multiples (copier-collage spécial valeurs)
    dat = IIf(Target Like "########", Format(Target, "00\/00\/0000"), "")
    If IsDate(dat) Then Target = Format(dat, "dd/mm/yyyy") Else Target = Empty
Next Target
Application.EnableEvents = True 'réactive les évènements
End Sub
Nota 1 : évitez les MsgBox quand elles ne sont pas indispensables.

Nota 2 : le format Texte ne pose pas de problème pour des opérations sur les dates, on peut par exemple entrer en B2 =A2+1

A+
 

Pièces jointes

Dranreb, j'ai essayé votre solution, mais je n'obtiens que #################
Joignez un classeur reproduisant le problème.
Vous savez, on écrit en général du code que dans VBA et l'en copie et colle dans un cadre de code XLD, et bien entendu on ne le propose que s'il marche parfaitement. Au cas où ce serait dû au format de cellule mettez derrière Target.NumberFormat = "dd/mm/yyyy"
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
383
Réponses
10
Affichages
332
Réponses
12
Affichages
313
Retour