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é
ci - joint le code d'origine
VB:
Private Sub CBnValiderF_Click()
TVLF(1, 3) = Me.CBxGroupe.Text
TVLF(1, 4) = Me.TBxAdresse.Text
TVLF(1, 5) = Me.TBxCP.Text
TVLF(1, 6) = Me.TBxVille.Text
TVLF(1, 7) = Me.TBxPays.Text
TVLF(1, 8) = Me.TBxNom.Text
TVLF(1, 9) = Me.TBxPrénom.Text
TVLF(1, 10) = Me.TBxTel.Text
TVLF(1, 11) = Me.TBxFax.Text
TVLF(1, 12) = Me.TBxPortable.Text
TVLF(1, 13) = Me.TBxEmail.Text
TVLF(1, 14) = Me.TBxSiteinternet.Text
TVLF(1, 15) = ValeurTBx(Me.TBxCréele, vbDate)   ' =format américain
TVLF(1, 16) = Me.CBxDelaislivraison.Text
TVLF(1, 17) = Me.CBxFraistransport.Text
TVLF(1, 18) = ValeurTBx(Me.TBxMontant, vbCurrency)
TVLF(1, 19) = Me.CBxFacturation.Text
TVLF(1, 20) = Me.TBxNote.Text
If LCouF = 0 Then
    CLsF.ValeursVers TVLF
    CLsF.Lignes.Add.Range.Value = TVLF
    CLsF.Actualiser
    Me.LabNbfournisseur = CLsF.Lignes.Count 'comptage nombre de fournisseur
    Set DicF = DicoSujet(CLsF.Item(CBxFournisseur).SujetBdD)
Else
    CLsF.Lignes(LCouF).Range.Value = TVLF
    End If

End Sub
Cellule du tableau de destination en format date,
 

Dranreb

XLDnaute Barbatruc
Dans TVLF(1, 15) la valeur est certainement correcte.
mais pour une ancienne version d'Excel il faudrait mettre :
VB:
CLsF.Lignes(LCouF).Range.Value2 = TVLF
Mais Value2 ne change pas le format de cellule de telle sorte qu'elle restitue une date.
 

gbstyle

XLDnaute Impliqué
Alors ce qui est super ambigue c'est que sur le meme userform avec le meme code, j'ai les bonne date qui s'affiche pour la version commande
VB:
Private Sub CBnValiderA_Click()

TVLA(1, 6) = ValeurTBx(Me.TBxLongueurcolisage, vbDouble)
TVLA(1, 7) = ValeurTBx(Me.TBxLargeurcolisage, vbDouble)
TVLA(1, 8) = ValeurTBx(Me.TBxHauteurcolisage, vbDouble)
TVLA(1, 9) = ValeurTBx(Me.TBxACréele, vbDate)
TVLA(1, 10) = ValeurTBx(Me.TBxANotes)
TVLA(1, 11) = ValeurTBx(Me.TBxADelaislivraison)
TVLA(1, 12) = ValeurTBx(Me.TBxAFraistransport)
TVLA(1, 13) = ValeurTBx(Me.TBxAFacturation)
TVLA(1, 14) = Me.CBxModedegestion.Text
TVLA(1, 15) = ValeurTBx(Me.TBxInfosColisage, vbDouble)
TVLA(1, 16) = ValeurTBx(Me.TBxMinicommande, vbDouble)
TVLA(1, 17) = ValeurTBx(Me.TBxPrixUnitHT, vbCurrency)
TVLA(1, 18) = ValeurTBx(Me.TBxStockmini, vbDouble)
TVLA(1, 19) = ValeurTBx(Me.TBxDateSI, vbDate)
TVLA(1, 20) = ValeurTBx(Me.TBxSI, vbDouble)
TVLA(1, 21) = ValeurTBx(Me.TBxPrixUnitHTSI, vbCurrency)

If LCouA = 0 Then
    CLsA.ValeursVers TVLA
    CLsA.Lignes.Add.Range.Resize(, 21).Value = TVLA
    CLsA.Actualiser
    Me.LabNbArticle = CLsA.Lignes.Count
    Set DicA = DicoSujet(CLsA.Item(CBxRefArticle).SujetBdD)
Else
    'CLsA.Lignes(LCouA).Range.Value = TVLA 'pour rapatrier toute les valeur mais supprimes supprimes les formules des colonnes
    CLsA.Lignes(LCouA).Range.Resize(, 21).Value = TVLA '21=nombre de colonnes contenant des constantes
    End If

End Sub

Private Sub CBnValiderF_Click()
TVLF(1, 3) = Me.CBxGroupe.Text
TVLF(1, 4) = Me.TBxAdresse.Text
TVLF(1, 5) = Me.TBxCP.Text
TVLF(1, 6) = Me.TBxVille.Text
TVLF(1, 7) = Me.TBxPays.Text
TVLF(1, 8) = Me.TBxNom.Text
TVLF(1, 9) = Me.TBxPrénom.Text
TVLF(1, 10) = Me.TBxTel.Text
TVLF(1, 11) = Me.TBxFax.Text
TVLF(1, 12) = Me.TBxPortable.Text
TVLF(1, 13) = Me.TBxEmail.Text
TVLF(1, 14) = Me.TBxSiteinternet.Text
TVLF(1, 15) = ValeurTBx(Me.TBxCréele, vbDate)
TVLF(1, 16) = Me.CBxDelaislivraison.Text
TVLF(1, 17) = Me.CBxFraistransport.Text
TVLF(1, 18) = ValeurTBx(Me.TBxMontant, vbCurrency)
TVLF(1, 19) = Me.CBxFacturation.Text
TVLF(1, 20) = Me.TBxNote.Text
If LCouF = 0 Then
    CLsF.ValeursVers TVLF
    CLsF.Lignes.Add.Range.Value2 = TVLF ' . value2 => ancienne version d'excel ne changeant par le format
    CLsF.Actualiser
    Me.LabNbfournisseur = CLsF.Lignes.Count 'comptage nombre de fournisseur
    Set DicF = DicoSujet(CLsF.Item(CBxFournisseur).SujetBdD)
Else
    CLsF.Lignes(LCouF).Range.Value = TVLF
    End If

End Sub

Private Sub CBnValiderC_Click()
If LCouC = 0 Then ReDim TVLC(1 To 1, 1 To 11)

TVLC(1, 4) = TVLF(1, 2)
TVLC(1, 2) = ValeurTBx(Me.TBxCmdDate, vbDate) => bon format de date qui s'affiche avec une case origine dans le tableau en format standard :/
TVLC(1, 3) = Me.TBxCmdEnregistrepar.Text
TVLC(1, 5) = Me.CBxDelaislivraison.Text
TVLC(1, 6) = ValeurTBx(Me.TBxMontant, vbCurrency)
TVLC(1, 7) = ValeurTBx(Me.TBxCmddatelivraisonestime, vbDate) => bon format de date qui s'affiche avec une case origine dans le tableau en format standard :/
TVLC(1, 8) = Me.CBxRefArticle.Text
TVLC(1, 9) = Me.CBxDsgnArticle.Text
TVLC(1, 10) = ValeurTBx(Me.TBxCmdQtecmd, vbDouble)
TVLC(1, 11) = ValeurTBx(Me.TBxPrixUnitHT, vbCurrency)

If LCouC = 0 Then
    CLsC.ValeursVers TVLC
    CLsC.Lignes.Add.Range.Resize(, 11).Value = TVLC ' a mettre en commentaire si soucis et passer les 5 lignes qui suivent en activation
    'Dim LRs As ListRows, LRw As ListRow, Rng As Range  commentaire à mettre pour tester si dysfonctionnement commande
    'Set LRs = CLsC.Lignes
    'Set LRw = LRs.Add
    'Set Rng = LRw.Range
    'Rng.Resize(, 11).Value = TVLC
    CLsC.Actualiser
    Rem. Refaire un Dictionary ? Refiltrer quelque chose ? On verra !
Else
   
    CLsC.Lignes(LCouC).Range.Resize(, 11).Value = TVLC '11=nombre de colonnes contenant des constantes
   
    End If
End Sub
J'ai bien essayé de mettre un format standard dans les tableau Fournisseur et article pour les colonnes dates mais ca ne fonctionne pas
 

gbstyle

XLDnaute Impliqué
J'ai a prioris trouver le problème juste pour infos je te joint ce que j'ai fait.
j'ai remis CLsF.Lignes(LCouF).Range.Value = TVLF
J'ai sélectionner tout la colonne de mon tableau et mis un format de valeur en standard pour toute les colonnes contenant des dates, et chaque en enregistrement, il me met bien maintenant un format date dans le sens souhaité.
T'expliquez pourquoi je ne sais pas en tout cas cela à fonctionner pour 2 essais consécutif :/
 

ChTi160

XLDnaute Barbatruc
Bonjour gbstyle
Bonjour Dranreb , Le Forum
j'utilise parfois pour contourner ce problème de date .
le Format Long des dates ce qui a pour effet de renvoyer la bonne Date dans une cellule au Format Date "dd/mm/yyyy" par exemple.
Je ne sais pas si c'est adaptable a cette procédure.
en espérant avoir pu faire avancer le Chimilimblick Lol
Bonne fin de Journée
Amicalement
jean marie
 

gbstyle

XLDnaute Impliqué
Bonjour Chti160 et Dranreb, alors pour vous faire un petit retour de mon projet, dans l'ensemble tout fonctionne a merveille j'ai réussis à résoudre le problème de format de date cependant j'ai décelé un petit soucis que je n'arrive pas à résoudre depuis un petit moment, je reviens donc vers toi dranreb étant le plus à meme de m'aider
- mon petit soucis et je pense peut être très simple pour toi mais je dois t'avouer que je m'arrache les cheveux.
je te joint 2 images pour comprendre mon problème : j'ai un article qui n'apparait pas dans l'affichage de ma LISTBOX, l'article qui commence par une lettre A000075 serais tu pourquoi ?
upload_2018-9-21_15-33-28.png

upload_2018-9-21_15-34-14.png
 

gbstyle

XLDnaute Impliqué
Ecoute j'ai supprimé l'article je l'ai recrée, et j'ai mis ma colonne article de la base article en format texte il était en standard
a prioris c'est tout bon, ca m'est venue comme ca désolé de te déranger pour si peu :/
Et pourtant ca faisait un bon moment que je cherchais si il y avait pas un soucis suite à nos dernière modif :/
 

gbstyle

XLDnaute Impliqué
En effet et après réflexion je me rend compte que lorsque j'aurai des sous famille définis je n'aurai plus de liste article global dans ma list box que celle rattaché à mon fournisseur.
Je viens donc de rajouter une macro me permettant de copier la feuille base article sur une feuille sus nommé dans un dossier exportation afin de visualiser par un filtre l'ensemble de mes articles épuisé sans forcement être lié au fournisseur.
C'est un gros détail auquel je n'avais pas fait attention :/
Merci encore dranreb, je reviendrai surement vers toi j'ai rencontré un petit soucis avec mon formulaire commande entrée/sortie mais avant de t'embêter je vais approfondir mes modifs et si jamais je n'arrive pas à les régler je reviendrais vers toi.
 

gbstyle

XLDnaute Impliqué
Bonjour Dranreb comment vas tu ? Alors pour infos la base fonctionne bien j'en suis satisfait mais j'ai quelque amélioration a peauffiner :
Notament je m'explique j'aimera savoir
- si tu as un code pour mettre à jour des feuilles excel sans etre obligé de cliquer dessus pour la mise à jour je pense notament à la feuille suivis facturation qu'on avait fait ensemble.
- si tu as un code pour actualiser des TCD présent sur 2 feuilles différentes, en effet afin d'améliorer mon suivis pour le calcul d'un CU moyen pondéré j'ai besoin du TCD que j'utilise (il fait la synthèse des quantité entrée et de leur total monétaire)

Je te remercie par avance
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Je ne travaille pas avec les TCD et je les connais donc très mal. Ma fonction Gigogne permet de faire la même chose sans contrainte de présentation.
Il suffit de mettre dans une Worksheet_Activate le code qui construit le rapport à l'aide de cette fonction.
 

gbstyle

XLDnaute Impliqué
Alors il serait possible sans passer par un TCD :
- Que sur ma Feuille Base article je sois capable de comptabiliser toute les entrée au cours d'une même période ainsi que leur coûts.
Actuellement je comptabiliser mes entrée avec une fonction somme si
en faite mon Tcd ne sert qu'a avoir la somme des entrées