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
 
@cathodique avec ta solution du post #8, en A2, tape 15082020 => c'est bon, on obtient 15/08/2020.

Ensuite en A2 retape 15082020 => erreur Dépassement de capacité.
Merci @job75 , je t'avoue que j'ai retrouvé le code proposé dans mes archives.
Je n'ai pas trop testé. Effectivement, si on corrige on a un dépassement de capacité.
en utilisant Long on a plus de dépassement. Mais le chiffre n'est plus transformé (on a une suite de # dans la cellule).
Ma solution n'est donc pas bonne.
Je supprime le message pour ne pas polluer la discussion.

Encore merci pour ta vigilance.

Bonne soirée.
 
@cathodique pourquoi supprimer ta solution ? A ta place je la remettrai, celle de Dranreb a le même problème.
Parce que pour moi, une solution qui plante n'en est plus une.
Personnellement, cela fait un bon moment que j'utilise la solution proposée par @Dranreb (Calendrier Autonome).
Et ce pour, les cellules ou les formulaires.
Pat66 devrait voir de ce côté, pour éviter les mauvaises surprises d'un code foireux comme celui que j'avais proposé.

Bonne soirée.
 
Ah !! Je n'avais pas tenté de retaper 15082020 alors que la cellule était déjà renseignée de la date.
Je vais chercher …
Alors apparemment ça vient de ce qu'Excel essaye de renvoyer Target.Value sous forme de Date du fait que la cellule porte un format de date. Ça semble réglé comme ça :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   Application.EnableEvents = False
   Target.NumberFormat = "General"
   Target.Value = DateSerial(Int(Target.Value) Mod 10000, Int(Target.Value / 10000) Mod 100, Int(Target.Value / 1000000))
   Application.EnableEvents = True
   End Sub
 
Dernière édition:
Bonjour à tous,

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not IsNumeric(Target.Value) Then Exit Sub
    If Len(Target.Value) <> 8 Then Exit Sub

    Application.EnableEvents = False

    Target.Value = DateSerial( _
        Right(Target.Value, 4), _
        Mid(Target.Value, 3, 2), _
        Left(Target.Value, 2))

    Target.NumberFormat = "dd/mm/yyyy"

    Application.EnableEvents = True
End Sub

Nicolas
 

Pièces jointes

Ceci semble marcher aussi à première vue :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim V As Variant, S As String
   If Target.Count > 1 Then Exit Sub
   V = Target.Value2
   If VarType(V) <> vbDouble Then Exit Sub
   If V < 1011900 Then Exit Sub
   S = Format(V, "0/00/0000")
   Application.EnableEvents = False
   Target.Value = CDate(S)
   Application.EnableEvents = True
   End Sub
 
C'était destiné à vous et je maintiens que ça ne permet par de saisir une date antérieure à un 10 du mois, et que Target.Value ne peut pas être évalué sans dépassement de capacité si la cellule portait déjà un format de date avant qu'on saisisse ce nombre.
 
Le format date est automatiquement adopté en remplacement du format Standard si on affecte un Variant/Date à la Value.
Si ensuite on saisit dans cette cellule un nombre > 2958465 (qui est le numéro de série du 31/12/9999), l'évaluation de sa Value, pour quelque raison que ce soit, se solde par un dépassement de capacité. En prenant Value2 il n'essaye plus de renvoyer une Date.
 
Si ensuite on saisit dans cette cellule un nombre > 2958465 (qui est le numéro de série du 31/12/9999), l'évaluation de sa Value, pour quelque raison que ce soit, se solde par un dépassement de capacité.
C'est qu'est-ce que je viens de dire. 😉


En prenant Value2 il n'essaye plus de renvoyer une Date.
Oui, bien sûr. 👍
 
- 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
382
Réponses
10
Affichages
331
Réponses
12
Affichages
311
Retour