Bonjour,
J'ai un souci avec une macro.
Elle fonctionne très bien si la feuille n'est pas protégée, mais ne fonctionne plus après avoir protégé la feuille.
Il s'agit d'une macro qui transforme une serie de chiffre en format datte. Par exemple, je tape 01012020 et s'affiche à l'écran 01/01/2020.
Ma macro s'applique sur toute la feuille, je me demandais si elle ne s'appliquait qu'à ma cellule (K1, dans mon cas) qui n'est pas verrouillée, peut-être fonctionnerait-elle.
Quelqu'un pourrait-il me dire comment transformer ma macro qui s'applique à toute la feuille, juste à la cellule K1.
voici la macro :
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
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
End Sub
Merci d'avance
J'ai un souci avec une macro.
Elle fonctionne très bien si la feuille n'est pas protégée, mais ne fonctionne plus après avoir protégé la feuille.
Il s'agit d'une macro qui transforme une serie de chiffre en format datte. Par exemple, je tape 01012020 et s'affiche à l'écran 01/01/2020.
Ma macro s'applique sur toute la feuille, je me demandais si elle ne s'appliquait qu'à ma cellule (K1, dans mon cas) qui n'est pas verrouillée, peut-être fonctionnerait-elle.
Quelqu'un pourrait-il me dire comment transformer ma macro qui s'applique à toute la feuille, juste à la cellule K1.
voici la macro :
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
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
End Sub
Merci d'avance