XL 2016 Calcul entre Textbox et renvois dans une textbox principale

  • Initiateur de la discussion Initiateur de la discussion GClaire
  • Date de début Date de début

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 !

GClaire

XLDnaute Impliqué
Hello

J'ai 3 texbox ou je rentre des valeurs et j'aimerais en direct voir le résultat, bon cela j'ai réuissi a le faire

Mais, comme il doit forcément avoir un soucis, si j'ai des valeurs a virgule, mon calcul ne se fait pas sur les nombres a virgules.

Et lorsque je veux envoyer cette valeur dans la feuille, et bien cela ne me renvois pas la valeur.

Merci pour votre aide.

cordialement, G'Claire
 

Pièces jointes

Bonjour à tous,
Ici un exemple pour TextBox1 autoriser que des chiffres et 1 virgule
VB:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'que numéric et 1 seule virgule
If KeyAscii = 46 And Not TextBox1 Like "*,*" Then KeyAscii = 44: Exit Sub
If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
ensuite il faut utiliser CdBl exemple avec TextBox1
tacellule=CdBl(textBox1)
ou
tacellule=Format(cdbl(TextBox1),"0.00")
Bruno
 
Hello

Merci pour ta réponse.

La pour le moment je tente le calcul des 3 textbox en live dans le quatrieme.

voici ce que j'ai mis dans les 3 textbox, afin de faire le calcul instantanés et ensuite le code de Chti160 que j'ai ajouté pour les deux autres textbox.

cela me met une erreur d'incompatibilité.

VB:
Private Sub Txt_AutPrestaServ_Change()
TXT_ValeurDuMouvement.Value = CDbl(Txt_VenMar.Value) + CDbl(Txt_ServComArt.Value) + CDbl(Txt_AutPrestaServ.Value) 'Met a jour TextBox Valeur du mouvement
End Sub



Private Sub Txt_ServComArt_Change()
TXT_ValeurDuMouvement.Value = CDbl(Txt_VenMar.Value) + CDbl(Txt_ServComArt.Value) + CDbl(Txt_AutPrestaServ.Value) 'Met a jour TextBox Valeur du mouvement
End Sub


Private Sub Txt_VenMar_Change()
TXT_ValeurDuMouvement.Value = CDbl(Txt_VenMar.Value) + CDbl(Txt_ServComArt.Value) + CDbl(Txt_AutPrestaServ.Value) 'Met a jour TextBox Valeur du mouvement
End Sub

Private Sub Txt_VenMar_KeyPress(ByVal keyascii As MSForms.ReturnInteger)
    If InStr("0123456789,", Chr(keyascii)) = 0 And keyascii <> 32 Then
        keyascii = 0      'on annule la pression sur la touche
'          Else
'            KeyAscii = Asc(UCase(Chr(KeyAscii)))
    End If
End Sub


Private Sub Txt_ServComArt_KeyPress(ByVal keyascii As MSForms.ReturnInteger)
    If InStr("0123456789,", Chr(keyascii)) = 0 And keyascii <> 32 Then
        keyascii = 0      'on annule la pression sur la touche
'          Else
'            KeyAscii = Asc(UCase(Chr(KeyAscii)))
    End If
  End Sub



Private Sub Txt_AutPrestaServ_KeyPress(ByVal keyascii As MSForms.ReturnInteger)
    If InStr("0123456789,", Chr(keyascii)) = 0 And keyascii <> 32 Then
        keyascii = 0      'on annule la pression sur la touche
'          Else
'            KeyAscii = Asc(UCase(Chr(KeyAscii)))
    End If
 
   
End Sub

Je viens de me rendre compte que j'avais changé la façon de faire ce calcule qui marchotait car pas la virgule.

avec la fonction Val

TXT_ValeurDuMouvement = Val(Txt_VenMar) + Val(Txt_ServComArt) + Val(Txt_AutPrestaServ) 'Met a jour TextBox Valeur du mouvement


Merci.

G'Claire
 
Dernière édition:
Hello

Merci Bruno, j'ai bien vu cela passer, mais CdBl, ne fonctionnait pas, et je viens de m'apercevoir que de toute manière je ne met pas de chiffre a virgule dans la déclaration.

Bon maintenant il faut que je fasse le remplissage des cellules avec la fonction arrondi.

cela avance.

Merci.

G'Claire
 
Hello.

En faite cette partie n'était pas tout a fait fini et je tentais de voir comment régler l'histoire des nombres a virgules (J'avais même émit le fait de ne pas mettre de chiffre a virgule, lol) et ce qu'il restait a régler s'était l'histoire si je voulais a partir de la rajouter un client, la combobox ne se rafraichissait pas, et je ne vois d'ailleurs pas comment le faire, mais je chercher encore car comme l'userform "AjoutClient" est déjà utilisé seul, je ne sais pas comment cela réagirai si au moment de la validation du nouveau client il y a un code de rafraichissement d'un combobox d'une autre userform non ouvert (peut être pas claire cela....)

Ou créer un second userform ajout client spécifique pour l'ajout d'un mouvemente.

J'ai donc intégrer ton code ChTi160, dans mon classeur actuel (Colonnes en plus).

Merci beaucoup, G'Claire
 

Pièces jointes

Re

Le truc que j'ai essayé c'est de ré initialise l'UserForm en validant le nouveau client, mais automatiquement cela me remet tout ce que j'avais saisie a zéro, j'ai voulu ajouter des variables pour stocker ces valeurs et il y avait toujours un truc qui planté, et j'avoue que plustot que de m'énerver, je suis passé a autre choses.

Mais je vais rééssayer.

Merci
 
Re

Voici donc ce que j'ai fais dans l'UserForm "Usf_AjoutClient", peu orthodox mais cela a l'aire de fonctionner et pas contrarier si j'utilise cet UserForm seul;

VB:
Private Sub cmdButValider_Click()
Dim Derligne As Integer

If TXT_NouveauClient = "" Then MsgBox "Veuillez renseigner un client SVP !!!", vbExclamation, "": TXT_NouveauClient.SetFocus: Exit Sub
  With Sheets("Données")
  Derligne = .Range("B65000").End(xlUp).Row
  .Cells(Derligne + 1, 2) = TXT_NouveauClient.Value
  End With
  
Call Tri_Clients

With USF_NouveauMouvement
USF_NouveauMouvement.Cbx_Client.Clear
With Sheets("Données")
xdlgn = .Range("B" & .Rows.Count).End(xlUp).Row
  For I = 5 To xdlgn
  If .Cells(I, 2) <> "" Then
  USF_NouveauMouvement.Cbx_Client.AddItem .Cells(I, 2)
  End If
  Next I
End With


End With
  Unload Me
 

End Sub

Merci, G'Claire
 

Pièces jointes

Bonjour GClaire
Bonjour le Fil ,le Forum
dans un des fichier que j'ai posté je ne sais plus ou (Y a tellement de fils à la fois Lol)
j'avais mis ceux ci qui fonctionne aussi
VB:
Private Sub cmdButValider_Click()
Dim Derligne As Integer
With USF_NouveauClient
  StrClient = .TXT_NouveauClient
If StrClient = "" Then MsgBox "Veuillez renseigner un client SVP !!!", vbExclamation, "": .TXT_NouveauClient.SetFocus: Exit Sub
End With
        With Sheets("Données")
            Derligne = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
            .Cells(Derligne, 2) = StrClient
        End With
 '*****************************     
Call Tri_Clients
'******************************
With USF_NouveauMouvement.CBX_Client
    .Clear  'on efface les donnees
    .List = Tab_Clients 'on colle le tableau des Noms
    .Text = StrClient 'on affiche le Nouveau Nom
End With
     Unload Me 'on masque le Userform "Nouveau Client"
End Sub
Bonne journée
Amicalement
Jean marie
 
- 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
14
Affichages
637
Réponses
3
Affichages
773
Retour