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é
Pour l'instant tout les essais que j'ai effectué depuis ce matin avec les commentaire que je t'apporte sont fait a partir de ce code :
VB:
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)
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)
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
    MsgBox "ClsC.Plgtablo: " & CLsA.PlgTablo.Rows.Count & " lignes, Adresse=" _
       & CLsC.PlgTablo.Address(External:=True), vbInformation, "Débogage"
    CLsC.Lignes.Add.Range.Resize(, 11).Value = TVLC
    'Dim LRs As ListRows, LRw As ListRow, Rng As Range 'essais pour chanter la ligne CLsC.Lignes.Add.Range.resize(,11).value=TVLC
    '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

Et meme résultat avec ceci aux niveau des manipulation
VB:
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)
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)
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
    MsgBox "ClsC.Plgtablo: " & CLsA.PlgTablo.Rows.Count & " lignes, Adresse=" _
       & CLsC.PlgTablo.Address(External:=True), vbInformation, "Débogage"
    'CLsC.Lignes.Add.Range.Resize(, 11).Value = TVLC
    Dim LRs As ListRows, LRw As ListRow, Rng As Range 'essais pour chanter la ligne
    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
 
Dernière édition:

gbstyle

XLDnaute Impliqué
bonjour dranreb, alors voici quelque news j'ai essayé de fouiner sur d'autre forum mais à vrai dire pas beaucoup de réponse excepté les réponses traditionnelle du style "Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior."
Cependant j'ai eu un premier retour qui me dirait ca, je n'ai pas pu encore approfondir mais des que j'ai des news je reviens vers toi pour te tenir informer
"
Ça bloque là avec un message d'horreur que j'ai oublié. (Excel 2016, presque Excel 2019. Il manque 2 ou 3 cossins déjà sortis pour le programme Office Outsiders.)"
 

gbstyle

XLDnaute Impliqué
Salut Dranreb, alors écoute ce matin j'ai effectué une modification toute simple
j'ai était dans gestionnaire affichage des nom, j'avais une listedenom déclaré sur le champt réf commande du tableau Suivis commande
J'ai tout simplement surpprimer cette liste de nom
J'ai effectué toute modification potentiel et a priori tout refonctionne

Par contre expliquez pourquoi c'est impossible pour moi :/
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Ah, ça, je n'avais vraiment pas pensé à regarder s'il ne trainait pas un parasite de ce genre.
Je ne vois d'ailleurs rien de spécial dans les noms du dernier classeur BDDGDSTK.xlsm joint, hormis des noms que j'éviterais autant que possible de définir s'ils font double emploi avec des noms de tableaux Excel.
 

gbstyle

XLDnaute Impliqué
Si je comprend bien tu me demandes de renommer les noms de liste différement des noms de tableaux
En tout cas je ne sais pas expliquez pourquoi c'est du à cà

Par contre j'aurai voulu savoir penses tu qu'il est possible d'ajouter ce type de label dans mon userform
Me.LabNbCmd = ????.Lignes.Count
J'aurai voulu connaitre le nombre de commande encours et
dansun second label d'afficher le numéro de la dernière commande utilisé en info de sorte à ne pas chercher qu'elle numéro de commande je devrais créer
Toute ces infos sont dispo je pense à partur du tableau Suivis facturation
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Non, j'éviterais de les définir, en utilisant directement les références aux tableaux, mais je ne suis pas sûr que ce soit toujours possible.
Oui, tu mets CLsC à la place des ???? et tu aura le nombre total de commandes.
Tu devrait le trouver dans CLsC.Items(CBxCommande).SujetBdD(0)(1)…
 

gbstyle

XLDnaute Impliqué
Oyé oyé, Bonjour Dranreb comment vas tu ?
je viens te donner quelque nouvelle d'utilisation de notre base de gestion.
Et j'ai quelque petit soucis a régler de format de texte, je m'explique
Dans le cadre de CBxLié lorsque je saisie une référence de type "000003", il vient m'enregistrer systématiquement mes information comme ceci "3", je n'ai pas réussis à modifier le programme donc je le modifie de facon manuelle dans le tableau base articles mais c'est assez chiant car des que j'ai eu une modification article il me recrée un article avec une réf 3
Je ne sais pas si tu as toujour un historique de notre fichier, mais ca m'étonnerais je pense que tu gardes toujour une trace d'un fichier sur lequel tu as travaillé ;)
Si jamais tu peux m'aider je suis preneur d'avance merci
 

Dranreb

XLDnaute Barbatruc
Boujour.
Pour des informations numériques, il est possible de spécifier un format de nombre au CLsA.Add de la ComboBox.
Pour des infos texte il faudrait mettre un format Texte sur la colonne. Il devrait aussi être possible de spécifier "&" (comme ça, entre double apostrophe) derrière le numéro de colonne.
 
Dernière édition:

gbstyle

XLDnaute Impliqué
Je n'ai pas bien assimiler ta deuxieme solution, car je pense que les références devrait être au format texte
upload_2018-8-31_13-32-25.png
 

gbstyle

XLDnaute Impliqué
Malgré la création de ma référence en 00002, et que mon format de cellule de mon tableau est en texte il me met systématiquement 2, je voudrais qu'il me mette exactement ma saisie, car je peux avoir des référence de type 00002 comme je peux avoir NRV150987
Je pense qu'il serait judicieux que je vois quelle est le format de valeur je souhaite et pour être simple j'aimerai qu'il mémorise exactement mes saisie sachant :
que mes réf peuvent etre numérique, alpha numérique de plusieur caractère ex :
0001 / Ab1548A / NRV150987
 
Dernière édition:

gbstyle

XLDnaute Impliqué
Bonjour Dranreb, et merci pour ton retour
en effet cela fonctionne j'avai oublié de mettre les colonnes concerné en format de cellule texte, sinon ce la ne fonctionnait pas :/
Par contre j'ai mes date qui se mettent par défaut en format américain, c'est a dire au lieu de 31/8/2018 j'ai 8/31/2018, le format est déclaré dans le code en vbdate, y'a t'il une astuce car meme en mettant ma colonne en format date, par défaut il me met en format américain
Il me met les date en format personalisé à chaque enregistrement
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
VbDate est une constante VbVarType qui désigne le type Variant/Date. Dans quel contexte est-elle utilisée ? Il y a un bogue sur d'anciennes versions d'Excel même en écrivant un Variant/Date dans une cellule portant un format de date. On peut y remédier en affectant la valeur à Value2. Attention: la cellule doit alors avoir obligatoirement un format de date.
 

Statistiques des forums

Discussions
311 729
Messages
2 081 970
Membres
101 852
dernier inscrit
dthi16088