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 :

additionner combobox heures


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 17
    Par défaut additionner combobox heures
    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
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 684
    Par défaut
    Bonjour,

    pour des raisons de sécurité, je ne peux ouvrir tes pièces jointes, aussi pourrais-tu stp nous recopier le code VBA, en ajoutant les commentaires et un exemple pour que nous puissions t'aider stp ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour,

    Regarde cette discussion :
    https://www.developpez.net/forums/d3...dition-heures/

  4. #4
    Membre averti
    Femme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 17
    Par défaut
    bonjour,

    alors voici,

    - une feuille Feuil1 de A1 à A96 format de cellule Heure 13:30, contenant des heures de 00:00 à 23:45 par parlier de 15mn
    - 1 combobox1 :heure de depart
    - 1 combobox2 :durée
    - 1 combobox3 :heure d'arrivée

    et voici le code de mon UserForm1

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    'declaration de la combobox1
    Private Sub ComboBox1_Change()
    ComboBox1.Value = Format(ComboBox1.Value, "hh:mm")
    End Sub
     
    'declaration de la combobox2
    Private Sub ComboBox2_Change()
    ComboBox2.Value = Format(ComboBox2.Value, "hh:mm")
    End Sub
     
    'declaration de la combobox3
    Private Sub ComboBox3_Change()
    ComboBox3.Value = Format(ComboBox3.Value, "hh:mm")
    End Sub
     
    Private Sub UserForm_Initialize()
     
    'affectation des heures de la Feuil1 aux 3 combobox
     
     
    Dim i As Integer
    For i = 1 To 96
        Me.ComboBox1.AddItem Format(Sheets("Feuil1").Range("A" & i).Value, "hh:mm")
        Me.ComboBox2.AddItem Format(Sheets("Feuil1").Range("A" & i).Value, "hh:mm")
        Me.ComboBox3.AddItem Format(Sheets("Feuil1").Range("A" & i).Value, "hh:mm")
    Next
     
     
    End Sub
     
    '***********************
    '* addition des heures *
    '***********************
     
    'après mise à jour durée
    Private Sub ComboBox2_AfterUpdate()
     
    ' heure de depart + durée = heure de arrivée
    ComboBox3.Value = (Val(ComboBox1)) + (Val(ComboBox2))
     
     
    End Sub
     
    'après mise à jour heure de arrivée
    Private Sub ComboBox3_AfterUpdate()
     
    ' contrôle si heure de depart + durée = heure de arrivée
    If ComboBox3.Value <> (Val(ComboBox1)) + (Val(ComboBox2)) Then
        MsgBox ("ERREUR : l'heure de arrivée ne correspond pas à l'heure de depart + durée => veuillez corriger")
     
    ' contrôle si heure de arrivée toujours supérieur à heure de depart
    ElseIf Val(ComboBox3.Value) < Val(ComboBox1.Value) Then
        MsgBox ("ERREUR : l'heure de arrivée est avant l'heure de depart => Veuillez corriger")
     
    End If
    End Sub

  5. #5
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Utilise la fonction Format.

    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox CDate(ComboBox1) + CDate(ComboBox2) = CDate(ComboBox3)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Format(CDate(ComboBox1) + CDate(ComboBox2), "hh:mm") = Format(CDate(ComboBox3), "hh:mm")

Discussions similaires

  1. [AC-2003] additionner des heures
    Par rene10 dans le forum IHM
    Réponses: 1
    Dernier message: 06/09/2010, 15h53
  2. Additionner des heures notées dans un fichier .txt
    Par grundraisin dans le forum VBScript
    Réponses: 9
    Dernier message: 24/09/2009, 16h03
  3. Additionner 2 heures
    Par muad'dib dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 05/09/2008, 11h26
  4. Additionner des heures selon Date et heure
    Par samawati dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 11/04/2008, 20h47
  5. [CR] Additionner des heures
    Par sbis dans le forum Formules
    Réponses: 4
    Dernier message: 22/03/2004, 16h34

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