Bonjour à tous,
Pour les amateurs de casses têtes, voici un exercice de style assez intéressant à résoudre (selon moi avec mon niveau découverte) !
Objectif : générer automatiquement la liste des heures et des jours dans 2 combobox différents et calculer automatiquement la durée soit en jour soit en heure quand les valeurs changent.
Explication :
Est placé uniquement 2 contrôles combobox sur le formulaire :
CmbNbHeuresDde pour les heures
CmbNbJourDde pour les jours
Une journée = 7 Heures
Les heures sont calculées toujours en centième
Au chargement du formulaire, pour les 2 contrôles, les valeurs sont initialisées avec une boucle for.
Quand un nombre d'heures est sélectionné dans le contrôle CmbNbHeuresDde, le nombre de jour du contrôle CmbNbJourDde se calcule automatiquement (soit Nbjour=Nbheures/7)
Exemple de valeurs calculées :
CmbNbHeuresDde.value = 1 --> CmbNbJourDde.value =0.14
CmbNbHeuresDde.value = 7 --> CmbNbJourDde.value = 1
CmbNbHeuresDde.value = 10 --> CmbNbJourDde.value = 1,42
Quand le nombre d'heures est modifié tout se passe bien de 0 à 2,75. Puis en sélectionnant 3,00 le message suivant s'affiche :
Impossible de définir la propriété value. Valeur de propriété non valide
Voici le code :
Code dans un module :
Code sur contrôle dans formulaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 With UsfNavigation.CmbNbHeuresDde .Clear H = 0 For j = 1 To 600 H = H + 0.25 .AddItem H Next .Style = fmStyleDropDownList End With ' Chargement Nombre jours : With UsfNavigation.CmbNbJourDde .Clear jour = 0 For k = 1 To 600 jour = jour + (0.25 / 7) .AddItem jour Next .Style = fmStyleDropDownList End With
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub CmbNbHeuresDde_Click() CmbNbJourDde.Value = CmbNbHeuresDde.Value / 7 End Sub
Remarque :
La finalité étant de n'afficher que 2 décimales avec une fonction du type :
CmbNbJourDde.Value = Format(CmbNbHeuresDde.Value / 7, "##, ##0.00")
et de permettre de calculer les jours si les heures sont modifiées ainsi que les heures si les jours sont modifiés.
Un grand merci pour tout le génie de vos réponses !
Partager