Addition , Devision et Multiplication des plusieurs TextBox

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 !

Marti Marti

XLDnaute Occasionnel
Bonjour à tous,

Je sollicite votre aide pour un petit problème de mal comprendre d'excel.

Je m'explique, je souhaiterai faire ces calcul dans ces textbox dans usf1.

Je souhaiterai aussi arrondi les chiffres decimaux dans tous ces textesbox a 2 chiffres apres la virgule.

de toute facon tous est explique au Feuil1

Mille merci par avance de votre aide.

Bien Cordialement

Marti Marti
 

Pièces jointes

Re : Addition , Devision et Multiplication des plusieurs TextBox

Bonsoir Marti Marti et bienvenue sur XLD 🙂

Un essai dans le fichier joint. Le code est dans le module du UserForm1.

nota : on doit pouvoir utiliser soit le point, soit la virgule, comme séparateur décimal.


EDIT : préférez la version v1c ICI
 
Dernière édition:
Re : Addition , Devision et Multiplication des plusieurs TextBox

Bonsoir Marti Marti et bienvenue sur XLD 🙂

Un essai dans le fichier joint. Le code est dans le module du UserForm1 :
VB:
Option Explicit

Sub Calculs()
Dim T(1 To 12), i

  On Error Resume Next
    For Each i In Array(1, 2, 3, 4, 7, 8)
      T(i) = Replace(Me.Controls("textbox" & i), ".", Application.DecimalSeparator)
      T(i) = Replace(T(i), ",", Application.DecimalSeparator)
      T(i) = CDbl(T(i))
    Next i
  On Error GoTo 0
  
  If TousNombres(T(2), T(3), T(4)) Then T(5) = CDbl(T(2) + T(3) + T(4)) Else T(5) = "~"
  If TousNombres(T(1), T(5)) Then T(6) = (T(1) + T(5)) / 5# Else T(6) = "~"
  If TousNombres(T(8)) Then T(9) = CDbl(T(8) * 3) Else T(9) = "~"
  If TousNombres(T(7), T(9)) Then T(10) = CDbl((T(7) + T(9)) / 5#) Else T(10) = "~"
  If TousNombres(T(6), T(10)) Then T(11) = CDbl(T(6) + T(10)) Else T(11) = "~"
  If TousNombres(T(11)) Then T(12) = CDbl(T(11) / 2#) Else T(12) = "~"
  
  For Each i In Array(5, 6, 9, 10, 11, 12)
    Me.Controls("textbox" & i) = T(i)
  Next i
End Sub

Function TousNombres(ParamArray Nombres()) As Boolean
Dim elem
  TousNombres = True
  For Each elem In Nombres()
    TousNombres = TousNombres And IsNumeric(elem)
  Next elem
End Function

Private Sub TextBox1_Change(): Calculs: End Sub
Private Sub TextBox2_Change(): Calculs: End Sub
Private Sub TextBox3_Change(): Calculs: End Sub
Private Sub TextBox4_Change(): Calculs: End Sub
Private Sub TextBox7_Change(): Calculs: End Sub
Private Sub TextBox8_Change(): Calculs: End Sub

nota : on doit pouvoir utiliser soit le point, soit la virgule, comme séparateur décimal.

mille fois merci mon prof MAPOMME..avec tous mes respect..excellent travail de votre part seulement une petite remarque que je l'ai explique au Feuil1 dans ce classeur..encore merci merci merci
 

Pièces jointes

Re : Addition , Devision et Multiplication des plusieurs TextBox

Bonjour Marti Marti,

Voir le fichier joint. C'est le dernier bloc de sub Calculs() qui a été modifié:
VB:
  For Each i In Array(5, 6, 9, 10, 11, 12)
    With Me.Controls("textbox" & i)
'      ARRONDIR à deux chiffres après la virgule
'      If T(i) <> "~" Then Me.Controls("textbox" & i) = Format(Round(T(i), 2), "#,##0.00")
'      TRONQUER à deux chiffres après la virgule
      If T(i) <> "~" Then .Value = Format(Fix(100 * T(i)) / 100, "#,##0.00") Else .Value = "~"
    End With
  Next i

Activer seulement la ligne qui correspond à votre souhait (Arrondir ou Tronquer). Dans le fichier joint, c'est Tronquer qui est activé.

Version v1c : remplacé l'évènement Change par KeyUP pour éviter les appels récursifs de Change pendant l'exécution de Calculs.
 

Pièces jointes

Dernière édition:
- 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

Réponses
3
Affichages
477
Retour