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 !
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à!
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à
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... 😛)
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
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.
'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 !
- 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