Quelle heure avez-vous ?

  • Initiateur de la discussion Initiateur de la discussion xhudi69
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

xhudi69

XLDnaute Accro
Bonjour à toutes et à tous

Cela a déjà été évoqué sur les forums, mais je n'ai pas trouvé mon bonheur.
dans le fichier joint un bouton "ça marche" avec un Userform et un TextBox au format ([h]:mm:ss;@) qui copie une cellule au format Text, tout ce passe bien.
Avec le bouton "ça marche pas" le TextBox1 reçois la valeur de la cellule qui est au format ([h]:mm:ss;@) et c'est là que cela se gâtte.
Avez vous une solution pour obliger le TextBox1 à recevoir dans le bon format ?

Autre question, si le TextBox1 est >= à 10:00:00 alors le TextBox3 affiche "1", quel en serait le bon code.

Merci pour votre temps passé.
 

Pièces jointes

Re : Quelle heure avez-vous ?

Bonjour xhudi69,

Le format heure "[h]:mm:ss" ou "[h]:mm:ss;@" n'est pas reconnu par VBA, c'est comme ça.

Mais pas de problème pour récupérer le texte affiché dans une cellule par ce format :

Code:
Private Sub ComboBox1_Change()
TextBox1 = Sheets("Feuil1").Cells(ComboBox1.ListIndex + 2, 3).Text
End Sub
A+
 
Re : Quelle heure avez-vous ?

Bonjour job75, le forum

ravi de te revoir,

c'est bien ce que je pensais, mais comment vais-je faire pour additionner ou soustraire 2 TextBox dans mon UserForm ?

dans le fichier joint, j'y ai mis ton code et en commantaire un format qui fonctionne si ce n'est qu' il tourne sur 24h00
il faudrais que j'y rajoute 24:00 si le TextBox affiche 00:00:00 ce qui veut dire, soit sa valeur est nulle, soit elle fait 1 jour.

as-tu une idée?

@+
 

Pièces jointes

Re : Quelle heure avez-vous ?

Re,

Pour la 2ème question :

Code:
TextBox3 = IIf(Val(TextBox1) >= 10, 1, 0) '0 ou ""
Cela fonctionne toujours.

Sans doute faut-il aussi interdire qu'on puisse entrer dans TextBox1 autre chose que des heures.

Utiliser la propriété Locked peut-être...

A+
 
Re : Quelle heure avez-vous ?

comment vais-je faire pour additionner ou soustraire 2 TextBox dans mon UserForm ?

Comme le format "[h]:mm:ss" n'est pas reconnu, 2 solutions :

1) Faire un traitement des textes des TextBox avec Split(TextBox1, ":") pour séparer heures minutes et secondes.

2) Utiliser 2 cellules auxiliaires dans une feuille que l'on additionnera dans une 3ème au format adéquat.

C'est une solution facile.

A+
 
Dernière édition:
Re : Quelle heure avez-vous ?

Re:

j'avais pensé à la deuxième solution, vu le nombre de calculs cela risque de faire beaucoup d'allez-retour sur la feuille, j'avais pensé aussi à fonctionner en "centième d'heure", aurais-tu la formule pour la conversion?

Merci à toi.....
 
Re : Quelle heure avez-vous ?

Re:

je me suis mal exprimé, cela fonctionne très bien dans tous les cas, je l'utilise dans d'autre fichier pour des écart de date en toutes lettres.

encore merci à toi (pense à ma formule si tu en as le temps, je cherche de mon côté)

Excellente soirée.
 
Re : Quelle heure avez-vous ?

Bonjour Gelinotte, le Forum

un grand merci à toi, j'aurais du faire comme toi et me mettre au sirop d'Erable, tu viens de me régénérer les neurones que j'ai perdu en faisant une matrice intermédiaire.

Merci et vive le QUEBEC !
 
Re : Quelle heure avez-vous ?

Bonsoir xhudi69, Gelinotte,

Pour additionner les heures des TextBox on peut en effet les convertir en centièmes d'heures.

Mais pourquoi pas en secondes :

Code:
Dim s, secondes1 As Double
On Error Resume Next 'si la TextBox ne contient pas une heure formatée [h]:mm:ss
s = Split(TextBox1, ":")
secondes1 = 3600 * s(0) + 60 * s(1) + s(2)
MsgBox secondes1 'pour tester
A+
 
Re : Quelle heure avez-vous ?

Bonjour xhudi69, le forum,

En fait il vaut mieux convertir en jours, ce qui permet d'utiliser les fonctions Minute et Second.

Ce code dans un UserForm :

Code:
Private Sub CommandButton1_Click()
TextBox3 = SommeHeures(TextBox1, TextBox2)
End Sub

Function SommeHeures(h1, h2)
Dim s
On Error Resume Next
s = Split(h1, ":")
h1 = s(0) / 24 + s(1) / 1440 + s(2) / 86400
s = Split(h2, ":")
h2 = s(0) / 24 + s(1) / 1440 + s(2) / 86400
s(0) = Int(CDec(24 * (h1 + h2)))
s(1) = Format(Minute(h1 + h2), "00")
s(2) = Format(Second(h1 + h2), "00")
SommeHeures = Join(s, ":")
End Function
A+
 
Dernière édition:
Re : Quelle heure avez-vous ?

Re,

Cette fonction est plus générale car elle permet de placer le signe - devant les heures, donc de les additionner ou de les soustraire :

Code:
Private Sub CommandButton1_Click()
TextBox3 = SommeHeures(TextBox1, "-" & TextBox2) 'soustraction
End Sub

Function SommeHeures(h1, h2)
Dim s, signe1%, signe2%
On Error Resume Next
signe1 = IIf(Left(h1, 1) = "-", -1, 1)
signe2 = IIf(Left(h2, 1) = "-", -1, 1)
s = Split(Replace(h1, "-", ""), ":")
h1 = signe1 * (s(0) / 24 + s(1) / 1440 + s(2) / 86400)
s = Split(Replace(h2, "-", ""), ":")
h2 = signe2 * (s(0) / 24 + s(1) / 1440 + s(2) / 86400)
s(0) = Int(CDec(24 * Abs((h1 + h2))))
s(1) = Format(Minute(Abs(h1 + h2)), "00")
s(2) = Format(Second(Abs(h1 + h2)), "00")
SommeHeures = IIf(h1 + h2 < 0, "-", "") & Join(s, ":")
End Function
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Réponses
15
Affichages
2 K
Réponses
5
Affichages
1 K
Membre supprimé 341069
M
Réponses
3
Affichages
1 K
Retour