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
 

gbstyle

XLDnaute Impliqué
bonsoir
pour la date je me suis accomodé bon j'ai un affichage 01/10/16 dans mon userform j'aurai préféré Octob 16 mais c'est pas grave.
Par contre pour le téléphonne j'ai bien mis un affichage dans mon tableau en téléphonne c'est ok
- cependant lors de l'ouverture de mon usf et que je selectionne ma fiche le numéro de tél apparait comme ceci dans ma TBx : 611111111 manque le zéro et les espace :/
j'ai fait cette modif dans ma commande garnir
TVLF(1, 19) = ValeurTBx(Me.TBxTel, vbDouble)
 

Dranreb

XLDnaute Barbatruc
À la lecture envoie le numéro de téléphone par Me.TBxTel.Text = Format(TVLF(1, 10), "00 00 00 00 00"). En principe ça ne devrait pas géner la reconversion en nombre dans l'autre sens.
Pareil avec Me.TBxDateContrat.Text = Format(TVLF(1, 11),"mmmm yy")
 

gbstyle

XLDnaute Impliqué
salut dranreb, donc c'est ok j'avais presque réussis pour le tél :/
Dis par contre pour la lecture du forma date c'est ok par contre mon petit soucis c'est quand je saisie
- 10/16 je voudrais Oct 16 et le résultat m'affiche bien évidement 16/10/2020 donc Oct 20 dans ma TXb :/ as tu une astuce?
 

Dranreb

XLDnaute Barbatruc
Pour qu'il puisse même assumer une date du 1er d'un mois spécifié en lettres essayer :
VB:
Public Function ValeurTBx(ByVal TBx As MSForms.TextBox, _
    Optional ByVal TypeDon As VbVarType = vbDouble)
   On Error Resume Next
   If TBx.Text = "" Then
       ValeurTBx = Empty
   ElseIf TypeDon = vbDate Then
       If TBx.Text Like "[a,d,f,j,m,s,o,n]*" Then
           ValeurTBx = CDate("1 " & TBx.Text)
       Else: ValeurTBx = CDate(TBx.Text): End If
   ElseIf TypeDon = vbString Or Not IsNumeric(TBx.Text) Then
       ValeurTBx = TBx.Text
   ElseIf TypeDon = vbCurrency Then
       ValeurTBx = CCur(TBx.Text)
   Else
       ValeurTBx = CDbl(TBx.Text)
       End If
   End Function
 

gbstyle

XLDnaute Impliqué
je le met en lieu et place de cette fonction
VB:
Public Function ValeurTBx(ByVal TBx As MSForms.TextBox, _
    Optional ByVal TypeDon As VbVarType = vbDouble)
On Error Resume Next
If TBx.Text = "" Then
    ValeurTBx = Empty
ElseIf TypeDon = vbDate Then
    ValeurTBx = CDate(TBx.Text)
ElseIf TypeDon = vbString Or Not IsNumeric(TBx.Text) Then
    ValeurTBx = TBx.Text
ElseIf TypeDon = vbCurrency Then
    ValeurTBx = CCur(TBx.Text)
Else
    ValeurTBx = CDbl(TBx.Text)
    End If
End Function

C'est ptet pas necessaire ?
 

gbstyle

XLDnaute Impliqué
Bonsoir Dranreb juste un petit soucis
j'ai une ligne de saisie qui empeche ma base de fonctionner,

TVLF(1, 96) = CDate("1/" & Me.TBxCDatreal4.Text)

En faite ce qu'il se passe c'est que le débogage se met en route quand la cellule et vierge, il possible que parfois la celle je la renseigne avec une date comme il est possible que je la laisse vierge

Après un essais quand je rentre une information manuel dans le tableau il l'affiche bien mais si la cellule et vierge le débogage se met en route est ce normal ?
 

gbstyle

XLDnaute Impliqué
VB:
TVLF(1, 81) = CDate("1/" & Me.TBxCDatreal1.Text)
TVLF(1, 82) = CDate("1/" & Me.TBxCDatfin1.Text)
TVLF(1, 83) = ValeurTBx(Me.TBxCRest1, vbCurrency)
TVLF(1, 84) = Me.TBxCNom2.Text
TVLF(1, 85) = Me.CBxCNat2.Text
TVLF(1, 86) = CDate("1/" & Me.TBxCDatreal2.Text)
TVLF(1, 87) = CDate("1/" & Me.TBxCDatfin2.Text)
TVLF(1, 88) = ValeurTBx(Me.TBxCRest2, vbCurrency)
TVLF(1, 89) = Me.TBxCNom3.Text
TVLF(1, 90) = Me.CBxCNat3.Text
TVLF(1, 91) = CDate("1/" & Me.TBxCDatreal3.Text)
TVLF(1, 92) = CDate("1/" & Me.TBxCDatfin3.Text)
TVLF(1, 93) = ValeurTBx(Me.TBxCRest3, vbCurrency)
TVLF(1, 94) = Me.TBxCNom4.Text
TVLF(1, 95) = Me.CBxCNat4.Text
TVLF(1, 96) = CDate("1/" & Me.TBxCDatreal4.Text)
TVLF(1, 97) = CDate("1/" & Me.TBxCDatfin4.Text)
TVLF(1, 98) = ValeurTBx(Me.TBxCRest4, vbCurrency)
TVLF(1, 99) = Me.TBxCNom5.Text
TVLF(1, 100) = Me.CBxCNat5.Text
TVLF(1, 101) = CDate("1/" & Me.TBxCDatreal5.Text)
TVLF(1, 102) = CDate("1/" & Me.TBxCDatfin5.Text)
TVLF(1, 103) = ValeurTBx(Me.TBxCRest5, vbCurrency)
TVLF(1, 104) = ValeurTBx(Me.TBxCPens, vbCurrency)
 

Statistiques des forums

Discussions
312 316
Messages
2 087 178
Membres
103 491
dernier inscrit
bilg1