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 de TextBox HH:MM


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Retraité en apprentissage
    Inscrit en
    Juillet 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraité en apprentissage

    Informations forums :
    Inscription : Juillet 2019
    Messages : 2
    Par défaut Addition de TextBox HH:MM
    Bonjour.
    Je suis totalement novice en VBA. Malgré mes efforts de recherche des derniers jours, je n'arrive pas à trouver la solution à mon problème.
    Je dois faire la somme de durées de certaines tâches à réaliser dans une textbox. J'ai un Userform avec des textbox qui sont alimentées par une feuille excel dont les cellules sont formatées HH:MM. Il n'y a donc aucune entrée manuelle dans le userform; le format est alors toujours respecté. J'ai formaté chacune des textbox comme ceci: Me.TextBox1.Value = Format(Me.TextBox1.Value, "hh:mm"). Les valeurs s'affichent correctement. Je veux donc le total dans une textbox formatée de la même façon et dont le calcul se ferait automatiquement même si l'une des textbox est vide. Voici le dernier code utilisé comme essai avec un bouton de commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1_Click()
    Dim x As Double
    On Error Resume Next
    x = (CDbl(TextBox1.Value) + CDbl(TextBox2.Value) + CDbl(TextBox3.Value))
    TextBox4.Value = x
    Me.TextBox4.Value = Format(Me.TextBox4.Value, "hh:mm")
    End Sub
    Merci à l'avance de votre aide :-)

  2. #2
    Membre expérimenté
    Homme Profil pro
    chef de projet transverse MOE
    Inscrit en
    Janvier 2015
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : chef de projet transverse MOE
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 121
    Par défaut
    Une solution qui n'utiliserait pas les fonctionalités d'Excel (Non testée):

    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
     
    Dim SommeH as integer
    Dim SommeM as integer
     
    SommeH = 0
    SommeM = 0
     
     
    'le code ci dessous somme la valeur de la 1ere textbox dans notre variable finale
    'il faut le repeter pour les autres textbox
     
    SommeM = SommeM + CInt(Right(TextBox1.Value, 2))
    If SommeM > 60 Then
       SommeH = SommeH +1
       SommeM = SommeM - 60
    end if
     
    SommeH = SommeH + CInt(Left(Textbox2.Value, 2))
     
    'Après avoir sommé les 3 tu colles le résultat dans ta 4eme textbox:
    TextBox4.Value = CStr(SommeH) & ":" & CStr(SommeM)
    Tu peux probablement optimiser le code en faisant une boucle for pour repeter la même opération sur les textbox en addressant chaque textbox par un nom construit avec l'indicateur de la boucle: "Textbox" & i.
    La dernière ligne de code, je n'en suis pas sur (Les histoires de format c'est pas simple, mais je pense que coller du Str dans ta textbox ca devrait marcher.

  3. #3
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Autre solution, à copier dans le module du formulaire.
    Puisque les 3 textbox récupèrent le contenu de cellules, autant faire les calculs à partir du contenu de ces cellules.
    Exemple avec les cellules A1 B1 et C1(remplacez par vos cellules)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click()
        Dim x As Double
        On Error Resume Next
        x = [A1] + [B1] + [C1]
        h = Format(Int(x * 24), "00")
        m = Format((((x * 24) - Int(x * 24)) * 60), "00")
        TextBox4.Value = h & "h:" & m & "mn"
    End Sub
    Cdlt

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour
    encore 2 autre methode VBA

    'Methode 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub CommandButton1_Click()
    'Additionner des temps avec la fonction application.text
    'exemple txt1=12:52   txt2=12:34   txt3 = 12:58
        Heure1 = CDate(TextBox1.Text)    ' soit 12:52:00
        Heure2 = CDate(TextBox2.Text)    ' soit 12:34:00
        heure3 = CDate(TextBox3.Text)    ' soit 12:58:00
        TotalHeure = Heure1 + Heure2 + heure3
        'soit;  un long de 1,6     soit 31/12/1899 14:24:00  au format text
        'formatage avec la fonction (((((Application.Text))))) pour un affichage plus compréhensible
        TextBox4.Value = Application.Text(TotalHeure, "[h]:mm")     'les crochets indiquent que les heures sont susceptibles d'être supérieures à 24
    End Sub
    'Methode 2
    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 CommandButton2_Click()
    'Additionner des temps avvec datediff et format
        Dim heure(1 To 3), newdate, HH
        'exemple txt1=12:52   txt2=12:34   txt3 = 12:58
        heure(1) = CDate(TextBox1.Text)    ' soit 12:52:00
        heure(2) = CDate(TextBox2.Text)    ' soit 12:34:00
        heure(3) = CDate(TextBox3.Text)    ' soit 12:58:00
        newdate = Date + heure(1) + heure(2) + heure(3)    'on ajoute les heure a date qui au depart pour les heures min sec vaut  "00:00:00"
        HH = DateDiff("d", Date, newdate) * 24    'HH= la multiplication du nombre de jours différents entre date et newdate par 24
        'resultat = hh+ les heure de la newdate et les minutes de la newdate
        TextBox4 = HH + Format(newdate, "hh") & ":" & Format(newdate, "nn")
    End Sub
    Private Sub UserForm_Click()
    End Sub
    je pense avoir suffisamment commenté les codes
    Nom : demo3.gif
Affichages : 1320
Taille : 62,8 Ko

    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Candidat au Club
    Homme Profil pro
    Retraité en apprentissage
    Inscrit en
    Juillet 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraité en apprentissage

    Informations forums :
    Inscription : Juillet 2019
    Messages : 2
    Par défaut Wow!
    Merci à vous tous de m'avoir répondu aussi rapidement. Solutions toutes fonctionnelles.

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

Discussions similaires

  1. [AC-2010] Addition de textbox dans formulaire
    Par wisemanvsfatboy dans le forum IHM
    Réponses: 1
    Dernier message: 12/03/2011, 21h57
  2. Addition de TextBox ;-(
    Par thebossbest dans le forum C#
    Réponses: 5
    Dernier message: 01/08/2010, 16h50
  3. Addition de Textbox
    Par hawk91 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 10/04/2009, 10h07
  4. addition de textbox
    Par temjeh dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 27/04/2007, 00h02
  5. Addition de textbox
    Par VARACH dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/02/2007, 08h31

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