chris6999
XLDnaute Impliqué
Bonjour
J’ai trouvé sur le FORUM ce vieux fil sur la transformation d’un chiffre en date.
Le code que vous proposez est très intéressant et j’aimerais l’adapter.
J’ai essayé une paire d’heures hier mais sans résultats probants.
C’est pourquoi je fais appel à votre aide aujourd’hui :
-Ce que je voudrais c’est convertir un nombre de 6 (au lieu de 7) ou 8 chiffres
_Le formats de date attendu est de type JJMMAA (bon ça je suis arrivée à le modifier comme une grande)
-Le truc qui me bloque c’est lorsque la valeur de la cellule est différente de ###### ou de ########.
Ce que je souhaiterais dans ce cas c’est donner l’ordre de refuser la valeur saisie avec un msbox d’alerte par exemple.
Par contre comme il n’y a plus d’exit sub il va falloir limiter cette macro aux plages où j’attends une saisie de date (ex colonne 3, 4, 5 et 6).
J’espère que vous pourrez vous pencher sur cette question et m’aider à adapter ce code à mon projet.
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 = "dd/mm/yyyy"
Target = d
Else
Target.NumberFormat = "General"
End If
End Sub
J’ai trouvé sur le FORUM ce vieux fil sur la transformation d’un chiffre en date.
Le code que vous proposez est très intéressant et j’aimerais l’adapter.
J’ai essayé une paire d’heures hier mais sans résultats probants.
C’est pourquoi je fais appel à votre aide aujourd’hui :
-Ce que je voudrais c’est convertir un nombre de 6 (au lieu de 7) ou 8 chiffres
_Le formats de date attendu est de type JJMMAA (bon ça je suis arrivée à le modifier comme une grande)
-Le truc qui me bloque c’est lorsque la valeur de la cellule est différente de ###### ou de ########.
Ce que je souhaiterais dans ce cas c’est donner l’ordre de refuser la valeur saisie avec un msbox d’alerte par exemple.
Par contre comme il n’y a plus d’exit sub il va falloir limiter cette macro aux plages où j’attends une saisie de date (ex colonne 3, 4, 5 et 6).
J’espère que vous pourrez vous pencher sur cette question et m’aider à adapter ce code à mon projet.
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 = "dd/mm/yyyy"
Target = d
Else
Target.NumberFormat = "General"
End If
End Sub
Dernière édition: