XL 2016 Calcul entre Textbox et renvois dans une textbox principale

GClaire

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

Fichiers joints

GClaire

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

Fichiers joints

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 Occasionnel
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 Occasionnel
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 Occasionnel
Hello.

Oulaalalalalalalalalala, ChiTi160, le choc au réveil du dimanche matin, meeeeeerci.

Je regarde cela.

Merci très très beaucoup.

Bonne journée.

G'Claire
 

GClaire

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

Fichiers joints

GClaire

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

Fichiers joints

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
 

GClaire

XLDnaute Occasionnel
Hello.

A bon, je les regarde plus en détail car je pensais pas que tu ai bossé sur cette fonction.

sinon j'ai vue passer un code pour avoir la possibilité de rajouter un item dans une combobox afin de la rajouter dans la base, je décortique le code pour essayer de l'utiliser, cela serait peut être plus simple.

Merci beaucoup, G'Claire
 
Dernière édition:

GClaire

XLDnaute Occasionnel
CC.

Je viens de tous les regarder, je ne retrouve nul par ce code.

Je dois avoir caca bouda dans les gneux.

Merci, G'Claire
 

ChTi160

XLDnaute Barbatruc
Arff
Donc y aurait plus besoin , si j'ai bien compris du Userform "Nouveau Client" ?
Bonne fin de Soirée
Amicalement
jean marie
 

GClaire

XLDnaute Occasionnel
Hello.

Ben si j'arrive a modifier le code non, il n'y en aura plus besoin, sauf si je veux le garder pour un accès direct dans le menu..

Merci, G'Claire
 

Discussions similaires


Haut Bas