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

XL 2010 Transformer série de chiffre en date

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 !

LAPIN-53

XLDnaute Nouveau
Bonjour,
Après de nombre recherche sur internet j'ai réussi à "fabriquer" un code VBA pour transformer une série de chiffre en date :
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)
d = Target.Value2
ActiveSheet.Unprotect "123"
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 = "dd/mm/yyyy"
Target = d
Else
Target.NumberFormat = "General"
End If
ActiveSheet.Protect "123"
End Sub

J'aimerais que ce code ne s'applique qu'aux cellules C3 à C14.
Quelques peut-il m'aider pour les dernières modifications ?

Merci beaucoup
 
Bonjour,
Peut-être comme ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
'---Convertit un nombre de 7 ou 8 chiffres en date---
Dim d As Variant
If Not (Intersect(Target, Range("C3:C14")) Is Nothing) Then
Set Target = Target.Cells(1, 1)
d = Target.Value2
ActiveSheet.Unprotect "123"
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 = "dd/mm/yyyy"
Target = d
Else
Target.NumberFormat = "General"
End If
ActiveSheet.Protect "123"
End if
End Sub


a+
 
bonjour
juste en passant
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
'---Convertit un nombre de 7 ou 8 chiffres en date---
    Dim d As Variant
    If Not (Intersect(Range("C3:C14"), Target) Is Nothing) And Not Target.Value2 Like "*/*" And Target.Count = 1 Then
        d = CStr(Target.Value2)
         ActiveSheet.Unprotect "123"
        If IsNumeric(d) Then
            Select Case True
            Case Len(CStr(d)) = 5: d = DateValue(Format(d, "0/00/00"))
            Case Len(CStr(d)) = 6: d = DateValue(Format(d, "00/00/00"))
            Case Len(CStr(d)) = 7: d = DateValue(Format(d, "0/00/0000"))
            Case Len(CStr(d)) = 8: d = DateValue(Format(d, "00/00/0000"))
            End Select

            With Target
                If IsDate(d) Then
                    Application.EnableEvents = False
                    .NumberFormat = "dd/mm/yyyy": .Value = d
                Else
                    .NumberFormat = "General": .Value = d
                End If
                ActiveSheet.Protect "123"
            End With
        End If
    End If
    Application.EnableEvents = True
End Sub
 
- 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
4
Affichages
752
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…