Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 
Voici là correction:

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim s As String
    Dim j As String, m As String, a As String

    If Target.Count > 1 Then Exit Sub

    Application.EnableEvents = False
    Target.NumberFormat = "@"
    Application.EnableEvents = True

    s = Format(Target.Value, "00000000")

    If Len(s) <> 8 Then Exit Sub

    j = Left(s, 2)
    m = Mid(s, 3, 2)
    a = Right(s, 4)

    Application.EnableEvents = False
    Target.Value = j & "/" & m & "/" & a
    Application.EnableEvents = True
End Sub

Nicolas
 

Pièces jointes

Une dernière version un peu plus courte du code

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim s As String

    If Target.Count > 1 Then Exit Sub

    Application.EnableEvents = False
    Target.NumberFormat = "@"
    s = Format(Target.Value, "00000000")

    If Len(s) = 8 Then
        Target.Value = Left(s, 2) & "/" & Mid(s, 3, 2) & "/" & Right(s, 4)
    End If
    Application.EnableEvents = True
End Sub

En réponse à la question initiale du demandeur
Nicolas
 

Pièces jointes

Bonjour à tous😉,

Je publie ma tentative.
J'ai essayé de tenir compte du type de données et format de la cellule de saisie.
Si la donnée saisie est du texte ou un nombre ou une date alors on essaye de déchiffrer la valeur comme date et si ça représente une date alors on formate la cellule en date et on inscrit la valeur sinon on laisse la valeur saisie inchangée.
On doit donc pouvoir saisir une date quelque soit le format de la cellule d'entrée (très, très présomptueux comme affirmation 😏).

Le code est le module de la feuille Feuil1.
 

Pièces jointes

Oui je crois qu'il vaut mieux ça en fin de compte :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim V As Variant, S As String
   If Target.CountLarge > 1 Then Exit Sub
   V = Target.Value2
   If VarType(V) <> vbDouble Then Exit Sub
   If V < 1011900 Then Exit Sub
   Application.EnableEvents = False
   Target.Value = DateSerial(Int(V) Mod 10000, Int(V / 10000) Mod 100, Int(V / 1000000))
   Application.EnableEvents = True
   End Sub
Mais je préconiserais plutôt l'utilisation du calendrier …
 
On notera que ma solution du post #11 colle parfaitement avec le calendrier grégorien :

- les dates du 05/10/1582 au 14/10/1582 n'existent pas

- les 29/02/1600 et 29/02/2000 existent mais les 29/02/1700 29/02/1800 29/02/1900 n'existent pas.

Bien sûr puisqu'il faut 8 chiffres les années antérieures au 01/01/1000 n'existent pas.
 
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…