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
Oui ça avance.
Des CLsx.CouleurSympa avant les CLsx.Actualiser dans la Sub UserForm_Initialize pourraient apporter un petit + en montrant quels sont les ComboBox actives et si elles sont renseignées manuellement, par une valeur existante ou non dans leurs listes.
 

Dranreb

XLDnaute Barbatruc
La CLsA_Change je la vois comme ça pour l'instant :
VB:
Private Sub CLsA_Change(ByVal Complet As Boolean, ByVal NbrLgn As Long)
If NbrLgn = 1 Then CBnValiderA.Caption = "Modifier": Exit Sub
If NbrLgn = 0 Then LBxA.Clear
LCouA = 0
ReDim TVLA(1 To 1, 1 To 27)
GarnirArticle
CBnValiderA.Caption = "Ajouter"
End Sub
 

gbstyle

XLDnaute Impliqué
J'ai une erreur d'execution 424 objet requis
Par contre j'ai redimenssionné le tableau puisque de 21 à 27 ce sont des formules a moins que ce ne sois pas necessaire
Redim TVLA (1To1,1To20)

Pour le fournisseur a prioris le fichier s'ouvre
Private Sub CLsF_Change(ByVal Complet As Boolean, ByVal NbrLgn As Long)
If NbrLgn = 1 Then CBnValiderF.Caption = "Modifier": Exit Sub
If NbrLgn = 0 Then LBxA.Clear
LCouF = 0
ReDim TVLF(1 To 1, 1 To 19)
GarnirFournisseur
CBnValiderF.Caption = "Ajouter"
End Sub
 
Dernière édition:

gbstyle

XLDnaute Impliqué
Alors pour le fournisseur je ne peux crer qu'une fiche vierge vu que je ne peux saisir les infos :
Réf fournisseur et Nom entreprise
Pour l'article et bien ca fonctionne a partir du moment que je clic pas sur le frame articles qui me réinitialise toute les valeurs sauf CBx lié à " " vide
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Ce n'est pas nécessaire de limiter les colonnes mais tu as oublié d'intercaler le .Resize(, 20) aussi derrière le CLsA.Lignes.Add.Range
J'avais déjà dit dans un de mes postes que c'était une source d’emmerdes de mettre à True les propriétés MatchRequired des ComboBox prises en charge par un ComboBoxLiées. En cas de nécessité celui ci a un propriété Boolean CorrespRequise qui peut lui demander de les considérer toutes comme si elle l'avaient mais sans récolter les réactions épidermiques des ComboBox quand on essaie de leur attribuer une valeur qui n'est pas dans leurs listes, ne serait-ce qu'un texte vide. Mais ça ne s'applique pas ici.
 

gbstyle

XLDnaute Impliqué
C'est une erreur que ce sois sur True lors de la création de formulaire j'ai du faire un copier coller d'une ancienne Combo en true
donc la création des ficher fournisseur et article se fait bien j'ai juste le soucis de la liaison entre les 2
 

Dranreb

XLDnaute Barbatruc
Pour la liaison, je ne sais pas, la AppelF CBxFournisseur avait été enlevée à la fin de la GarnirArticle.
Est-ce qu'elle plantait ? C'est bien possible. Il manque peut être des instructions au début :
VB:
Private Sub AppelF(ByVal NomFou As String)
If NomFou = "" Then Exit Sub
If DicF Is Nothing Then Exit Sub
If Not DicF.Exists(NomFou) Then Exit Sub
LCouF = DicF(NomFou)(1)
TVLF = CLsF.Lignes(LCouF).Range.Value
CLsF.ValeursDepuis TVLF: GarnirFournisseur
End Sub
Par ailleurs dans CBnEffacerA le test sur la propriété Assumé du ComboBoxMmbr n'est peut être pas bon. Cestte propriété peut être chamboulée par les activations de Frame. Peut être vaudrait il mieux remettre le fournisseur systématiquement.
 

gbstyle

XLDnaute Impliqué
JE ne me souviens plus pour la liaison en toute honneteté
Ca veut donc dire qu'il faut que j'appel la procédure AppelF dans

rivate Sub GarnirArticle()
Me.TxtALongueurcolisage.Text = TVLA(1, 6)
Me.TxtALargeurcolisage.Text = TVLA(1, 7)
Me.TxtAHauteurcolisage.Text = TVLA(1, 8)
Me.TxtACréele.Text = TVLA(1, 9)
Me.TxtANotes.Text = TVLA(1, 10)
Me.TxtADelaislivraison.Text = TVLA(1, 11)
Me.TxtAFraistransport.Text = TVLA(1, 12)
Me.TxtAFacturation.Text = TVLA(1, 13)
Me.CBxModedegestion.Text = TVLA(1, 14)
Me.TxtInfosColisage.Text = TVLA(1, 15)
Me.TxtAminicommande.Text = TVLA(1, 16)
Me.TxtAPrixUnitHT.Text = TVLA(1, 17)
Me.TxtStockmini.Text = TVLA(1, 18)
Me.TxtDateSI.Text = TVLA(1, 19)
Me.TxtSI.Text = TVLA(1, 20)
AppelF TVLA(1, 5)
 
Dernière édition:

gbstyle

XLDnaute Impliqué
j'ai un soucis depuis l'insertion de la procédure d'appelF
il me ramène en débogage sur :

Private Sub CBnValiderA_Click()

TVLA(1, 6) = CDbl(Me.TxtALongueurcolisage.Text)
TVLA(1, 7) = CDbl(Me.TxtALargeurcolisage.Text)
TVLA(1, 8) = CDbl(Me.TxtAHauteurcolisage.Text)
etc
****************************************
La procédure CbnEffacerA ne fonctionnait pas, c'est pour cela que l'on avais mis
CLsA.nettoyer sur "CbnRazA" si je me trompe
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Les deux choses ne me paraissent pas liées. S'il y a une incompatibilité de type sur une de ces instructions il y de grandes chances que ce soit parce qu'une TextBox n'est pas renseignée. La Function ValeurTBx au moins le détecte et renvoie Empty dans ce cas.
 

gbstyle

XLDnaute Impliqué
Bonjour Dranreb, alors voici petite synthèse
J'arrive bien à créer un arcticle en liaison avec un fournisseur c'est réglé par contre je suis obligatoirement obligé de remplir je crois tout les champ articles, mais par contre il me manque les infos en liaison avec la fiche fournisseur
je te joint une copie du fichier pour utilisation et que tu vois ou nous en sommes

Par contre afin de maitriser l'utilisation, je dois dans un premier temp créer le fournisseur puis l'article je pense

Je crois par contre qu'une fois validé je ne peux pas modifier l'article, par exemple si je souhaite modifier sa famille il me créer un autre article en remplissant a nouveaux tout les champs

Je ne suis ptet pas clair mais si tu l'essaye avec plusieur configuration tu t'en rendra compte (exemple si tu essaye de modifier l'art29 et une de ces combobox lié
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Quand le commence par faire menu Débogage, compliler VBAProject pour voir s'il n'y a pas déjà un problème à ce niveau, je retombe sur la même erreur que la dernière fois:
upload_2018-3-7_10-54-31.png

GarnirCommande n'est pas encore utilisé, heureusement car il emploie toujours encore TLC au lieu de TVLC comme la dernière fois.
À part ça je ne sais pas ce qui manque et où exactement.
Dans la CBnValiderF_Click tu peux remplacer le commentaire " Rem. Refaire un Dictionary ? Refiltrer quelque chose ? On verra !" par l'instruction:
VB:
    Set DicF = DicoSujet(CLsF.Item(CBxFournisseur).SujetBdD)
Les messages à la fin sont tout aussi inutiles que les messages de confirmation.
Normalement si tout est bien programmé, ça doit se voir que c'est fait: La fiche devient modifiable et la ligne de commande ajoutée apparait dans la liste.
 
Dernière édition:

gbstyle

XLDnaute Impliqué
En effet c'était un oublis, j'ai mis à jour comme tu m'as demandé pour le menu débogage, j'ai aussi supprimer tout les anciens code du fichier d'origine

Pour la CbnvaliderF c'est ok aussi

Par contre comme je te disais, je n'arrive pas à modifier la fiche de l'art29
j'aurai souhaité modifié sa famille et ca ne fonctionne pas. je ne sais pas si tu as essayé de ton coté.

Sinon j'ai avancé sur l'affichage au niveaux commande, par contre je n'arrive pas à actualiser la listboxcommande après une modification de quantité par exemple, bien pris en comte dans le tableau mais ne ressort dans listbox en instantané


Private Sub LBxC_Click()
LCouC = TLC(LBxC.ListIndex + 1)
TVLC = CLsC.Lignes(LCouC).Range.Value
CLsC.ValeursDepuis TVLC
GarnirCommande
End Sub

Private Sub GarnirCommande()
Me.TXtCmdDate.Text = TVLC(1, 2)
Me.TXtCmdEnregistrepar.Text = TVLC(1, 3)
Me.CBxDelaislivraison.Text = TVLC(1, 5)
Me.CBxFraistransport.Text = TVLC(1, 6)
Me.TXtCmddatelivraisonestime.Text = TVLC(1, 7)
Me.CBxRefArticle.Text = TVLC(1, 8)
Me.CBxDsgnArticle.Text = TVLC(1, 9)
Me.TXtCmdQtecmd.Text = TVLC(1, 10)
Me.TxtAPrixUnitHT.Text = TVLC(1, 11)
End Sub

Private Sub CLsC_BingoUn(ByVal Ligne As Long)
LCouC = Ligne
TVLC = CLsC.Lignes(LCouC).Range.Value
GarnirCommande
End Sub

Private Sub CLsC_Résultat(Lignes() As Long)
Dim Tdon(), TLBx(), Ldon As Long, LLBx As Long, C As Long
TLC = Lignes
Tdon = CLsC.PlgTablo.Value
ReDim TLBx(1 To UBound(TLC), 1 To 6)
For LLBx = 1 To UBound(TLC)
Ldon = TLC(LLBx)
'For C = 1 To 6: TLBx(LLBx, C) = Tdon(Ldon, C): Next C, LLBx
For C = 1 To 6: TLBx(LLBx, C) = Tdon(Ldon, Choose(C, 1, 8, 9, 10, 11, 12)): Next C, LLBx 'choix des colonne à ressortir dans la listbox
LBxC.List = TLBx
End Sub
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Non, on ne peut pas changer la famille. Il faut créer un autre Article et supprimer celui avec la mauvaise famille.
Je pense que ça n'arrivera qu’exceptionnellement. Le mieux dans ce cas c'est de corriger dans la feuille.

Il va sans doute falloir 'sortir' de la CLsA_Résultat le garnissage de la LBxA et le mettre dans une procédure séparée pour pouvoir aussi l'appeler après une modification de l'article.
 

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16