Bonjour,
J'ai créé un programme sous VBA Excel me permettant d’élaborer un planning de maintenance en fonction de butées calendaires.
Les ensembles à suivre placés sur la première colonne sont composés de sous-ensembles eux-mêmes composés d’éléments. Ce qui fait environ 300 dates à contrôler.
Pour vérifier la validité des dates entrées par l’utilisateur, j’utilise cette routine pour chaque cellule :
Je compare ensuite ces dates à une date de butée calendaire pour élaborer un planning de maintenance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Cells(x, 3).Select Selection.NumberFormat = "m/d/yyyy" If IsDate(Cells(x, 3)) = False Then MsgBox "Le contenu de la cellule C" & x & " n'est pas valide." Application.ScreenUpdating = True Cells(x, 3).Select Exit Sub End If
Jusque là tout avait l’air de bien aller…
Je décide ensuite de créer un userform pour changer les dates à partir de ce dernier.
J’extrait bien les dates des élément dans mon userform par un textbox mais quand je les retranscris dans ma feuille Excel il ne sont plus pris en compte comme date dans mon programme de comparaison. Par contre ma routine de vérification des cellules au format de date valide cité plus haut n’a pas signalé d’erreur. Je résous le premier problème en forçant la valeur de mon textbox au format date par :
Mais cela me démontre que ma routine de vérification du format date n’est pas fiable à 100%. Cela prouve qu’un utilisateur peut entrer directement sur la feuille Excel une date non valide qui ne sera pas prise en compte par le programme de comparaison.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 LDATE = CDate(datebutée) Cells(x, 3) = LDATE
Ma question est donc :
Existe-t-il un moyen fiable à 100% de valider le format date d’une cellule ?
Peut-être par :
Mais cela fait un peu bricolage, non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Cells(x, 3).Select Selection.NumberFormat = "0" If len(Cells(x, 3)) <> 5 then MsgBox "Le contenu de la cellule C" & x & " n'est pas valide." Application.ScreenUpdating = True Cells(x, 3).Select Exit Sub End If Selection.NumberFormat = "m/d/yyyy"
Merci de votre attention.
Partager