XL 2010 Transformer série de chiffre en date

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
 

CHALET53

XLDnaute Barbatruc
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+
 

patricktoulon

XLDnaute Barbatruc
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
 

Discussions similaires

Statistiques des forums

Discussions
314 651
Messages
2 111 544
Membres
111 199
dernier inscrit
mavoungou regis