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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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.
 
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
 
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.
 
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
 
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.
 
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

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.
 
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 ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
134
Réponses
12
Affichages
451
  • Question Question
Microsoft 365 INDEX equiv
Réponses
1
Affichages
122
  • Question Question
Autres Code VBA
Réponses
11
Affichages
262
Retour