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 je crois comme demandé avec le bouton de mise à jour et d'enregistrement, je pense que c'est cela que tu attendais

Private Sub CBnValiderA_Click()

TVLA(1, 6) = Me.TxtALongueurcolisage.Text
TVLA(1, 7) = Me.TxtALargeurcolisage.Text
TVLA(1, 8) = Me.TxtAHauteurcolisage.Text
TVLA(1, 9) = Me.TxtACréele.Text
TVLA(1, 10) = Me.TxtANotes.Text
TVLA(1, 11) = Me.TxtADelaislivraison.Text
TVLA(1, 12) = Me.TxtAFraistransport.Text
TVLA(1, 13) = Me.TxtAFacturation.Text
TVLA(1, 14) = Me.CBxModedegestion.Text
TVLA(1, 15) = Me.TxtInfosColisage.Text
TVLA(1, 16) = Me.TxtAminicommande.Text
TVLA(1, 17) = CCur(Me.TxtAPrixUnitHT.Text)
TVLA(1, 18) = Me.TxtStockmini.Text
TVLA(1, 19) = Me.TxtDateSI.Text
TVLA(1, 20) = Me.TxtSI.Text

If LCouA = 0 Then
CLsA.ValeursVers TVLA
CLsA.Lignes.Add.Range.Value = TVLA
CLsA.Actualiser
Rem. Refaire un Dictionary ? Refiltrer quelque chose ? On verra !
Else
'''CLsA.Lignes(LCouA).Range.Value = TVLA 'pour rapatrier toute les valeur mais supprimes supprimes les formules des colonnes
CLsA.Lignes(LCouA).Range.Resize(, 20).Value = TVLA '20=nombre de colonnes contenant des constantes
End If

End Sub
 

Dranreb

XLDnaute Barbatruc
Pas tout à fait. Les dimensions de colisage devraient faire l'objet d'un = CDbl(Me.TxtALongueurcolisage.Text)
Sinon elle vont de retrouver enregistrées dans la cellule sous forme de texte, comme c'est d'ailleurs le cas, ce qui ne me paraît pas très normal.
Mais on avance quand même pas mal. Il ne reste plus que les petites procédures de sélection d'une ligne dans les ListBox.
Exemple pour l'article :
VB:
Private Sub LBxA_Click()
LCouA = TLA(LBxA.ListIndex + 1)
TVLA = CLsA.Lignes(LCouA).Range.Value
CLsA.ValeursDepuis TVLA
GarnirArticle
End Sub
 

gbstyle

XLDnaute Impliqué
oups en effet ci joint modif pour le 1er point , est cohérent j'ai également modifié pour les date
en attendant je vais avancer sur la procédure d'une selection de ligne dans la listbox article

TVLA(1, 6) = CDbl(Me.TxtALongueurcolisage.Text)
TVLA(1, 7) = CDbl(Me.TxtALargeurcolisage.Text)
TVLA(1, 8) = CDbl(Me.TxtAHauteurcolisage.Text)
TVLA(1, 9) = CDate(Me.TxtACréele.Text)
TVLA(1, 10) = Me.TxtANotes.Text
TVLA(1, 11) = Me.TxtADelaislivraison.Text
TVLA(1, 12) = Me.TxtAFraistransport.Text
TVLA(1, 13) = Me.TxtAFacturation.Text
TVLA(1, 14) = Me.CBxModedegestion.Text
TVLA(1, 15) = CDbl(Me.TxtInfosColisage.Text)
TVLA(1, 16) = Me.TxtAminicommande.Text
TVLA(1, 17) = CCur(Me.TxtAPrixUnitHT.Text)
TVLA(1, 18) = CDbl(Me.TxtStockmini.Text)
TVLA(1, 19) = CDate(Me.TxtDateSI.Text)
TVLA(1, 20) = Me.TxtSI.Text
 

Dranreb

XLDnaute Barbatruc
Pas tant que ça je crois, mais quelques informations doivent être prises de TVLA et TVLF
Par ailleurs il ne faudra pas oublier de reconstruire le DicF après un CLsF.Actualiser.
Il sert à repositionner la fiche fournisseur sur celui d'un article sélectionné.
 

gbstyle

XLDnaute Impliqué
Bjr Dranreb
A te lire je confirme que ca n'a pas l'air très simple qu'entend tu par une DicF.
J'attend ton retour pour commencer à modifier car je le sent pas trop :/

il faudra aussi qu'on se laisse la possibilité de créer de nouveaux fournisseur et articles, car pour l'instant on un peu verrouillé cette possibilité
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Voir déclaration globale Private DicF As Dictionary
Et recherche où cette variable est calculée et utilisée dans le code.
Rien n'est verrouillé coté programmation. Si on tape dans les ComboBox des choses inexistantes ça dirige automatiquement le fonctionnement du truc sur les ajouts. Des CLsA_Change et CLsF_Change veillent-elles bien à remettre à 0 le LCouA ou le LCouF et à préparer les fiches vierges quand leur paramètre NbrLgn vaut 0 ?
 
Dernière édition:

gbstyle

XLDnaute Impliqué
Elle utiliser à 2 endroits :

Dans l userforminitialize
Set CLsF = New ComboBoxLiées
CLsF.Plage [TblFournisseur]
CLsF.Add Me.CBxRefFournisseur, 1
CLsF.Add Me.CBxFournisseur, 2
CLsF.Actualiser
Set DicF = DicoSujet(CLsF.Item(CBxFournisseur).SujetBdD)
If Not Me.ActiveControl Is FrmF Then CLsF.Stopper

Private Sub AppelF(ByVal NomFou As String)
If Not DicF.Exists(NomFou) Then Exit Sub
LCouF = DicF(NomFou)(1)
TVLF = CLsF.Lignes(LCouF).Range.Value
CLsF.ValeursDepuis TVLF: GarnirFournisseur
End Sub

Et je ne crois pas qu'on est encore travaillé sur les change :/ ca s'annonce corsé

Je te joint un petite maj du fichier :
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Une observation: Si tu tiens absolument à mettre la fonction ValeurTBx dans un module standard au lieu de la mettre dans l'UserForm, il ne faut pas l'y mettre Private mais Public, sinon elle est n'est pas connue de l'UserForm et y est donc inutilisable.
Tu n'as pas encore fait les CLsx_Change ??? depuis le temps que j'en parle !
Inspire toi de celle du CBxLiéesCalu.xlsm
Conseil: avant de tenter une exécution fait d'abord un coup menu Débogage, Compiler VBAProject.
Là ça met en évidence un nom de contrôle qui n'existe pas.
 

gbstyle

XLDnaute Impliqué
N'oublie pas Dranreb que la ou tu met 2mn a réaliser une intervention je met moi 3 à 4h :/ ca explique fortement mon temp de retard
je vais essayer de m'inspirer du fichier à mon avis on en reparle dans 2 jours lol
As tu regarder un petit peu quand même l'état d'avancement :
Ca serait bien que tu m'aide a faire une check list des nombreaux point encore à effectuer :/ car je suis un peu perdu
 

Statistiques des forums

Discussions
312 287
Messages
2 086 823
Membres
103 395
dernier inscrit
Laurent34