Zone de texte autoremplie - format numérique

Bonjour à tous

Je sollicite votre aide car j'ai une petite question.

J'aimerais créer une macro qui, quand je clique sur un bouton, me renseigne dans une zone de texte la somme de toutes les valeurs présentes dans d'autres zones de texte.

J'ai tenté ces deux codes suivants :

Private Sub CommandButton_Check_Click()

Check.Value = WorksheetFunction.Sum(Amount1.Value, Amount2.Value, Amount3.Value, Amount4.Value, Amount5.Value, Amount6.Value)

End Sub

et

Private Sub CommandButton_Check_Click()

Check.Value = "Amount1.Value" + "Amount2.Value" + "Amount3.Value" + "Amount4.Value" + "Amount5.Value" + "Amount6.Value"

End Sub

Amount1, 2, 3, 4,5 et 6 étant mes zones de textes dont je veux la somme dans la zone de texte "Check"

Dans la première hypothèse, VBA ne reconnait pas la formule "Sum" et dans la deuxième hypothèse, elle se contente de mettre les input des zone de texte amount à la suite et non de les sommer.

Je pense que cela est du au fait que les zone de texte produise du format texte et non du format numérique.

Est ce possible de modifier cela ?

Merci d'avance pour votre réponse,

En vous souhaitant une belle après midi

Jeanne

Je pense que cela est du au fait que ma zone de te

Bonjour à tous,

Une petite idée?

Bonne journée !

Jeanne

Bonjour

jeannebrnd a écrit :

Une petite idée?

Ah que oui

Bonsoir,

Ci joint mon fichier !

Le code en question se trouve à la fin du code du formulaire.

Il correspond au code suivant :

Private Sub CommandButton_Check_Click()

Check.Value = Amount1.Value + Amount2.Value + Amount3.Value + Amount4.Value + Amount5.Value + Amount6.Value

End Sub

Pour rappel, j'aurais aimé que dans mon formulaire, dans ma zone de texte "check", je puisse avoir la somme des montants inscrits dans les zones de textes "Amount1" "amount2" etc... et j'aurais aimé que cela s'affiche directement dans le formulaire.

Est ce possible ?

Merci d'avance pour votre aide

Bonne soirée,

Jeanne

Bonsoir

Remplace la procédure actuelle par celle-ci

Private Sub CommandButton_Check_Click()
Dim Total As Double, I As Integer

  For I = 1 To 6
    Total = Total + Val(Replace(Me.Controls("Amount" & I), ",", "."))
  Next I
  Me.Check = Total
  ' Check.Value = Amount1.Value + Amount2.Value + Amount3.Value + Amount4.Value + Amount5.Value + Amount6.Value
End Sub

Si tu veux que le calcul se fasse automatiquement et ainsi supprimer le bouton "Check"

Private Sub Amount1_Change()
  Calcul
End Sub

Private Sub Amount2_Change()
  Calcul
End Sub

Private Sub Amount3_Change()
  Calcul
End Sub

Private Sub Amount4_Change()
  Calcul
End Sub

Private Sub Amount5_Change()
  Calcul
End Sub

Private Sub Amount6_Change()
  Calcul
End Sub

Sub Calcul()
Dim Total As Double, I As Integer

  For I = 1 To 6
    Total = Total + Val(Replace(Me.Controls("Amount" & I), ",", "."))
  Next I
  Me.Check = Total
  ' Check.Value = Amount1.Value + Amount2.Value + Amount3.Value + Amount4.Value + Amount5.Value + Amount6.Value
End Sub

ça fonctionne

Formidable....

Merci beaucoup !!!

Bonne soirée


Et j'adore l'idée de le faire automatiquement !

J'ajoute, merci

Bonjour à tous,

Je réouvre ce sujet, car je me trouve fasse à un nouveau problème pour mon formulaire.

J'aimerais que, lorsque je saisie un nombre dans ma Textbox, le point se transforme automatiquement en virgule.

Est possible ?

J'ai en effet 8 TextBox, nommees "Amount1", "Amount2", etc jusqu'à "Amount8".

Ma question est : est ce possible de reprendre ta formule Val(Replace pour que cela s'automatise?

J'ai essayé le code ci dessous et ça ne fonctionne pas.

Sub Calcul()
Dim Total As Double, i As Integer

  For i = 1 To 8
Val(Replace(Me.Controls("Amount" & i), ",", "."))
  Next i

End Sub

Sinon j'ai aussi réussi à empécher la saisie d'autre chose que du numérique pour UN textbox via le code suivant (mais du coup cela désactive le point du clavier numérique) :

'Obliger la saisie d'une virgule et empécher la saisie d'un point
Private Sub Amount1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim strpass As String
   strpass = Amount1.Value
   If ChainePasOK(strpass) = True Then Cancel = True: Amount1.Value = "": Beep: MsgBox "Saisie non valide !"
End Sub

Private Function ChainePasOK(strpass As String) As Boolean
   If strpass = "" Then Exit Function
   If Len(Replace(strpass, ".", "")) <> Len(strpass) Then ChainePasOK = True: Exit Function
   If Len(strpass) = 1 And InStr("1234567890", strpass) = 0 Then ChainePasOK = True: Exit Function
   strpass = Replace(strpass, ",", ".")
   If Len(CStr(Val(strpass))) <> Len(strpass) Then ChainePasOK = True
End Function

Private Sub Amount1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   If InStr("1234567890,-", Chr(KeyAscii)) = 0 Or Amount1.SelStart > 0 And Chr(KeyAscii) = "-" _
     Or InStr(Amount1.Value, ",") <> 0 And Chr(KeyAscii) = "," Then
      KeyAscii = 0: Beep
   End If
End Sub

mais je ne parviens pas à créer une boucle pour tous les textbox. j'ai essayé en reprenant ta méthode mais cela ne marche pas :'(

Private Sub Amount_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
Dim strpass As String
Dim i As Integer
For i = 1 To 8
   strpass = Me.Controls("Amount" & i).Value
   If ChainePasOK(strpass) = True Then Cancel = True: Me.Controls("Amount" & i).Value = "": Beep: MsgBox "Saisie non valide !"
Next i
End Sub

Private Function ChainePasOK(strpass As String) As Boolean
   If strpass = "" Then Exit Function
   If Len(Replace(strpass, ".", "")) <> Len(strpass) Then ChainePasOK = True: Exit Function
   If Len(strpass) = 1 And InStr("1234567890", strpass) = 0 Then ChainePasOK = True: Exit Function
   strpass = Replace(strpass, ",", ".")
   If Len(CStr(Val(strpass))) <> Len(strpass) Then ChainePasOK = True
End Function

Private Sub Amount_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim i As Integer
For i = 1 To 8
   If InStr("1234567890,-", Chr(KeyAscii)) = 0 Or Me.Controls("Amount" & i).SelStart > 0 And Chr(KeyAscii) = "-" _
     Or InStr(Me.Controls("Amount" & i).Value, ",") <> 0 And Chr(KeyAscii) = "," Then
      KeyAscii = 0: Beep
   End If
Next i
End Sub

As tu une idée de la meilleure façon d'optimiser cela ?

N'hésitez pas à me dire si ma question est trop dense auquel cas je la reformulerais...

Merci d'avance

En vous souhaitant une belle fin de journée !

Jeanne

Bonjour

Joins le fichier en cause

Rechercher des sujets similaires à "zone texte autoremplie format numerique"