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é
Voici ce que j'ai essayé, le résultat est concluant je me demander juste si il était possible de rajouter dans le choix des colonne la désignation
pour cela je dois surement déclarer la colonne dans DicELBxStockE() As Dictionary
VB:
Private Sub CBxEemplacement_change()
If DicELBxStockE.Exists(CBxEemplacement.Text) Then LBxStockE.List = DicE(CBxEemplacement.Text) Else LBxStockE.Clear

End Sub

VB:
Function DicELBxStockE() As Dictionary 'Dictionnaire pour listbox Suivis emplacement
Dim TR(), RefArt As SsGr, DsgnArticle As String, Emplac As SsGr, LR As Long, TypMvt As SsGr, Détail
Set DicELBxStockE = New Dictionary
For Each Emplac In Gigogne(WshSuivES, 9, 1, 5) 'Définition des colonnes de classement et regroupements (réf, emplacement, mouvement)
     ReDim TR(1 To Emplac.Count, 1 To 3)
     LR = 0
     For Each RefArt In Emplac.Co ' Pour chaque SsGr d'article de l'emplacement
        LR = LR + 1 ' Nouvelle ligne résultante (Incrémente le numéro de ligne du tableau dans lequel on écrit).
        TR(LR, 1) = RefArt.Id
        For Each TypMvt In RefArt.Co 'Pour chaque type de mouvement de cet emplacement
           Select Case TypMvt.Id 'Selon cas du type de mouvement
              Case "Entrée": TR(LR, 2) = TR(LR, 2) + TypMvt.Somme(8) 'Cas mouvement entrée: ajout somme des quantités des lignes détail
              Case "Réservé": TR(LR, 2) = TR(LR, 2) + TypMvt.Somme(8) 'Cas mouvement réservé: ajout somme des quantités des lignes détail
              Case "Sortie": TR(LR, 2) = TR(LR, 2) - TypMvt.Somme(8) 'Cas mouvement sortie: retrait somme des quantités des lignes détail
              End Select 'Fin de bloc selon cas.
           For Each Détail In TypMvt.Co 'Pour chaque ligne détail contenue dans ce type de mouvement
              If Not IsEmpty(Détail(10)) Then TR(LR, 3) = Détail(10) 'Si la remarque n'est pas vide elle est placée en colonne 5
              Next Détail, TypMvt, RefArt
     DicELBxStockE.Add Emplac.Id, TR: Next Emplac
End Function
Dois je déclarer dans la définition des colonne de regroupement la colonne désignation ?
 

gbstyle

XLDnaute Impliqué
Je te joint l'ébauche du projet le résultat est très satisfaisant, en ne sélectionnant que l'emplacement le résultat est top, manque juste la désignation pour a la fin lors de l'extraction de ces infos pour un inventaire il soit plus facile à la compréhension
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Si vous n'affichez que 2 colonnes dans LBxStock, ce n'est pas la peine de se casser le cul à en mettre une troisième qui récupère la dernière remarque en parcourant les détails !
Pareil, si elle ne vous intéresse pas, pour la LBxStockE. Sauf que là vous voulez bien 3 colonnes et non 4. Alors, juste après avoir récupéré RefArt.Id en colonne 1, récupérez en colonne 2 de TR la colonne 2 de la 1ère ligne détail (c'est le 1er Co du 1er Co de RefArt) et cumulez les TypMvt.Somme(8) en colonne 3.
 

gbstyle

XLDnaute Impliqué
j'ai a peu prés assimiler ce que tu me me demande sauf (récupérer le 1er Co du 1er Co de RéfArt) :/
VB:
Function DicELBxStockE() As Dictionary 'Dictionnaire pour listbox Suivis emplacement
Dim TR(), RefArt As SsGr, DsgnArticle As String, Emplac As SsGr, LR As Long, TypMvt As SsGr, Détail
Set DicELBxStockE = New Dictionary
For Each Emplac In Gigogne(WshSuivES, 9, 1, 5)  'Définition des colonnes de classement et regroupements (réf, emplacement, mouvement)
     ReDim TR(1 To Emplac.Count, 1 To 3)
     LR = 0
     For Each RefArt In Emplac.Co ' Pour chaque SsGr d'article de l'emplacement
        LR = LR + 1 ' Nouvelle ligne résultante (Incrémente le numéro de ligne du tableau dans lequel on écrit).
        TR(LR, 1) = RefArt.Id
        'TR(LR, 2) = '
        For Each TypMvt In RefArt.Co 'Pour chaque type de mouvement de cet emplacement
           Select Case TypMvt.Id 'Selon cas du type de mouvement
              Case "Entrée": TR(LR, 3) = TR(LR, 3) + TypMvt.Somme(8) 'Cas mouvement entrée: ajout somme des quantités des lignes détail
              Case "Réservé": TR(LR, 3) = TR(LR, 3) + TypMvt.Somme(8) 'Cas mouvement réservé: ajout somme des quantités des lignes détail
              Case "Sortie": TR(LR, 3) = TR(LR, 3) - TypMvt.Somme(8) 'Cas mouvement sortie: retrait somme des quantités des lignes détail
              End Select 'Fin de bloc selon cas.
           For Each Détail In TypMvt.Co 'Pour chaque ligne détail contenue dans ce type de mouvement
              If Not IsEmpty(Détail(10)) Then TR(LR, 3) = Détail(10) 'Si la remarque n'est pas vide elle est placée en colonne 5
              Next Détail, TypMvt, RefArt
     DicELBxStockE.Add Emplac.Id, TR: Next Emplac
End Function
 

Dranreb

XLDnaute Barbatruc
On avait pourtant déjà déjà fait un truc semblable ailleurs.
La colonne 2: donc ça se termine par …(2)
Cette ligne détail est dans la Co d'un SsGr TypMvt et c'en est le 1er membre donc : ….Co(1)(2)
Or celui ci est est le 1er Co du RefArt, donc : TR(LR, 2) = RefArt.Co(1).Co(1)(2) sauf erreur.
Revérifions: RefAart.Co(1): 1er TypMvt … .Co(1)(2): colonne 2 de la 1ère ligne détail. Ça devrait coller.
 

gbstyle

XLDnaute Impliqué
C 'est tout nickel, j'ai ajuster les dimensions des colonnes aussi pour améliorer le visuel
VB:
Function DicELBxStockE() As Dictionary 'Dictionnaire pour listbox Suivis emplacement
Dim TR(), RefArt As SsGr, DsgnArticle As String, Emplac As SsGr, LR As Long, TypMvt As SsGr, Détail
Set DicELBxStockE = New Dictionary
For Each Emplac In Gigogne(WshSuivES, 9, 1, 5)  'Définition des colonnes de classement et regroupements (réf, emplacement, mouvement)
     ReDim TR(1 To Emplac.Count, 1 To 3)
     LR = 0
     For Each RefArt In Emplac.Co ' Pour chaque SsGr d'article de l'emplacement
        LR = LR + 1 ' Nouvelle ligne résultante (Incrémente le numéro de ligne du tableau dans lequel on écrit).
        TR(LR, 1) = RefArt.Id
        TR(LR, 2) = RefArt.Co(1).Co(1)(2) 'La colonne 2: donc ça se termine par …(2, Cette ligne détail est dans la Co d'un SsGr TypMvt et c'en est le 1er membre donc : ….Co(1)(2),Or celui ci est est le 1er Co du RefArt, donc : TR(LR, 2) = RefArt.Co(1).Co(1)(2) sauf erreur. Revérifions: RefAart.Co(1): 1er TypMvt … .Co(1)(2): colonne 2 de la 1ère ligne détail.
        For Each TypMvt In RefArt.Co 'Pour chaque type de mouvement de cet emplacement
           Select Case TypMvt.Id 'Selon cas du type de mouvement
              Case "Entrée": TR(LR, 3) = TR(LR, 3) + TypMvt.Somme(8) 'Cas mouvement entrée: ajout somme des quantités des lignes détail
              Case "Réservé": TR(LR, 3) = TR(LR, 3) + TypMvt.Somme(8) 'Cas mouvement réservé: ajout somme des quantités des lignes détail
              Case "Sortie": TR(LR, 3) = TR(LR, 3) - TypMvt.Somme(8) 'Cas mouvement sortie: retrait somme des quantités des lignes détail
              End Select 'Fin de bloc selon cas.
           For Each Détail In TypMvt.Co 'Pour chaque ligne détail contenue dans ce type de mouvement
              If Not IsEmpty(Détail(10)) Then TR(LR, 3) = Détail(10) 'Si la remarque n'est pas vide elle est placée en colonne 5
              Next Détail, TypMvt, RefArt
     DicELBxStockE.Add Emplac.Id, TR: Next Emplac
End Function
Je m'etais arretais a RefARticle.co(1) je n'avais pas assimiler le .Co(1)(2)
 

gbstyle

XLDnaute Impliqué
Bonjour Dranreb, alors j'ai commencé a m'attaquer à l'export des feuilles, mon petit soucis, et que je n'arrive pas à nommer mon classeur qui se crée suivi stock, et j'ai automatiquement un débogage qui se met sur mon classeur puisqu'il copie en même temp le code de la wsh et comme ce sont tes modules je pense que tu sais pourquoi ?
Ah oui j'oubliai le code est dans un module standard, et c'est un bouton qui appelle la macro

VB:
Sub export_Suivis_Stocks()
Dim chemin$, nom$

     chemin = "F:\Projet\SL_\03_ET\03_B\Exportation"
     nom = "Suivis_Stocks " & Format(Date, "mmmm yyyy") & ".xlsx"

     Sheets("Suivis_Stocks").Activate
     ActiveSheet.Copy

     Application.ScreenUpdating = False                                             'xlOpenXMLWorkbook = xlsx
     ActiveSheet.SaveAs Filename:=chemin & nom, FileFormat:=xlOpenXMLWorkbook
     ActiveWorkbook.Close True
End Sub
 

gbstyle

XLDnaute Impliqué
ah en effet tu dois avoir raison non le nom souhaitait serait plutôt
Suivis Stock Mai 2018 qui viendrait se mettre ici dans le dossier Exportation :/
Alors oui j'ai du faire une boulette :/
Mon résultat actuelle me donne :
Nom Classeur 1 ; avec le nom de la feuille Suivi Stock, par contre il ne se copie dans le chemin spécifié

remarque si ca pose problème je peux m'affranchir de le copier dans un chemin précis et je viens l'enregistre de façon manuel
 
Dernière édition:

gbstyle

XLDnaute Impliqué
Rebonjour le forum, Dranreb et Chti160
Je reviens vers vous après 10 jours de déconection total pour vacance, je n'ai pas eu la chance d'avoir un retour sur mon dysfonctionnement a propos du code export de la table.

Je suis prêt à abolir l'idée de le mettre dans un chemin spécifique, par contre j'aimerai que la copie de la feuille n'est pas le code lors de l'ouverture de l'export car il m'ouvre systématiquement le débogage, si vous avez une solution je vous en remercierait grandement.

Cdt