Enregistrer le format d'une valeur textbox en monétaire

gbstyle

XLDnaute Impliqué
Bonjour, voila je souhaiterai lors de l'enregistrement sur mon tableau que le format nombre soit monétaire
ci joint mon bout de code
Private Sub BtnAenregistrer_Click()
Ref = Me.TxtARefArticles
With Sheets("Base_Articles")
Set trouvé = .Range("TblBaseArticles").Columns(1).Find(Ref, lookat:=xlWhole, LookIn:=xlValues)
If trouvé Is Nothing Then 'il s'agit d'un nouvelle articles
derlig = .Range("A" & .Rows.Count).End(xlUp).Row + 1 'on se positionne sur la dernière ligne
Else 'existe déjà
derlig = trouvé.Row
If MsgBox("Souhaitez vous modifier l'article ?", vbYesNo) = vbNo Then Exit Sub
End If

.Range("A" & derlig) = TxtARefArticles
.Range("B" & derlig) = CboAFamille
.Range("C" & derlig) = CboASousfamille
.Range("D" & derlig) = TxtADesignation
.Range("E" & derlig) = CboAFournisseur
.Range("F" & derlig) = TxtALongueurcolisage
.Range("G" & derlig) = TxtALargeurcolisage
.Range("H" & derlig) = TxtAHauteurcolisage
.Range("I" & derlig) = TxtACréele
.Range("J" & derlig) = TxtANotes
.Range("K" & derlig) = TxtADelaislivraison
.Range("L" & derlig) = TxtAFraistransport
.Range("M" & derlig) = TxtAFacturation
.Range("N" & derlig) = CboAModedegestion
.Range("O" & derlig) = TxtAminicommande
.Range("P" & derlig) = TxtAPrixUnitHT ' => données à afficher en format Euros lors de la saisie dans le text box et lors de l'enregistrement que sont format se mette en monétaire dans le tableau source
J'ai essaye un code avec .NumberFormat = "#,##0.00 $" mais je n'y arrive pas, il me manque une déclaration de variable je pense


End With

End Sub

D'avance merci
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Oui, ça peut être le cas je pense. Mais si le résultat doit pouvoir s'afficher quand on change les contrôles qui en dépendent, il faudra de toute façon aussi refaire le calcul. Dans ce cas peut être autant le faire systématiquement. Écris le alors dans une Private Sub indépendante de façon à pouvoir l'appeler de plusieurs endroits. Peu importe dans ce cas que la source des Label soit dans TVL ou non, d'autant qu'on n'écrit pas ses dernières colonnes.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Oui, après la TVL = Lignes(LCou).Range.Value et aussi dans la CA_Change lorsqu'une des TextBox impliquées change. il faudra dans ce dernier cas faire précéder son appel de : CA.ValeursVers TVL pour que les valeurs y soient.
 

gbstyle

XLDnaute Impliqué
Ah ok je me suis pris la tête avec une déclaration bisarre, par contre j'ai du avoir une coupure de réseau pendant la sauvegarde de mon fichier et depuis il ne démarre plus en en cliquant sur le bouton du sommaire je ne trouve pas la panne :/

Pour le label est ce que je peux joindre une troisieme colonne qui est un revenus mais je dois prendre en compte que 70% de cette valeur, dois je ajouter une colonne dans le TVL avec cette valeur calculé pour la déclaré après dans la formule de calcul du LBl, car LBx et le diminutif de Listbox il me semble non!!!

Je te joint le fichier que j'ai mis à jour pour que tu puisse tester et voir si ca fonctionne chez toi ou non.
1586374163087.png
 

gbstyle

XLDnaute Impliqué
superbe merci, depuis le début du projet j'aime bien la philosophie des trigramme
j'ai besoin d'un calcul supplémentaire mais je n'y arrive pas as tu une idée :
En faite le dernier Lab est égale LabCharges / LabRevenus
VB:
   LabRevenus.Caption = Format(TVL(1, 33) + TVL(1, 71) + TVL(1, 113) * 0.7 + TVL(1, 118) * 0.7 + TVL(1, 123) * 0.7 + TVL(1, 128) * 0.7 + TVL(1, 133) * 0.7, "0 000.00 €")
   LabCharges.Caption = Format(TVL(1, 16) + TVL(1, 54) + TVL(1, 83) + TVL(1, 89) + TVL(1, 95) + TVL(1, 101) + TVL(1, 107), "0 000.00 €")
   LabEndettement.Caption = Format((TVL(1, 33) + TVL(1, 71) + TVL(1, 113) * 0.7 + TVL(1, 118) * 0.7 + TVL(1, 123) * 0.7 + TVL(1, 128) * 0.7 + TVL(1, 133) * 0.7) / (TVL(1, 16) + TVL(1, 54) + TVL(1, 83) + TVL(1, 89) + TVL(1, 95) + TVL(1, 101) + TVL(1, 107)), "00.00 %")
 

Dranreb

XLDnaute Barbatruc
Alors il vaut mieux les calculer préalablement dans des variables locales Dim Revenus As Currency, Charges As Currency et les affecter ensuite aux Label, comme ça elles restent ensuite aussi disponibles pour la division. Pareil pour le LabEndettement: il me semble reprendre largement des parties calculées pour Revenu et peut être Charges d'ailleurs.
Ah, mais c'est de celui la que tu parles justement ?
if faut :
VB:
LabEndettement.Caption = Format(100 * Charges / Revenus, "0.00 %")
 
Dernière édition:

gbstyle

XLDnaute Impliqué
Je les déclare aux meme endroit dans cette procédure en lieu et place de ce que je viens de faire :
VB:
Private Sub CL_Change(ByVal Complet As Boolean, ByVal NbrLgn As Long)
   Select Case NbrLgn
      Case 1: CBnAjouter.Enabled = False: CBnModifier.Enabled = True: CBnSupprimer.Enabled = True: Exit Sub
      Case 0: CBnAjouter.Enabled = True: CBnModifier.Enabled = False: CBnSupprimer.Enabled = False
      Case Else: CBnAjouter.Enabled = False: CBnModifier.Enabled = False: CBnSupprimer.Enabled = False
      End Select
   ReDim TVL(1 To 1, 1 To CL.Colonnes.Count)
   CA.ValeursDepuis TVL
   LabRevenus.Caption = Format(TVL(1, 33) + TVL(1, 71) + TVL(1, 113) * 0.7 + TVL(1, 118) * 0.7 + TVL(1, 123) * 0.7 + TVL(1, 128) * 0.7 + TVL(1, 133) * 0.7, "0 000.00 €")
   LabCharges.Caption = Format(TVL(1, 16) + TVL(1, 54) + TVL(1, 83) + TVL(1, 89) + TVL(1, 95) + TVL(1, 101) + TVL(1, 107), "0 000.00 €")
   'LabEndettement.Caption = Format((TVL(1, 33) + TVL(1, 71) + TVL(1, 113) * 0.7 + TVL(1, 118) * 0.7 + TVL(1, 123) * 0.7 + TVL(1, 128) * 0.7 + TVL(1, 133) * 0.7) / (TVL(1, 16) + TVL(1, 54) + TVL(1, 83) + TVL(1, 89) + TVL(1, 95) + TVL(1, 101) + TVL(1, 107)), "00.00 %")

   End Sub
Private Sub CL_BingoUn(ByVal Ligne As Long)
   LCou = Ligne
   TVL = CL.Lignes(LCou).Range.Value
   LabRevenus.Caption = Format(TVL(1, 33) + TVL(1, 71) + TVL(1, 113) * 0.7 + TVL(1, 118) * 0.7 + TVL(1, 123) * 0.7 + TVL(1, 128) * 0.7 + TVL(1, 133) * 0.7, "0 000.00 €")
   LabCharges.Caption = Format(TVL(1, 16) + TVL(1, 54) + TVL(1, 83) + TVL(1, 89) + TVL(1, 95) + TVL(1, 101) + TVL(1, 107), "0 000.00 €")
  
  
   CA.ValeursDepuis TVL
   End Sub
,
 

Dranreb

XLDnaute Barbatruc
Je conseille de faire une procédure indépendante pour ne pas être obligé de réécrire la même chose à plusieurs endroits. Une Private Sub GarnirLabel par exemple. Et c'est dans celle ci qu'il faut déclarer les variables locales. Pour l'appeler une simple instruction constituée de son nom suffit.
Dans la CL_Change d'ailleurs c'est un TVL vide qui est créé, alors il vaut mieux mettre tous les .Caption = ""
 
Dernière édition:

gbstyle

XLDnaute Impliqué
Alors il vaut mieux les calculer préalablement dans des variables locales Dim Revenus As Currency, Charges As Currency et les affecter ensuite aux Label, comme ça elles restent ensuite aussi disponibles pour la division. Pareil pour le LabEndettement: il me semble reprendre largement des parties calculées pour Revenu et peut être Charges d'ailleurs.
Ah, mais c'est de celui la que tu parles justement ?
if faut :
VB:
LabEndettement.Caption = Format(100 * Charges / Revenus, "0.00 %")

Oula je suis perdu, je dois noter ce que tu m'énumère ou bien déclarer une privatesub, il y a du avoir modif de réponse entre dans l'intervalle de nos échanges :/
 

Statistiques des forums

Discussions
311 721
Messages
2 081 928
Membres
101 842
dernier inscrit
seb0390