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é
Oui en effet c'est un autre userform ci joint le récap procédure :
VB:
Option Explicit
Private WithEvents CLsF As ComboBoxLiées, LCouF As Long, TVLF()

Private Sub UserForm_Initialize()
Set CLsF = New ComboBoxLiées
CLsF.Plage [TblSuivisFacturation]
CLsF.Add Me.CBxRefcommande, 1
CLsF.Add Me.CBxFournisseur, 4
CLsF.Add Me.CBxRefFacturation, 11

CLsF.CouleurSympa
CLsF.Actualiser

End Sub

Private Sub GarnirCommande()
Me.TBxDate.Text = TVLF(1, 2)
Me.TBxEnregistrepar.Text = TVLF(1, 3)
Me.TBxFaistransport.Text = TVLF(1, 10)

End Sub

J'ai une erreur d'execution 70 permission refusé qui se génère suite au faite que j'ai ajouter la CBxFournisseur, 4
 

gbstyle

XLDnaute Impliqué
Petite question j'ai un soucis avec la combobox lié a la référence facturation penses tu que je devrais créer sous différent frame afin de faciliter la mise à jour ?
Par contre j'ai un petit soucis avec un arguments qui n'arrive pas à etre pris en compte la Tbxdatelimite(TVLF1,13) elle me génére de que je selectionne une valeur combo une erreur d'execution
VB:
Private Sub GarnirCommande()
Me.TBxDate.Text = TVLF(1, 2)
Me.TBxEnregistrepar.Text = TVLF(1, 3)
Me.TBxDelailivraison.Text = TVLF(1, 5)
Me.TBxTotalHT.Text = TVLF(1, 6)
Me.TBxDatelivestime.Text = TVLF(1, 7)
Me.TBxBL.Text = TVLF(1, 8)
Me.TBxdatelivconfirme.Text = TVLF(1, 9)
Me.TBxFaistransport.Text = TVLF(1, 10)
Me.TBxdatefacturation.Text = TVLF(1, 12)
'Me.TBxdatelimite.Text = TVLF(1, 13)
End sub
 

gbstyle

XLDnaute Impliqué
J'ai ajouté 2 colonne pour des montant totaux HT et TTC soit 15 colonnes
J'ai également ajouter la procédure de validation qui m'enregistre bien mes modifs
VB:
Private Sub CBnValiderF_Click()
TVLF(1, 2) = CDate(Me.TBxDate.Text)
TVLF(1, 3) = Me.TBxEnregistrepar.Text
TVLF(1, 5) = Me.TBxDelailivraison.Text
TVLF(1, 6) = CCur(Me.TBxTotalHT.Text)
TVLF(1, 7) = CDate(Me.TBxDatelivestime.Text)
TVLF(1, 8) = Me.TBxBL.Text
TVLF(1, 9) = CDate(Me.TBxdatelivconfirme.Text)
TVLF(1, 10) = CCur(Me.TBxfraisdeport.Text)
TVLF(1, 12) = CDate(Me.TBxdatefacturation.Text)
TVLF(1, 13) = CDate(Me.TBxdatelimite.Text)

If LCouF = 0 Then
    CLsF.ValeursVers TVLF
    CLsF.Lignes.Add.Range.Value = TVLF
    CLsF.Actualiser
   
Else
    CLsF.Lignes(LCouF).Range.Value = TVLF
    End If

End Sub

J'ai juste actuellement 2 problème cette histoire de valeur d'erreur convertible et juste une des combobox lié qui est la Réf Facture pour laquelle je n'arrive pas à l'ajouter à une commande sachant que je souhaite avoir une proposition a terme dans ma listbox des Commande si je ne selectionne que un fournisseur
 

Dranreb

XLDnaute Barbatruc
Je crois que j'ai vu pourquoi: ReDim TR(1 To Données.Count, 1 To 12) dans la Worksheet_Activate
Effectivement quand on essaye de remplir une plage à partir d'un tableau VBA trop petit, les lignes et colonnes en trop sont garnies de la valeur d'erreur #N/A.
 

gbstyle

XLDnaute Impliqué
C'est bon pour la date j'ai réussis
Par contre du faite que j'ajoute 2 colonne dans le tableaux qui sont calculé à partir d'information comment puis le redimensionné de façon a ce que ca ne supprime pas mes infos

En faite je crois que dans la fonction workshett activate je mette 15 et que j'ajoute les calcul de mes deux dernière colonne comme pour le total des articles non?

quelque chose de ce type :
TR(LR, ?) = TR(LR, ?) + Détail(?) qui me permettrait de définir mon total HT = Total Art + Frais de port et idem pour le total TTC = Total HT * 1.20
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
S'il y a des formules dans les 2 dernières colonnes vous pouvez limiter le redim à 13 colonnes, mais ne pas oublier de corriger le Resize à la fin pour que la Worksheet_Activate les respecte
VB:
    .DataBodyRange.Resize(LR, 13).Value = TR
Mais ne serait-ce pas plus simple de les calculer en dur ?

S'il faut pouvoir attribuer un numéro de facture dans l'UserForm, prévoyez un bouton pour Stopper l'objet ComboBoxLiées afin de rester positionné sur la ligne.
 
Dernière édition:

gbstyle

XLDnaute Impliqué
Qu'entend tu par calculer en dur? (d'avoir juste une formule dans le tableau) c'est ce que j'ai fait ce matin même j'ai également fait mes modifs de colonne aussi bien dans la workshett activate que dans l'userform de suivis
Par contre je n'ai pas réussis encore à stopper l'objet comboboxlié
 

gbstyle

XLDnaute Impliqué
J'ai également revu la mise à jour de mes montant sur la cbn valider afin de ne pas effacer les formules définis, comme ca je n'ai qu'un clic a faire dans la listbox pour mise à jour des totaux
Ca me parait bon je ne sais pas ce que tu en penses
VB:
Private Sub CBnValiderF_Click()
TVLF(1, 2) = CDate(Me.TBxDate.Text)
TVLF(1, 3) = Me.TBxEnregistrepar.Text
TVLF(1, 5) = Me.TBxDelailivraison.Text
TVLF(1, 6) = CCur(Me.TBxFaistransport.Text)
TVLF(1, 7) = CDate(Me.TBxDatelivestime.Text)
TVLF(1, 8) = CCur(Me.TBxTotalHT.Text)
TVLF(1, 9) = Me.TBxBL.Text
TVLF(1, 10) = CDate(Me.TBxdatelivconfirme.Text)
TVLF(1, 11) = CCur(Me.TBxfraisdeport.Text)
TVLF(1, 13) = CDate(Me.TBxdatefacturation.Text)
TVLF(1, 14) = CDate(Me.TBxreglementeffectue.Text) '=> ligne se met en surbrillance jaune par laquel il faut obligatoirement une valeur je pense lors de l'ajout des autres infos

If LCouF = 0 Then
    CLsF.ValeursVers TVLF
    CLsF.Lignes.Add.Range.Resize(, 14).Value = TVLF
    CLsF.Actualiser
    'Me.LabNbfournisseur = CLsF.Lignes.Count
    'Set DicF = DicoSujet(CLsF.Item(CBxFournisseur).SujetBdD)
Else
    CLsF.Lignes(LCouF).Range.Resize(, 14).Value = TVLF
   
End If

End Sub
Par contre une chose est assez chiante dans ma cbnvalider c'est que quand je garnis ma commande à reception d'une facture je suis obligé de compléter ma textbox date de règlement effectué alors que je souhaite la faire ultérieurement
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
J'appelais plutôt "en dur" de calculer simplement la valeur par une expression VBA affectée plutôt que de passer par des formules.
Pour des TextBox qui peuvent ne pas être renseignées il faut plusieurs instructions avec des If pour tester le cas de figure. Ma dernière Function ValeurTBx aurait eu l'avantage de s'en occuper. Pourquoi ne t'en sers tu pas ?
 

gbstyle

XLDnaute Impliqué
Je vais essayer de regarder pour la function valeurTbx
par contre je n'arrive pas à assimiler comment reussir à déclarer des expression VBA pour éviter des formules, car pour l'instant j'ai pris l'opition formule dans tableau car justement je n'arrivais pas à intégrer des formule en expression VBA j'ai donc contourné le problème mais pas de facon optimum à te lire :/

j'ai bien trouvé dans ton module de classe la fonction de type : somme ou total mais je n'arrive pas à comprendre leur mise en place quand à la fonction valeurTbx étant place dans un module public fonction je pensais que c'était pris en compte

Je me rappel qu'on avait eu le meme soucis sur le premier userform au niveaux des fiche articles et on ne l'avais pas résolu je renseigné donc des valeur 0 dans les TBx ou je n'avais pas d'info spécifique
 
Dernière édition:

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 165
Messages
2 085 879
Membres
103 009
dernier inscrit
dede972