Calcul avec label et textbox

Bonjour,

Je suis en difficulté pour effectuer des opérations en utilisant des labels et des textboxs.

J'ai crée un userform, où l'utilisateur entre des valeurs numériques dans des textbox ( mais ces derniers, il me semble les considèrent comme des strings ? ), et j'ai des labels "invisible pour l'utilisateur" qui prennent des valeurs ( suite à des opérations dans le code realisé avec les nombres que l'utilisateur rentre dans les textboxs)

J'ai reussi pour certain labels qui prennent bien les valeurs de l'operation, mais ce sont pour des operations très basiques.

Mais j'ai un soucis quand je passe dans des opération plus complexes qui mélangent à la fois des labels et des textbox.

Je vous écrit une partie de code où ça coince :

If CDate(TextBox3.Value) > CDate(TextBox8.Value) Then
        Label29.Caption = CDate(CDate(TextBox3.Value) - CDate(TextBox8.Value))
    Else
        Label29.Caption = Format(CDate(24 - CDate(TextBox8.Value) + CDate(TextBox3.Value)), "hh:mm")
    End If

      If CDate(TextBox4.Value) > CDate(TextBox10.Value) Then
        Label26.Caption = CDate(CDate(TextBox4.Value) - CDate(TextBox10.Value))
    Else
        Label26.Caption = Format(CDate(24 - CDate(TextBox10.Value) + CDate(TextBox4.Value)), "hh:mm")
    End If

     If CDate(TextBox11.Value) > CDate(TextBox5.Value) Then
        Label24.Caption = CDate(CDate(TextBox11.Value) - CDate(TextBox5.Value))
    Else
        Label24.Caption = Format(CDate(24 - CDate(TextBox5.Value) + CDate(TextBox11.Value)), "hh:mm")
    End If

'CE CODE FONCTIONNE BIEN, on remarque dans ce code que tous les labels sont sous format horaire, car l'utilisateur rentre une horaire

If TextBox9.Value = "30" Then
        Label25.Caption = (CDec(Label29.Caption) - 1.63) * Exp(-7780 * ((1 / (273 + CDec(TextBox7.Value))) - (1 / 293)))
    ElseIf TextBox9.Value = "75" Then
        Label25.Caption = (CDec(Label29.Caption) - 1.95) * Exp(-7780 * ((1 / (273 + CDec(TextBox7.Value))) - (1 / 293)))
    ElseIf TextBox9.Value = "120" Then
        Label25.Caption = (CDec(Label29.Caption) - 3.25) * Exp(-7780 * ((1 / (273 + CDec(TextBox7.Value))) - (1 / 293)))
    ElseIf TextBox9.Value = "150" Then
        Label25.Caption = (CDec(Label29.Caption) - 3.9) * Exp(-7780 * ((1 / (273 + CDec(TextBox7.Value))) - (1 / 293)))
    Else: TextBox9.Value = "175"
        Label25.Caption = (CDec(Label29.Caption) - 7.18) * Exp(-7780 * ((1 / (273 + CDec(TextBox7.Value))) - (1 / 293)))
    End If

'C'EST ICI QUE ÇA COINCE, Nous avons vu que les nombres étaient sous format date, j'utilise donc la formule CDec pour les mettre sous format décimale, j'ai aussi essayé avec la formule Cdbl (pour les mettre sous format double)

'mais ça ne change rien.

J'ai aussi tenté de créer des valeurs séparé comme ici :

Dim a As Double
Dim b As Double
Dim c As Double
Dim d As Double
Dim e As Double

c = Label29.Caption
d =Cdbl(c)
e = CDbl(TextBox7.Value)

Cela donne pour le début du code :

If TextBox9.Value = "30" Then
        a = (c - 1.63) * Exp(-7780 * ((1 / (273 + d)) - (1 / 293)))
        Label25.Caption = a
  ElseIf TextBox9.Value = "75" Then
        b = (c - 1.95) * Exp(-7780 * ((1 / (273 + d)) - (1 / 293)))
       Label25.Caption = b
    End If

Mais ça ne change rien au problème...

Voila, j'espère que je suis compréhensible, dites moi s'il vous plait, si je dois vous expliquer où je bloque,

Merci

'

Bonjour,

Il faudrait déjà commencer par savoir pourquoi tu as créé des Label invisibles, je ne comprends pas pourquoi tu es passé par là, je ne comprends pas non plus à quoi te servent tes calculs, et on ne sait pas à quoi ressemble ton Userform final, ni à quoi il sert non plus, on voit que tu veux faire plein de calculs, mais personnellement je ne vois pas plus loin avec seulement tes lignes de code

Bonjour,

et moi je comprend pas le comment on peut passer de date à heure minutes

Label29.Caption = Format(CDate(24 - CDate(TextBox8.Value) + CDate(TextBox3.Value)), "hh:mm")

il risque que pas de calculer des heures avec des dates

Bonjour,

et moi je comprend pas le comment on peut passer de date à heure minutes

Label29.Caption = Format(CDate(24 - CDate(TextBox8.Value) + CDate(TextBox3.Value)), "hh:mm")

il risque que pas de calculer des heures avec des dates

Hum ça dépend!

Il faudrait voir ce que contiennent ces contrôles pour savoir si ça peut faire l'affaire ou non, après tout, une heure c'est juste la partie décimale de la valeur mais je doute que ce soit bon quand même

Personnellement je ferai X variables pour récupérer le contenu des labels et textbox au bon format

et ensuite je ferai mes calcul avec les variables.

Bonjour Xmenpl

Si les calculs sont obligatoires, c'est ce que je ferais aussi

Bonjour,

Je vais essayer de vous répondre à tous et réexpliquer ce que je veux.

Mon but est de demander l'heure d'entrée à l'utilisateur, puis l'heure de sortie ( donc une heure et pas une date complète avec le jour/mois/année ), évidement j'ai prévu le cas quand l'heure d'entrée est supérieur à celle de sortie, on passe au jour suivant ( maximum 24 h ), et ça trouve automatiquement la bonne durée.

Je stocke ce calcul de durée dans un label, donc qui est vide initialement, avant le calcul ( d'où le "invisible pour l'utilisateur" )

Avec cette durée calculé et stocké dans un label, je dois calculer un temps, et donc j'utilise à la fois cette valeur, et à la fois d'autres valeurs que l'utilisateur à entré dans une textbox ( l’épaisseur notamment ), pour déterminer le temps, et je stock(écris ? )ce temps également dans un label.

Bonjour,

et moi je comprend pas le comment on peut passer de date à heure minutes

Label29.Caption = Format(CDate(24 - CDate(TextBox8.Value) + CDate(TextBox3.Value)), "hh:mm")

il risque que pas de calculer des heures avec des dates

Je cherche à utiliser le label où j'ai calculé la durée qui est donc une heure ( par exemple 15h40min), je cherche à utiliser cette durée dans mon calcul mathématique pour determiner le temps.

Je présume qu'il faut donc convertir cette durée en nombre mathématique ( soit en h, soit en min, mais pas les 2 ), pour realiser mon calcul.

J'espère que j'ai été un plus clair cette fois ci, dites moi si je dois réexpliquer,

Merci à vous

Bonjour,

Deux remarques qui pourront t’aider :

1) Pour Excel, la valeur unitaire de temps est le jour. Autrement dit, 1 vaut 24h.

Dans le cas où l’heure de début est supérieure à l’heure de fin, le décalage de 24h devrait donc être effectué ainsi :

Label29.Caption = Format(CDate(1 - CDate(TextBox8.Value) + CDate(TextBox3.Value)), "hh:mm")

2) Pour convertir un texte (Label) en heure décimale, il faut tout d’abord convertir ce texte en date, puis convertir cette valeur en décimal et enfin multiplier par 24 pour obtenir des heures décimales :

CDec(CDate(Label29.Caption)) * 24

Salut,

Donc j'ai suivi ton conseil, j'écris maintenant :

Label25.Caption = (CDec(CDate(Label29.Caption)) * 24 - 1.63) * Exp(-7780 * ((1 / (273 + CDec(CDate(TextBox7.Value)) * 24)) - (1 / 293)))

ça ne fonctionne toujours pas, ça me dit objet requis

Voici mon fichier excel si ça peut aider :

44maturation.xlsm (27.81 Ko)

Je ne vois pas le TextBox7 dans ton Userform.

Rechercher des sujets similaires à "calcul label textbox"