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é
tu me parles certainement de cela :
VB:
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

En faite il faudrait que je puisse récupérer ces infos et par l'intermédiaire d'un CBn il vienne s'incrémenter à mon masque de bon de commande si je comprend bien
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Oui, ça a l'air d'être ça.
Vaudrait mieux y renommer TLBx en TRés puisque le tableau sera à destination d'une valeur de plage et non d'une ListBox. À part ça tout le remplissage devra beaucoup ressembler à partir de TDon = CLsC.PLgTablo.Value. TLC aura déjà été fixé, justement par la CLsC_Résultat.
 
Dernière édition:

gbstyle

XLDnaute Impliqué
Ebauche de déclaration :
j'ai volontairement déclarer sur une feuil vierge

Dim TDon(), TR(), Ldon As Long, C As Long
TLC = Lignes
TDon = CLsC.PlgTablo.Value
ReDim TR(1 To UBound(TLC), 1 To 6)
For TR = 1 To UBound(TLC)
Ldon = TLC(TR)
For C = 1 To 6: TR(sheets ("Feuil1"), C) = TDon(Ldon, Choose(C, 1, 8, 9, 10, 11, 12)): Next C, Sheets("Feuil1")
Sheets("Feuil1") = TR
TVLC = CLsC.Lignes(Lignes(1)).Range.Value

Il me manque plusieur chose je crois, la déclaration où on va venir poser les infos sur la feuille par exemple
dois je déclarer un Tableau nommé et venir le compléter suivant le modèle à partir par exemple Ligne 22 ,colonne 3 ???
 

Dranreb

XLDnaute Barbatruc
C'est à mettre dans l'UserForm, bien entendu.
Vous ne pouvez pas utiliser un tableau comme compteur de boucle. Il vous faut une LR As Long qui jouera le rôle de la LLbx de l'autre procédure.
Versez ensuite le tableau à la bonne adresse de cellule de la feuille cible.
Il n'y a pas lieu de renseigner TVLC.
 

gbstyle

XLDnaute Impliqué
Bonjour Dranreb ci joint petite modif, je n'arrive pas à verser le tableau à l'adresse voulu :/ normalement c'est bien le format "Cells(Ligne,colonne)"
VB:
Private Sub CommandButton1_Click()

Private Sub CommandButton1_Click()
Dim TDon(), TR(), Ldon As Long, LR As Long, C As Long
TLC = Lignes
TDon = CLsC.PlgTablo.Value
ReDim TR(1 To UBound(TLC), 1 To 6)
For LR = 1 To UBound(TLC)
  Ldon = TLC(LR)
  For C = 1 To 6: TR(LR, C) = TDon(Ldon, Choose(C, 1, 8, 9, 10, 11, 12)): Next C, LR
'Sheets ("Feuil1"). Cells(22, 3).Select = TR

End Sub

Je me permet d'apporter quelque précision

En faite il faudrait que je puisse dire
Réf commande = cellule(3,I)
Date = cellule (18,D)
et ma plage de réf/désignation/Qte/PuHT/Total HT =commence en (22,C)

Et à partir de la réf commande compléter si possible tout les infos du fournisseur, nous avons justement je crois une majeur partis des infos présent dans la feuille suivis commande, par contre il me manque 2 infos majeure qui sont dispo dans la base fournisseur

Ces emplacement seront standard à tout mes bon de Commande, comme je suis que dans l'ébauche je souhaite vraiment assimiler cette procédure car je pense que mon bon de commande va évoluer et je veux pouvoir remodifier de manière autonome si besoin mes destination

Image de résultat attendus pour éclaircir mes propos:

Si cela parait trop compliqué je viendrais compléter les champs à partir d'une recherche V mais j'ai peur que ca alourdisse le fichier
 
Dernière édition:

gbstyle

XLDnaute Impliqué
upload_2018-6-7_9-36-29.png
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Pourriez vous donner des noms dans le classeur ou dans la feuille aux plages cibles ?
Comme ça si elles changent de place ça ne changera plus le code.
Au lieu de WshBonCmd.[C22:G23].Value = TR vous pourrez faire par exemple WshBonCmd.[CorpFact].value = TR
 
Dernière édition:

gbstyle

XLDnaute Impliqué
J'ai commencé à remplir :
par contre il me manquera la liaison pour les infos qui ne sont pas dans la SuiviCommande mais dans la base Fournisseur (adresse, CP, Ville, condition de paiement), je leur crée aussi un nom de champ

VB:
Private Sub CommandButton1_Click()
Dim TDon(), TR(), Ldon As Long, LR As Long, C As Long
TLC = Lignes
TDon = CLsC.PlgTablo.Value
ReDim TR(1 To UBound(TLC), 1 To 6)
For LR = 1 To UBound(TLC)
   Ldon = TLC(LR)
   'For C = 1 To 6: TLBx(LLBx, C) = Tdon(Ldon, C): Next C, LLBx
   For C = 1 To 6: TR(LR, C) = TDon(Ldon, Choose(C, 1, 8, 9, 10, 11, 12)): Next C, LR
WshBonCmd.[RéfBC].Value = TR
WshBonCmd.[DateCommande].Value = TR
WshBonCmd.[CorpsFacture].Value = TR
WshBonCmd.[Port].Value = TR
WshBonCmd.[Delailivraison].Value = TR
 

Dranreb

XLDnaute Barbatruc
Pourquoi n'observez vous pas la fin de mon message #587 ?
… à partir de TDon = CLsC.PLgTablo.Value. TLC aura déjà été fixé, justement par la CLsC_Résultat.
Vous auriez intérêt à faire Redim TR(1 To WshBonCmd.[CoppsFacture].Rows.Count, 1 To 6) pour ne pas avoir à compliquer pour nettoyer d'anciennes lignes en trop.
Les autres champs doivent naturellement être garnis d'après d'autres sources que TR, sans doute divers TVLx(1, y).
 

Statistiques des forums

Discussions
312 103
Messages
2 085 316
Membres
102 860
dernier inscrit
fredo67