[USF]Calculsmise en forme dans un textbox

Vincenzozo

XLDnaute Nouveau
Bonjour à tous et à toutes,

Voilà, je reviens avec ma userform...
Mais avant de passer aux finitions, j'ai une question, on m'a demandé de rajouter une fonction "analyse en temps réel". C'est à dire que les chefs d'équipes veulent voir s'allumer en rouge ou en vert 1 TextBox suivant les valeurs qu'ils sont en train de rentrer!

Donc, pour faire clair, voici de quoi est composée ma USF :
ComboBox10a 'on donne le numéro d'une pièce
TextBox10c 'on rentre le temps d'usinage
TextBox10d 'on précise si le temps d'usinage était pour une ou plusieurs pieces
TextBox10e 'se remplit automatiquement avec le temps nominal d'usinage de la pièce (recherchev, enfin vblookup en place, pas de soucis)
TextBox10f 'qui (devrait) calcule(r) le dépassement du temps d'usinage
TextBox10g 'qui (devrait) affiche(r) le dépassement relatif en %

Ce que je voudrai faire comme opération, c'est
Si TextBox10c et TextBox10d non vides, alors TextBox10f = (TextBox10c / TextBox10d) - TextBox10e
et TextBox10c et TextBox10d non vides, alors TextBox10g = (TextBox10c / TextBox10d) / TextBox10e

J'ai déjà mis en forme TextBox10g pour les couleurs :
Code:
Private Sub TextBox10g_change()
If Val(TextBox10g.Text) > 0 Then
    If Val(TextBox10g.Text) > 1 Then
        TextBox10g.BackColor = vbGreen
    Else
        TextBox10g.BackColor = vbRed
        TextBox10g.ForeColor = vbYellow
    End If
Else
    TextBox10g.BackColor = vbWhite
End If
End Sub
et je force le format %
Code:
Private Sub TextBox10g_beforeupdate(ByVal Cancel As MSForms.ReturnBoolean)
Me.TextBox10g.Value = Format(Me.TextBox10g.Value, "0.00%")
End Sub


Mais là où je bloque, c'est dans l'introduction du code relatif à l'opération que je souhaite faire de façon automatique, dès que les champs 10a, 10c et 10d sont remplis, zou ça calcule et ça s'allume!
J'ai vraiment besoin d'une aide sur ce coup là!

Merci d'avance,
Bien à vous,

Vincenzozo
 

Vincenzozo

XLDnaute Nouveau
Re : [USF]Calculsmise en forme dans un textbox

Bonjour,

Le soucis, c'est que mon fichier, même zippé fait plus de 50ko...
Je vais essayé de couper dans le code pour l'alléger un peu!

Edit : J'arrive pas à l'alléger... Voici le lien Cijoint.fr - Service gratuit de dépôt de fichiers

Merci pour votre aide! :)
 
Dernière édition:
G

Guest

Guest
Re : [USF]Calculsmise en forme dans un textbox

VinCenzo, bonjour,

inclus cette procédure calcul dans le code du userform et appèle là sur évènement Exit ou AfterUpdate des TextBox10c et 10d.

Code:
Private sub CalculTextBox10fg()
       TextBox10g.BackColor = vbWhite 'Couleur par defaut

   if val(TextBox10c)>0 and val(textbox10d)>0 then
       TextBox10f =(val(TextBox10c) /val(TextBox10d)) - val(TextBox10e)
       TextBox10g = (val(TextBox10c) / val(TextBox10d)) / val(TextBox10e)
   end if

   If Val(TextBox10g.Text) > 1 Then
           TextBox10g.BackColor = vbGreen
   Else
           TextBox10g.BackColor = vbRed
           TextBox10g.ForeColor = vbYellow
   End If
end sub

Ps: ecrit à main levé donc sans test mais le principe est là

A bientôt
 

Vincenzozo

XLDnaute Nouveau
Re : [USF]Calculsmise en forme dans un textbox

Bonjour Hasco,

J'ai tenté d'implémenter ton code, mais ça ne fonctionne pas...
Disons, que la textbox10g s'allume en rouge tout le temps...
Je pense que c'est dû à une mauvaise explication de ma part.

Je vais tenter de reprendre plus clairement.

J'ai donc une combobox10a qui me donne un temps de référence dans textbox10e. (la magie des recherchev... :p)
Je rentre un temps pointé en textbox10c et un nombre de pièces en textbox10d.
Ces 2 valeurs permettent de calculer le dépassement ( (TB10c / TB10d) - TB10e ) dans TB10f et le ratio TB10f / TB10e en % dans TB10g...

Je ne sais pas si j'ai été plus clair?

En gros, ce que je souhaite c'est que le chef d'équipe remplisse dans l'ordre :
combobox10a => PN
textbox10b => OF (mais on s'en fout pour les calculs à suivre)
textbox10c => Temps pointé
textbox10d => Nb pièces

et que la suite soit automatique

  • textbox10e = Temps SAP = recherchevv du P/N ==> OK

  • textbox10f = (Temps pointé / nb pièce) - temps SAP
    = (TB10c / TB10d) - TB10e​

  • textbox10g = dépassement en %
    = (TB10f / TB10e) = ((TB10c / TB10d) - TB10e) / TB10e​


Voilà, j'espère que ces explications plus claires (du moinspour la seconde partie te permettront de mieux comprendre mon pb...


PS : pour l'appel de private sub, c'est bien comme cela qu'il faut faire?
Code:
Private Sub Textbox10c_afterupdate()
Call CalculTextBox10fg
End Sub
 
G

Guest

Guest
Re : [USF]Calculsmise en forme dans un textbox

Vincenzo,

Non ce n'est pas forcément plus clair pour moi mais c'est pas grave. Ce que je t'ai donné est un exemple de ce que tu peux faire, à toi de l'adapter à ton cas.

tu sais faire des calculs sur les textbox, afficher ces calculs dans d'autres textbox. Tu peux le faire après la saisie d'un textBox (évènement Exit ou After_upDate). A toi de faire tes tests.

Bon courage
 

Lii

XLDnaute Impliqué
Re : [USF]Calculsmise en forme dans un textbox

Bonjour,

Autre proposition à tester
Code:
'ajout----------------------------------------------
Private Sub TextBox10c_Change()
  If Not IsNumeric(TextBox10c) Then TextBox10c = "": Exit Sub
  Calcule
End Sub
Private Sub TextBox10d_Change()
  If Not IsNumeric(TextBox10d) Then TextBox10d = "": Exit Sub
  Calcule
End Sub
Sub Calcule()
If TextBox10c <> "" And TextBox10d <> "" Then
    TextBox10f = CDbl(TextBox10c) / Val(TextBox10d) - CDbl(TextBox10e)
    TextBox10g = CDbl(TextBox10c) / Val(TextBox10d) / CDbl(TextBox10e)
  End If
End Sub
Avec tes formules et bien sûr, faire attention aux formats !
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16