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é
non a moin que je ne respecte pas la procédure mais a prioris non
j'ai essayé sur les 2 fichier le dernier que tu as envoyé avec les frame de couleur active et celui ou tu avais désactiver les frame de couleur en y ajoutant le code d'hier soir

sur celui ou les frame sont désactivé, je peux ajouter un article a une commande existente par contre je n'est pas la listcommande qui s'actualise il faut que je quitte l'userform et le réinitialiser pour qu'elle apparaisse

Je pense qu'il faut qu'on voit sur quel fichier tu penses qu'il faut qu'on reparte
 

Dranreb

XLDnaute Barbatruc
Je pense qu'on va laisser tomber l'essai avec les CLsx.Filtrer et revenir à la 1ère solution.
Deux raisons à cela :
1) — Le fournisseur n'est pas stable quand on cherche à créer un article
2) — Tu veux pouvoir attribuer une famille ou une sous famille existant dans la base pour la création d'un article. Pour pouvoir accéder à toutes il faut que le CLsA soit stoppé.
Pour parer au plus pressé pour l'ajout d'une ligne de commande, on pourrait mettre comme 1ère instruction de la CBnValiderC_Click :
VB:
If LCouC = 0 Then ReDim TVLC(1 To 1, 1 To 11)
 

Dranreb

XLDnaute Barbatruc
Important:
On ne peut pas utiliser de Private Sub CLsC_BingoUn(ByVal Ligne As Long)
Car celle ci ne réagit que si une seule ligne correspond aux choix. Or dans le cas général il y en aura plusieurs.
Il faut le faire dans la Private Sub CLsC_Résultat(Lignes() As Long)
par exemple à la fin :
VB:
LBxC.List = TLBx
TVLC = CLsC.Lignes(Lignes(1)).Range.Value
GarnirCommande Tout:=False
End Sub
Le Tout:=False c'est seulmement si la sub GarnirCommande est modifiée comme suit :
VB:
Private Sub GarnirCommande(Optional ByVal Tout As Boolean = True)
Je pense qu'il ne faut jamais garnir les infos de la fiche article. Utiliser plutôt AppelA.
 
Dernière édition:

gbstyle

XLDnaute Impliqué
Bonjour Dranreb alors j'ai essayé de mettre a jour tout ce que tu m'as demandé, la clsc résultat pour la commande, et toute tes dernière modif je peux en effet ajouter une nouvelle commande et en modifier une
Je te joint a nouveaux le fichier pour que tu puisse balayer un peu toute les dernière modif et surtout vérifier que je travail bien sur le fichier attendus, j'ai mis en apostrophe la private subfiltrer aux cas ou y'aurai besoin

J'aimerai que tu me dis ton ressentis dans l'utilisation ce que tu penses du résultat.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
En tout cas la CLsC_BingoUn ne sert à rien. Elle ne sera pas exécutée à la sélection d'une commande comprenant plusieurs lignes. Au départ la GarnirCommande ne devait garnir que d'éventuels contrôles relatifs à toute la commande, c'est à dire pour une information répétée sur toutes ses lignes. Elle ne doit pas s'occuper des contrôles relatifs à une seule ligne de commande. C'est la LBxC_Click qui s'en occupe. Cependant elle appelle actuellement GarnirCommande. C'est peut être une erreur.
Elle devrait faire à la place
VB:
TBxCmdQtecmd.Text = TVLC(1, 10)
AppelA TVLC(1, 8)
Mais l'idée que j'avais eu hier c'était de le faire faire par GarnirCommande quand même à la fin, mais seulement derrière une instruction If Tout Then
Ne pas s'occuper des CBxRefArticle, CBxDsgnArticle et TBxPrixUnitHT. En effet AppelA appelle GarnirArticle qui garnit tout ça entre autre.
 

gbstyle

XLDnaute Impliqué
Alors si je récapitle :
j'ai supprimé la ClsCbingo
j'ai modifié la lbxc comme ca :
Private Sub LBxC_Click()
LCouC = TLC(LBxC.ListIndex + 1)
CBnValiderC.Caption = "Modifier"
TVLC = CLsC.Lignes(LCouC).Range.Value
CLsC.ValeursDepuis TVLC
TBxCmdQtecmd.Text = TVLC(1, 10)
AppelA TVLC(1, 8)
Par contre je n'ai pas saisie l'instruction if a mettre avant l'appel à garnircommande :/

Tu me confirme bien que je travaille bien sur le bon fichier par contre
 

Dranreb

XLDnaute Barbatruc
Oui. Bon on peut supprimer le paramètre Optional ByVal Tout As Boolean de la GarnirCommande si elle ne s'occupe plus que des contrôles liés à toute la commande et que la LBxC_Click ne s'occupe plus que des infos spécifiques à la ligne.
 

gbstyle

XLDnaute Impliqué
ci joint mise a jour afin de valider si mes modifs sont bien effectués, par contre suite au modif effectué pour la partie commande vu qu'on ne rappel pas les infos d'une commande l'ajout d'un article sur une commande existante ne fonctionne plus.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Projet VBA fusillé à l'ouverture du classeur joint.
En réessayant ça a marché. Tu devrais rompre la liaison avec :
upload_2018-3-14_15-20-41.png

Elle m'emmerde à chaque fois.

Dans CLsC_Résultat, il faut activer les deux dernières instructions puisque CLsC_BingoUn ne garantissait pas que ça se fasse.
TVLC = CLsC.Lignes(Lignes(1)).Range.Value
GarnirCommande

il y a toujours des intructions en trop dans la GarnirCommande, au moins toutes celle à la fin y compris AppelA RTVLC(1, 8)
Encore une fois c'est LBxC_Click qui fait tout ça. On n'est pas sensé être positionné sur une ligne de commande particulière lors du GarnirCommande. Simplement on lui transmet la 1ère de ces lignes dans TVLC, sans même la noter comme ligne courante LCouC, seulement pour qu'il puisse y récupérer et en garnir les TextBox relatives à l'intégralité de la commande.
 
Dernière édition:

gbstyle

XLDnaute Impliqué
j'avais désactivé la garnir commande dans la clsc résultat car elle plante le fichier
d'ailleur en réactivant les 2 instructions une erreur se produit lors de la selection d'une commande
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
TVLC = CLsC.Lignes(Lignes(1)).Range.Value
GarnirCommande Tout:=False
End Sub


Sinon j'ai désactiver ces instruction dans garnircommande :
Private Sub GarnirCommande()

Me.TBxCmdDate.Text = TVLC(1, 2)
Me.TBxCmdEnregistrepar.Text = TVLC(1, 3)
'Me.CBxDelaislivraison.Text = TVLC(1, 5)instruction désactivé
'Me.CBxFraistransport.Text = TVLC(1, 6)instruction désactivé
'Me.TBxCmddatelivraisonestime.Text = TVLC(1, 7)instruction désactivé
'Me.CBxRefArticle.Text = TVLC(1, 8) instruction désactivé
'Me.CBxDsgnArticle.Text = TVLC(1, 9)instruction désactivé
Me.TBxCmdQtecmd.Text = TVLC(1, 10)
'Me.TBxPrixUnitHT.Text = TVLC(1, 11)instruction désactivé
'AppelA TVLC(1, 8)instruction désactivé
End Sub

Et j'ai donc une erreur de compilation
nombre d'argument incorrect ou affectation de propriété incorrecte
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Non, il ne faut plus passer Tout:=False à son appel.
J'ai l'impression que tu n'a pas encore compris la relation qu'il y a entre les paramètres définis dans une instruction Sub et ce qu'on précise derrière lors de son appel ! Pas étonnant que tu ait du mal à comprendre comment tout ça marche ! Il te manque carrément des bases essentielles !

Me.TBxCmdQtecmd.Text = TVLC(1, 10) aussi doit être désactivé. C'est propre à une ligne de la commande, non à la commande.
Vérifier si certaines désactivées au début ne doivent pas être transférées dans la LBxC_Click
Jusqu'à maintenant j'avais cru que seuls l'article et la quantité commandée étaient propres à la ligne, mais à présent j'ai l'impression qu'il y en a d'autres, vu que tu en as mises en commentaires plus que je ne m'y attendais, au début.
Ah, non, je n'avais pas vu, si ce sont des contrôles de la fiche Articles, en effet il ne faut pas les renseigner.
 
Dernière édition:

gbstyle

XLDnaute Impliqué
alors j'ai ressuprimer paramètre Optional ByVal Tout As Boolean de la GarnirCommande
ca plante a nouveau, j'ai également regarder les infos je ne vois pas autre chose à ajouter dans la lbxclist
a la selection d'une ligne de commande j'ai toujour cette erreur :

Private Sub CLsC_Résultat(Lignes() As Long) =>Surligne en jaune
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
TVLC = CLsC.Lignes(Lignes(1)).Range.Value
GarnirCommande Tout:=False => garnir commande surligne en bleu
End Sub
 

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote