Tapez le format jj mmm aaaa avec cette macro

Bonjour le forum

J'ai trouvé ça sur google mais je n'arrive pas à faire afficher le format comme dans le titre de l'objet exemple ci-dessous

12 févr 2022

Merci pour vos éventuels retours

Cordialement

Private Sub Worksheet_Change(ByVal Target As Range)
'---Convertit un nombre de 7 ou 8 chiffres en date---
Dim d As Variant
Set Target = Target.Cells(1, 1) 'une seule cellule
d = Target.Value2 'l'idéal serait de connaître la frappe exacte...
If Not (d Like "#######" Or d Like "########") Then Exit Sub
d = Left(Right(d, 6), 2) & "/" & Left(Right(0 & d, 8), 2) & "/" & Right(d, 4) 'mm/dd/yyyy
d = ExecuteExcel4Macro("DATEVALUE(""" & d & """)")
If IsNumeric(d) Then
Target.NumberFormat = "jj mmm aaaa"
Target = d
Else
Target.NumberFormat = "General"
End If
End Sub

Bonjour Al87

Pour ton info personnelle :
Par sécurité, Microsoft à décider de bloquer tout ce qui est Macro Excel4.0 (bon ça ne touche pas 2003 je pense)

Ensuite, que saisi-tu dans ta cellule, car ce code me semble particulièrement tarabiscoté

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Cel As Range
  Cel = Target.Resize(1, 1).Value
  ' Est-ce une date, sinon on sort
  If IsDate(Cel) Then
    ' On applique le format date
    Cel.NumberFormat = "jj mmm aaaa"
  sinon
    Cel.NumberFormat = "General"
  End If
End Sub

A+

Bonjour BrunoM45

oui complexe

je veux taper dans cellules H2 et H3

des dates au format que j'ai mis dans mon 1er post

Merci à toi

Cordialement

Re,

Le code donné ne vous convient pas

Peut-on avoir de nouveau el fichier, cela éviterai de chercher

Nota : comme déjà dis, je crois, une date sur Excel est simple à rentrer, il suffit juste de saisir : 12/02 + Entrée

A+

Bonjour,
Une petite contribution !?
Cdlt.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("H2:H3")) Is Nothing And Target.Count = 1 Then
        If IsDate(Target) Then Target.NumberFormat = "dd mmm yyyy"
    End If
End Sub

Bonjour à tous les 2

Effectivement si je tape 12022022 a met bien la date mais je voudrais les / sans les taper

Je rappelle le format qui doit-être affiché

05 févr 2022

Je crois que c'est un problème de format cellule non?

Merci à vous deux mais on progresse

Re,

Dans ce cas et en repartant de ce qu'à donné Jean-Eric que je salue

En pensant à un certain nombre de saisies (je ne sais pas s'il faut)

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim sDate As String, ValDate As Variant
  If Not Intersect(Target, Me.Range("H2:H3")) Is Nothing And Target.Count = 1 Then
    ' Récupérer la valuer
    ValDate = Target.Value2
    If IsNumeric(ValDate) Then
      ' Selon la sasie effectuée
      Select Case Len(ValDate)
      Case 5  ' format jmmaa
        sDate = "0" & Left(ValDate, 1) & "/" & Mid(ValDate, 2, 2) & "/" & Right(ValDate, 2)
      Case 6  ' format jjmmaa
        sDate = Left(ValDate, 2) & "/" & Mid(ValDate, 3, 2) & "/" & Right(ValDate, 2)
      Case 7  ' format jmmaaaa
        sDate = Left(ValDate, 1) & "/" & Mid(ValDate, 2, 2) & "/" & Right(ValDate, 4)
      Case 8  ' format jjmmaaa
        sDate = Left(ValDate, 2) & "/" & Mid(ValDate, 3, 2) & "/" & Right(ValDate, 4)
      End Select
      Application.EnableEvents = False
      Target.Value = CDate(sDate)
      Target.NumberFormat = "dd mmm yyyy"
      Application.EnableEvents = True
    End If
  End If
End Sub

A+

Bonjour à tous

Tout est dit dans classeur1

Merci à vous

Bonjour Al87

Sérieusement, vous êtes des sacrés fainéant dans votre boite
Saisir une date au format "jmaa"

Vous pouvez ajouter cette ligne dans le code déjà donné

      Case 4  ' format jmaa
        sDate = "0" & Left(ValDate, 1) & "/0" & Mid(ValDate, 2, 1) & "/" & Right(ValDate, 2)

Mais demain, qu'est-ce qui empêchera la personne de saisir une date au format "jmma" ou "jjmaa" !?
Et dans ce cas là, on traite comment les 4 ou 5 chiffres... Excel n'est pas un IA

Perso je laisse tomber, à vous de mettre un peu de discipline

Bonjour,

je suis d'accord.
Ces pseudos 'améliorations' ne font au final qu'énerver l'utilisateur qui passe plus de temps à essayer de se rappeler ce qui est accepté comme syntaxe.
Résultat, une usine à gaz bancale pour taper une touche en moins alors qu'il est si simple de respecter les règles de saisie d'excel.
Règles qui de toute façon doivent être connues de l'utilisateur.

Et 11122 c'est 1/11/22 ou 11/1/22 ? Allons, un peu de sérieux !
eric

Bonjour à vous 2

Dans ma boîte?

Il y a 32 ans.

Oui eriiic je suis d'accord mais c'est pas pour moi.

Merci à vous deux

Bonne fin de WE

Cordialement

Rechercher des sujets similaires à "tapez format mmm aaaa cette macro"