[VBA]Format date combo pas ok si cellule vide

TheLio

XLDnaute Accro
Salut le forum et les forumeurs,
Dans le fichier joint, qui avance gentillement grâce à vous :)
Je rencontre un petit souci avec les combobox au format date.
Lorsque je passe d'une chambre à l'autre.
Difficile à expliquer, essayez le fichier avec le bouton 9
en passant le chambre 117 (alimentée en collation)
à la chambre 118 (non alimentée en collation) ça bug.
J'ai passé l'après-midi à essayer de comprendre, mais en vain.:(

Autre problème, je suis incapable de faire, je suppose une boucle, avec mon bouton effacer, il fonctionne, mais l'idéal, serait que les combo se mettent à jour une fois les données de la base de donnée effacées.

Par avance je vous remercie pour vos pistes (avec explications pour que j'assimile ;))

A++

Li:)
 

Pièces jointes

  • Test_Effacer_Final_Cartes.zip
    131.1 KB · Affichages: 72

Catrice

XLDnaute Barbatruc
Re : [VBA]Format date combo pas ok si cellule vide

Bonsoir,

Essaie de modifier les lignes suivantes comme suit :

Private Sub cbCollation1_Change()
If cbCollation1.Value <> "" Then cbCollation1.Value = Format(CDate(cbCollation1.Value), "hh:mm")
End Sub
Private Sub cbCollation2_Change()
If cbCollation2.Value <> "" Then cbCollation2.Value = Format(CDate(cbCollation2.Value), "hh:mm")
End Sub
Private Sub cbCollation3_Change()
If cbCollation3.Value <> "" Then cbCollation3.Value = Format(CDate(cbCollation3.Value), "hh:mm")
End Sub
Private Sub cbCollation4_Change()
If cbCollation4.Value <> "" Then cbCollation4.Value = Format(CDate(cbCollation4.Value), "hh:mm")
End Sub
Private Sub cbCollation5_Change()
If cbCollation5.Value <> "" Then cbCollation5.Value = Format(CDate(cbCollation5.Value), "hh:mm")
End Sub

Parfois cbCollationx.Value est vide donc le Format(CDate(cbCollationx.Value), "hh:mm") plante.
Mais je n'ai pas regardé la cause ni l'impact sur la suite du code ...
 

TheLio

XLDnaute Accro
Re : [VBA]Format date combo pas ok si cellule vide

Re,
Effectivement, si l'on rentre par erreur une valeur non numérique, ça plante...
Je vais voir pour trouver une parade, car ce masque est destiné à des personnes dénuées de toute logique:D:D:D
JE plaisante, enfin presque...
A++
Lio
 

Catrice

XLDnaute Barbatruc
Re : [VBA]Format date combo pas ok si cellule vide

Re,

Tu peux tester également ceci :

If IsDate(cbCollation1.Value) Then cbCollation1.Value = Format(CDate(cbCollation1.Value), "hh:mm")

N'affecte la valeur que si cbCollation1.Value est une date ou une heure.
Mais onpeut qd meme saisir une date par erreur ...

Ou bien ceci :
If IsDate(cbCollation1.Value) Then If CDate(cbCollation1.Value) < 1 Then cbCollation1.Value = Format(CDate(cbCollation1.Value), "hh:mm")

Qui vérifie que l'heure tapée est inférieure à 24:00
 
Dernière édition:

TheLio

XLDnaute Accro
Re : [VBA]Format date combo pas ok si cellule vide

Hello,
Le rouge de la honte devrait envahir mes joues, alors que je dormais paisiblement, tu travaillais encore sur mon code :)
Merci.
Je n'ai pas compris la subtilité:
Qui vérifie que l'heure tapée est inférieure à 24:00
On peut toujours entrer des valeurs supérieures? mais ça ne les mets pas au format hh:mm, c'est ça?
Toute bonne journée
A++
Lio
 

Catrice

XLDnaute Barbatruc
Re : [VBA]Format date combo pas ok si cellule vide

Bonjour,

Normalement (normalement car je l'ai testé avec une variable pas avec ton userform) on ne peut entrer que un horaire entre 00:00 et 23:59.
Mais je ne sais pas si c'est ce que tu veux ...
Ca teste si c'est un format date (heure) et si oui, ça teste si on saisit une valeur inferieure à 24:00 si oui on l'affecte au control si non, on ne fait rien.

Si tu veux entrer des valeurs au dela de 24:00, ceci de vrait fontionner :
If IsDate(cbCollation1.Value) Then Then cbCollation1.Value = Format(CDate(cbCollation1.Value), "hh:mm")
 

Discussions similaires

Réponses
4
Affichages
743