XL 2013 additionner combobox heures

ctrl32

XLDnaute Nouveau
Bonjour à tous

j'ai besoin d’effectuer une addition, heure de départ + durée = heure d'arrivée, ceci dans un formulaire
chaque champs est une combobox (1,2 et 3, dans l'ordre) dont les heures font références à la première feuille excel
- je n'arrive pas a effectuer l'addition,
- j'effectue un contrôle pour que l'heure d'arrivée = départ+durée, en cas d'égalité, celle ci n'est pas reconnu !
- j'effectue un contrôle pour que l'heure d'arrivée soit supérieur à l'heure de départ, le contrôle ne se fait pas

j'ai l'impression que le temps n’est pas interprété comme heure et minutes
auriez vous une idée ?

je précise que je débute en VBA

en PJ mon fichier

Merci de votre aide
Laurent
 

Pièces jointes

  • add_combobox.xlsm
    21.3 KB · Affichages: 46

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
J'ai écourté ton code , sup. Combobox3 pour mettre une Textbox puisque c'est pour afficher un résultat
La textbox comme son nom l'indique reçoit du texte , donc on converti le contenu en horaires
Pourquoi les tests ?? du départ tu additionnes un temps donc c'est toujours Ok ???
 

Pièces jointes

  • add_combobox.xlsm
    19.7 KB · Affichages: 51

ctrl32

XLDnaute Nouveau
Bonsoir Hervé,

un grand merci, d'une part ça fonctionne parfaitement, d'autre part le code épuré me rend compte que je déclarais des choses pour rien...
enfin, j'ai rajouté la combo3 puisque, j'avais également besoin de définir parfois une heure d'arrivée, ça me recalcule alors la durée,
et vérifie donc si je n'arrive pas avant de partir :)

'après mise à jour heure fin
Private Sub ComboBox3_change()

' heure de d'arrivé - heure de de depart = durée
duree = CDate(ComboBox3) - CDate(ComboBox1)

ComboBox2.Value = Format(duree, "hh:mm")

End Sub

espérons que ce petit exercice puisse servir à d'autre

très bonne soirée,
et merci tt de même Laetitia

Laurent
 

ctrl32

XLDnaute Nouveau
Heuuu, j'ai parlé un peu trop vite
en affinant mon code, je n'arrive pas à mes fins, voici les 3 modifs dont j'ai besoins :

- choix de la durée => calcul départ + durée => mise à jour de l'arrivée : fonctionne très bien
- choix heure arrivée => calcul arrivé - départ => mise à jour de la durée : fonctionne très bien

- choix heure de départ => calcul départ + durée => mise à jour de l'arrivée : impossible d'y arriver :-(

je joins mon fichier
merci.
 

Pièces jointes

  • add_combobox.xlsm
    21.3 KB · Affichages: 36

Dranreb

XLDnaute Barbatruc
Bonsoir.
Et comme ça, ça va ?
VB:
Option Explicit
Private ChangementInduit As Boolean
Private Sub UserForm_Initialize()
   Dim M As Long
   For M = 0 To 1425 Step 15
      Me.ComboBox1.AddItem Format(M / 1440, "hh:mm")
      Next M
   Me.ComboBox2.List = Me.ComboBox1.List
   Me.ComboBox3.List = Me.ComboBox1.List
   End Sub
Private Sub ComboBox1_Change()
   If ChangementInduit Then Exit Sub
   Minutes(ComboBox3) = Minutes(ComboBox1) + Minutes(ComboBox2)
   End Sub
Private Sub ComboBox2_Change()
   If ChangementInduit Then Exit Sub
   Minutes(ComboBox3) = Minutes(ComboBox1) + Minutes(ComboBox2)
   End Sub
Private Sub ComboBox3_Change()
   If ChangementInduit Then Exit Sub
   Minutes(ComboBox2) = Minutes(ComboBox3) - Minutes(ComboBox1)
   End Sub
Property Get Minutes(ByVal CBx As MSForms.ComboBox) As Long
   On Error Resume Next
   Minutes = Int(CDate(CBx.Text) * 1440 + 0.5)
   End Property
Property Let Minutes(ByVal CBx As MSForms.ComboBox, M As Long)
   ChangementInduit = True
   If M < 0 Then M = M + 1440
   CBx.Text = Format(M / 1440, "hh:mm")
   ChangementInduit = False
   End Property
 

ctrl32

XLDnaute Nouveau
Merci Dranreb !
c'est génial, plus besoins de passer par une feuille pour lister les heures !
j'ai pas tout compris, mais je vais éplucher ça !
Il reste une fonctionnalité que je ne sais pas mettre en place, l'heure d'arrivée doit être supérieur à l'heure de départ, or si le départ est ultérieur à l'arrivée, ça passe automatiquement au lendemain,
ex qui ne doit pas être possible, partir à 9h et arriver à 8h, durée calculée 23h
je dois obligatoirement rester dans la même journée, soit un départ à 00h00 au plus tôt et arrivée à 23h45 au plus tard.

Merci
Laurent
 

Discussions similaires

Réponses
8
Affichages
727

Statistiques des forums

Discussions
312 069
Messages
2 085 042
Membres
102 765
dernier inscrit
richdi