IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Addition d'heures dans userform [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 43
    Par défaut Addition d'heures dans userform
    Bonjour à Tous,

    Je cherche à additionner 2 heures au format hh:mm dans un userform mais je bloque (la gestion des heures heures c'est vraiment galère !!!).

    Voici le bout de code que j'ai écrit mais qui ne me réalise pas l'addition (cala m'affiche 00:00) ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub ComboBox7_AfterUpdate()
     
            Dim duree1 As Long
     
     
        duree1 = DateAdd("n", ComboBox5.Value, ComboBox7.Value)
     
        TextBox20.Text = Format(Fix(duree1 / 60), "00") & ":" & Format(duree1 Mod 60, "00")
    End Sub
    merci d'avance à ceux qui pourront éclairer ma lanterne sur ma ou mes erreurs.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour.

    Déjà, "n" dans DateAdd indique un ajout de minutes dans une date.
    Or un combobox n'est pas une date mais du texte et, qui plus est, il s'agirait d'un calcul d'heures …

    Questions : ces heures sont dans la même journée ? Seules des heures sont saisies dans ces comboboxes ou bien y figurent aussi des dates ?
    Un exemple de saisie dans ces comboboxes dégagerait l'horizon …

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 43
    Par défaut
    Bonjour,

    En fait, dans le combobox, j'ai un menu déroulant avec des valeurs du type 00:30, 01:00, 01:30....jusqu'à 50:30. Pour moi, il s'agit de durées (il n'y a pas de dates de saisies.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub UserForm_Initialize()
    Dim i As Byte, j As Byte
     
    'je boucle sur les heures
    For i = 0 To 50
        'je boucle sur les minutes par tranche de 30mn
        For j = 0 To 30 Step 30
        'j'initialize ma combo
        Me.ComboBox5.AddItem Format(i, "00") & ":" & Format(j, "00")
        Me.ComboBox7.AddItem Format(i, "00") & ":" & Format(j, "00")
     
        Next j
    Next i
    End Sub
    En fait, je souhaiterais faire les additions de ces durées dans le textBox20.
    En espérant avoir été plus clair ?

    Merci d'avance

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Dans ce cas, le plus simple c'est d'extraire les heures et minutes, de les additionner et ensuite de concaténer le tout avec bien sûr un contrôle sur le total des minutes (si minutes > 59 minutes = 0 et heures = heures + 1) mais attention, si le résultat affiché dans le textbox doit être traiter par des fonction Excel. "51:30" donne 2,146 soit 2 jours 3 heures et 30 minutes :
    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
     
    Private Sub ComboBox7_Click()
     
        Dim Heures As Integer
        Dim Minutes As Integer
     
        Heures = Split(ComboBox5.Value, ":")(0)
        Heures = Heures + Split(ComboBox7.Value, ":")(0)
     
        Minutes = Split(ComboBox5.Value, ":")(1)
        Minutes = Minutes + Split(ComboBox7.Value, ":")(1)
     
        If Minutes > 59 Then
     
            Minutes = 0
            Heures = Heures + 1
     
        End If
     
        TextBox20.Text = Format(Heures, "00") & ":" & Format(Minutes, "00")
     
    End Sub
    Hervé.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 43
    Par défaut
    Bonjour Hervé,

    Très astucieux comme fonction. Je ne connaissais pas cette fonction split (car comme tu as pu le voir, je suis autodidacte) mais après documentation, cela à l'air vraiment intéréssant.

    Merci beaucoup de m'avoir dépanné.

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Avec un peu en retard, une autre approche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function AddTime(ParamArray PA()) As String
             For Each T In PA
                 H = Split(T, ":")
                 D = D + H(0) \ 24 + CDbl(TimeValue(H(0) Mod 24 & ":" & H(1)))
             Next
                   H = Fix(D)
                   T = CDate(D - H)
             AddTime = 24 * H + Hour(T) & ":" & Format(Minute(T), "00")
    End Function
    Et donc dans le code d'origine :
    TextBox20.Text = AddTime(ComboBox5.Value, ComboBox7.Value)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Addition d'heure dans une requête
    Par devamat38 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 16/02/2014, 03h41
  2. [XL-2007] Format heure:minute dans Userform.
    Par Eric_du_87 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/10/2013, 19h37
  3. [XL-2007] Calcul heure dans userform
    Par stephadm dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/04/2012, 08h26
  4. format heure dans userform
    Par maoricio dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 25/08/2007, 13h00
  5. Format heure dans Interbase
    Par Battomura dans le forum InterBase
    Réponses: 2
    Dernier message: 14/03/2003, 13h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo