XL 2016 Calcul entre Textbox et renvois dans une textbox principale

GClaire

XLDnaute Impliqué
Supporter XLD
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

  • Année 2018.xlsm
    205 KB · Affichages: 105

GClaire

XLDnaute Impliqué
Supporter XLD
Hello.

Merci Jean Marie, pour ton aide.

Oui mon fichier a un peu avancé grave a vous.

Je le met en piece jointe, pour te montrer un peu le résultat.

Mais je but toujours sur ces calculs, je vais y arriver...

Encore merci.

G'Claire
 

Pièces jointes

  • Année 2018.xlsm
    208.2 KB · Affichages: 95

youky(BJ)

XLDnaute Barbatruc
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
 

GClaire

XLDnaute Impliqué
Supporter XLD
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:

GClaire

XLDnaute Impliqué
Supporter XLD
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
 

GClaire

XLDnaute Impliqué
Supporter XLD
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

  • Année 2018-Fofo-Ajout mouvement.xlsm
    216.5 KB · Affichages: 42

GClaire

XLDnaute Impliqué
Supporter XLD
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
 

GClaire

XLDnaute Impliqué
Supporter XLD
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

  • Année 2018-Fofo-Ajout mouvement.xlsm
    218.2 KB · Affichages: 91

ChTi160

XLDnaute Barbatruc
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
 

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 184
Membres
112 679
dernier inscrit
Yupanki