transformer saisie en date format jj/mm/aaaa

  • Initiateur de la discussion Initiateur de la discussion matt31
  • 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 !

matt31

XLDnaute Occasionnel
bonsoir,

je souhaiterai que la saisie dans une cellule sous la forme jjmmaaaa ou même jjmm soit tranformé dès validation de la cellule en date sous le format jj/mm/aaaa.

Plus clair, si je rentre 2001 que cela devienne 20/01/2011

Merci pour votre aide
 
Re : transformer saisie en date format jj/mm/aaaa

Bonjour matt31,

Voici un exemple à adapter.
Le code est à mettre sur la feuille concernée (clic droit sur l'onglet, puis visualiser le code) :
VB:
 'la macro "_Change" de la feuille se déclanche à chaque changement d'une (ou plusieurs)
'cellule de la feuille.
'"Target" représente cette(ces) cellule(s) venant(s) de changer
Private Sub Worksheet_Change(ByVal Target As Range)
Dim jj As Integer, mm As Integer, aaaa As Integer

    'ici, on précise sur quelle zone de la feuille doit s'appliquer le code qui suit
    'dans cette exemple, la zone "A1:A10"
    If Not Application.Intersect(Range("A1:A10"), Target(1, 1)) Is Nothing Then
        'si la cellule Target est numérique et est a une longeur de 4 caractères
        If IsNumeric(Target(1, 1).Value) And Len(Target(1, 1).Text) = 4 Then
            'récupérer jj et mm
            jj = CInt(Left(Target(1, 1).Text, 2))
            mm = CInt(Right(Target(1, 1).Text, 2))
            'si c'est bien une date du type "jjmm" valide
            If IsDate(DateSerial(Year(Now), mm, jj)) Then
                'modifier et le format la valeur de la cellule Target
                Target(1, 1).Value = DateSerial(Year(Now), mm, jj)
                Target(1, 1).NumberFormat = "dd/mm/yyyy"
            End If
            
        'sinon, si la cellule Target est numérique et est a une longeur de 8 caractères
        ElseIf IsNumeric(Target(1, 1).Value) And Len(Target(1, 1).Text) = 8 Then
            'récupérer jj, mm et aaaa
            jj = CInt(Left(Target(1, 1).Text, 2))
            mm = CInt(Mid(Target(1, 1).Text, 3, 2))
            aaaa = CInt(Right(Target(1, 1).Text, 4))
            'si c'est bien une date du type "jjmm" valide
            If IsDate(DateSerial(aaaa, mm, jj)) Then
                'modifier et le format la valeur de la cellule Target
                Target(1, 1).Value = DateSerial(aaaa, mm, jj)
                Target(1, 1).NumberFormat = "dd/mm/yyyy"
            End If
            
        End If
    End If
End Sub

A+
 
- 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

  • Question Question
Microsoft 365 erreur de date
Réponses
2
Affichages
511
Réponses
2
Affichages
498
Réponses
3
Affichages
720
Réponses
4
Affichages
2 K
Réponses
4
Affichages
781
Retour