Microsoft 365 Liste déroulante d'heures en décimal

Soumie

XLDnaute Nouveau
Bonjour,
J'ai inséré une liste déroulante d'heures dans mon formulaire. Quand je sélectionne une heure , elle apparait en format décimal. Comment faire pour l'avoir en format hh:mm ?
Capture d’écran 2023-09-19 131232.jpg
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Utilisez Cel.Value = CDate(ComboBox1.Text) et mettez un format d'heure à la cellule
Ah ! Et, important: n'affectez jamais de numérique à une propriété List de ComboBox, ça gêne la reconnaissance à la frappe et ce que vous dites: l'affichage de la valeur retenue.
 

Soumie

XLDnaute Nouveau
Je vous remercie pour votre réponse, mais comme je suis débutante (j'apprends à travers ce projet d'ailleurs) je dois avoir des erreurs dans mon code. Si j'ai bien compris, je dois utiliser '' Cel.Value = CDate(Durée.Text). Ma difficulté est comment déclarer un format vu que c'est une liste déroulante et non une cellule ? Quel code dois-je écrire? Voici ce que j'avais trouvé en faisant quelques recherches, mais que j'ai testé et qui ne fonctionne pas .
Merci!

Private Sub Durée_Change()

For i = 1 To Durée.ListCount - 1
Durée.List(i) = Format(Durée.List(i), "hh:mm")

Next i
End Sub
 

Dranreb

XLDnaute Barbatruc
C'est à l'initialisation du dispositif qu'il convient de renseigner sa List avec un tableau ne contenant que des textes. Les contrôles c'est du String, les Value de cellules ça peut en être aussi mais surtout, quand il le faut, ça doit être Double, Date, Currency, Boolean, Empty ou Error.
 

Soumie

XLDnaute Nouveau
J'ai changer le format de la cellule, Les heures s'affichent normalement. Cependant, j'ai un message d'erreur qui s'affiche . Savez -vous pourquoi? Voici ce que j'ai écris :
Capture d’écran 2023-09-19 151018.jpg

Private Sub Durée_Change()

Durée = Format(CDate(Durée.Value), "hh:mm")


End Sub
 

Dranreb

XLDnaute Barbatruc
C'est vraisemblablement parce que la valeur String du contrôle Durée n'est pas convertible en Date. Mettez des espions dessus pour voir ce qu'il en est. Mais si vous éprouvez encore le besoin de faire ça c'est que vous n'avez toujours pas pris soin de mettre des String dans sa List.
 

Soumie

XLDnaute Nouveau
C'est à l'initialisation du dispositif qu'il convient de renseigner sa List avec un tableau ne contenant que des textes. Les contrôles c'est du String, les Value de cellules ça peut en être aussi mais surtout, quand il le faut, ça doit être Double, Date, Currency, Boolean, Empty ou Error.
Bonjour, je reviens vers vous si vous voulaez bien m'aider, car vu le nombre de combobox que j'ai à formater, j'ai voulu une utiliser une boucle pour le formatage de mes combobox contenant des heures (celles de la discussion plus haut). j'ai pensé déclencher la subroutine au changement du userform au lieux qu'elle se déclanche au lancement, car au lancement les combobox ne sont pas séléctionées. Je n'ai aucun message d'erreur à l'exécution. mais j'ai l'impression qu'il ne s'exécute pas mes valeurs sont toujours en décimale.Voici le code: (Userform page EHDAA 1/3 TEMPS)
Private Sub UserForm_Change()
Dim j As Integer
Dim i As Integer

' Parcourir les CheckBox de 143 à 150
For j = 143 To 150
' Vérifier si la CheckBox est cochée
If Me.Controls("CheckBox" & j).value = True Then
' Parcourir les ComboBox de 300 à 315
For i = 300 To 315
' Formater la valeur de la ComboBox
Me.Controls("ComboBox" & i).value = Format(CDate(Me.Controls("ComboBox" & i).value), "hh:mm")
Next i
End If
Next j
End Sub

Voici ce que j'ai ecrit pour une seule combobox et qui marche :
Private Sub Durée1_Click()
Durée1 = Format(CDate(Durée1.value), "hh:mm")
End Sub

Je joins le fichier églament.

Merci!
 

Pièces jointes

  • Horaire de surveillance V.1.xlsm
    185.3 KB · Affichages: 2

Dranreb

XLDnaute Barbatruc
Bonsoir.
Personnellement je n'utilise jamais la propriété RowSource des ComboBox, j'initialise leurs List. Par exemple :
VB:
ComboBox116.List = Array("8:30", "9:00", "9:30", "10:00", "10:30", "11:00")
En principe une erreur d'exécution "Permission refusée" a lieu si on tente de changer la List alors que la propriété RowSource est utilisée.
 

Soumie

XLDnaute Nouveau
Bonsoir.
Personnellement je n'utilise jamais la propriété RowSource des ComboBox, j'initialise leurs List. Par exemple :
VB:
ComboBox116.List = Array("8:30", "9:00", "9:30", "10:00", "10:30", "11:00")
En principe une erreur d'exécution "Permission refusée" a lieu si on tente de changer la List alors que la propriété RowSource est utilisée.
Mais je devrais le faire pour toutes les combobox une à une . Y a t'il moyen de faire une boucle pour les faire toutes d'un coups ?
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 325
Membres
103 179
dernier inscrit
BERSEB50