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é
C'est exactement ce que je m'etais dis c'était juste sur un aspect visuel mais dans le fond en effet aucune utilité. décision prise je supprime
ci joint modif faite
Peux tu me confirmer si ce que j'ai fait comme manip lié à la LBxF te parrait conforme : j'ai mis en commentaire les instruction que je considère donc inutile
VB:
Private Sub CLsF_Change(ByVal Complet As Boolean, ByVal NbrLgn As Long)
If NbrLgn = 1 Then CBnValiderF.Caption = "Modifier": Exit Sub
If NbrLgn = 0 Then 'LBxF.Clear
LCouF = 0
ReDim TVLF(1 To 1, 1 To 18)
GarnirCommande
CBnValiderF.Caption = "Ajouter"
End If
End Sub


VB:
Private Sub CLsF_Résultat(Lignes() As Long)
Dim TDon(), TLBx(), Ldon As Long, LLBx As Long, C As Long
If UBound(Lignes) = 1 Then
   LCouF = Lignes(1)
   TVLF = CLsF.Lignes(LCouF).Range.Value
   GarnirCommande
Else
   TLF = Lignes
   Don = CLsF.PlgTablo.Value
   ReDim TLBx(1 To UBound(TLF), 1 To 14)
   'For LLBx = 1 To UBound(TLF)
      'Ldon = TLF(LLBx)
      'For C = 1 To 14: TLBx(LLBx, C) = TDon(Ldon, C): Next C, LLBx ' code pour affichage total listbox changer paramètre 1To8 nb colonne affiché dans la list box
      ''For C = 1 To 8: TLBx(LLBx, C) = TDon(Ldon, Choose(C, 1, 4, 5, 23, 24, 26, 25, 27)): Next C, LLBx  'choix des colonne à ressortir dans la listbox
   'LBxF.List = TLBx:
   End If
End Sub

J'ai par ailleur une question j'ai ajouté un compteur sous forme de label du type :
Me.LabNbRefCommande = CLsF.Lignes.Count
dans l'userform initialize et la CBnvalider qui me compte le nombre de ligne de commande c'est ok par contre,
Est il possible de compter le nombre de cellule remplis mais sur une colonne différente c'est à dire le nombre de valeur renseigné dans la colonne règlement effectué.
 
Dernière édition:

gbstyle

XLDnaute Impliqué
Bonjour Dranreb résultat obtenus en faisant ce que tu m'a dis en ajoutant ce ceci l'userform initialise et cbn valider
VB:
Me.LabNbregeffectue = WorksheetFunction.CountA(CLsF.PlgTablo.Columns(14))

bon il ne s'actualise car la réouverture de l'userform mais je vais régler ca.
 

gbstyle

XLDnaute Impliqué
Je voulais te joindre l'ébauche de ce que j'ai travailler pour mon option userform suivis entrée sortie et avoir ton avis, j'ai juste un soucis sur l'ajout de mes infos avec ma commande CBn ajouter, car je souhaiterais les enregistré sur un autre tableau (TblSuivisEntreeSortis), et je n'arrive pas à le déclarrer,avant que tu me gronde ;p je sais ma listbox n'a pas forcement d'utilité :/ mais il permet une lecture rapide des infos
VB:
Option Explicit
Private WithEvents CLsE As ComboBoxLiées, LCouE As Long, TVLE(), TLE() As Long
       

Private Sub UserForm_Initialize()
Set CLsE = New ComboBoxLiées
CLsE.Plage [TblSuiviscommande]
CLsE.Add Me.CBxESRechecheRéfcommande, 1, Croissant:=False
CLsE.Add Me.CBxERéfArticle, 8
CLsE.Add Me.CBxEDesArticle, 9

CLsE.CouleurSympa
CLsE.Actualiser

   Me.TBxValeurdustock = Sheets("Sommaire").Range("R12")
  
End Sub

Private Sub CLsE_Résultat(Lignes() As Long)
Dim TDon(), TLBx(), Ldon As Long, LLBx As Long, C As Long
If UBound(Lignes) = 1 Then
   LCouE = Lignes(1)
   TVLE = CLsE.Lignes(LCouE).Range.Value
   GarnirEntrée
Else
   TLE = Lignes
   TDon = CLsE.PlgTablo.Value
   ReDim TLBx(1 To UBound(TLE), 1 To 14)
   For LLBx = 1 To UBound(TLE)
      Ldon = TLE(LLBx)
      For C = 1 To 3: TLBx(LLBx, C) = TDon(Ldon, Choose(C, 8, 9, 10)): Next C, LLBx  'choix des colonne à ressortir dans la listbox
   LBxE.List = TLBx:
End If
End Sub
Private Sub GarnirEntrée()

Me.TBxEQte.Text = TVLE(1, 10)
Me.TBxEPUHT.Text = TVLE(1, 11)

End Sub


Private Sub LBxE_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
LBxE.ListIndex = -1
LCouE = 0
CBnEValider.Caption = "Ajouter"
End Sub


Private Sub CBnRazE_Click()
CLsE.Nettoyer
End Sub
'**********************************************
' Procédure permettant de fermer un formulaire
'**********************************************
Private Sub BTnFemer_Click()
   
    Unload Me
End Sub
 

gbstyle

XLDnaute Impliqué
En faite je prend les infos du CLSE déclaré qui est le suivis commande par articles pour valider ma réception et déclarer les emplacement de stocks, et c'est la que j'ai un soucis pour réussir a les enregistré sur l'autre tableau pour mieux comprendre ci joint fichier
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Je ne sais pas, je n'ai pas trop envie de plonger dans ce nouveau dispositif.
J'ai vaguement l'impression qu'il faudrait constituer l'ébauche de l'autre tableau par une procédure analogue à celle qui constituait le suivi facturation et travailler, de toute façon, avec le tableau à mettre à jour et non un autre.
 

gbstyle

XLDnaute Impliqué
par contre à mon avis si j'ai bien compris, avec la fonction ssGR qui faisait un regroupement avec un ID sur la réf commande ca va poser un soucis, je l'ai d'ailleur supprimer mais malheureusement j'ai toujour un regroupement sur ma réf commande, :/ je pense que c'est du à la fonction gigogne ?

VB:
Private Sub Worksheet_Activate()
Dim Données As Collection, TR(), LR&, RefCmd, Détail, PremièreLigne As Boolean
Dim DatTrv As Date
Set Données = Gigogne(TableUnique(Me.ListObjects(1), WshSuivCmd), 1)

ReDim TR(1 To Données.Count, 1 To 13)
For Each RefCmd In Données
    LR = LR + 1
    TR(LR, 1) = RefCmd.Id ' Identification de la commande
    PremièreLigne = True
    For Each Détail In RefCmd.Co
       If Détail(0) = 0 Then
    Rem. Report des infos manuelles de la ligne de facturation qui existait déjà.  TR(LR, col. fact) = Détail(col. fact)

        'TR(LR, 9) = Détail(9)
        'TR(LR, 10) = Détail(10)
        'TR(LR, 11) = Détail(11)
        'TR(LR, 12) = Détail(12)
        'TR(LR, 13) = Détail(13)
        'TR(LR, 14) = Détail(14)

      Else

          If PremièreLigne Then
        Rem. Reproduction des informations de la commande.  TR(LR, col. fact) = Détail(col. commande)
            TR(LR, 2) = Détail(8)
            TR(LR, 3) = Détail(9)
            TR(LR, 4) = Détail(11)
            TR(LR, 5) = Détail(10)
        
        
            PremièreLigne = False: End If
   
      End If: Next Détail, RefCmd
With Me.ListObjects("TblSuivisEntreeSortis")
    If LR < .ListRows.Count Then .ListRows(LR + 1).Range _
       .Resize(.ListRows.Count - LR).Delete xlShiftUp
       .DataBodyRange.Resize(LR, 5).Value = TR 'pour recalculer les 18première colonne
    End With
End Sub
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
La fonction Gigogne fait ce qu'on lui dit de faire. En l'occurrence un regroupement sur la colonne 1 du tableau résultant de la mise bout à bout du tableau de la feuille activée et du tableau de suivi commandes.

J'ai l'impression que vous voulez regrouper sur un critère qui n'est pas dans les mêmes colonnes dans les deux tableaux.
Dans ce cas vous pouvez utiliser la fonction TabCols pour mettre en forme l'un des deux tableaux selon la même structure de colonnes que l'autre.
 
Dernière édition:

gbstyle

XLDnaute Impliqué
Bonjour, en faite je n'e veux pas faire de regroupement en fonction d'un critère comme pour la feuille suivifact ou la je souhaité regroupé toute les lignes de commande.
L'objectif et que le tableau final soit remplis automatiquement des qu'il y a des commandes de passée, 2 solution
- soit on copie le TBlSuivi commande comme évoqué à l'activation de la feuille avec une selection de colonne que j'ai besoin
- soit il aurait était possible de dupliquer les enregistrement lors d'une saisie de commande sur ce Tableau de suivis-entrée

Je vais regarder ce que je peux faire avec Tabcols.
 
Dernière édition:

gbstyle

XLDnaute Impliqué
par ce que je souhaite laissée indépendant c'est 2 type de données je m'explique :
1 commande parssé pour 1 article d'une quantité 10
- je veux avoir la possibilité dans mon tableau suivis entrée de saisir pour ce meme article plusieur ligne d'emplacement de stockage pour une meme référence recus.
- ex : réf 111, Qte 5 emplacement 1C01
réf 111, Qte 5 emplacement 1C02
Et c'est après par rapport à la référence commande que je reviendrais complété la base suivi commande avec les quantité totaux des mes entrés.

je ne sais pas si j'ai était précis

Je vais essayer de t'envoyer un exemple pour etre plus compréhensible
D'ailleur à te lire je me rend compte que c'est pas une copie du suivis commande qu'il me faut...
 

gbstyle

XLDnaute Impliqué
Voici le résultat attendus lors de la saisie des entrée/sortie tableau identique sur la feuille Suivi-Entré Sortie

upload_2018-4-9_10-44-53.png


Un même article pour une même réception n'aura pas obligatoirement le même emplacement de stockage

Et a partir de cette saisie de validation des entrée il faut faire la un regroupement de quantité par rapport aux numéros de commande pour venir remplir le Tbl suivis commande Qte livré
upload_2018-4-9_10-48-23.png

On aura comme rsultat 10, 9,4 et je j'aurai rapidement un résultat sur les écart entre commande et livraison.

Il y 'a ptet un moyen de faire plus simple mais à l'instanté je ne vois pas, par contre une chose est sur je dois pouvoir gérer une gestion de multiemplacement par rérérences, enfin de compte le tableau au lieux de se nommer Entrée / Sortie il pourrais se nommer Inventaire son objectif et de m'assurer ma gestion de stock par emplacement entrée/sortie
 

Dranreb

XLDnaute Barbatruc
Comme dit ce qui aurait été plus facile à gérer c'est que toutes les information datées voire horodatées soient stockées dans un seul et même tableau avec un code identifiant ce que c'est, que ce soit une ligne de commande, un rangement dans un emplacement de stock ou un retrait de l'un d'eux.
Là on va pas arrêter de transvaser constamment des choses d'un tableau à l'autre avec des colonages différents…
En tout cas si Gigogne peut être accessoirement utilisé, grâce à la fonction TableUnique, pour fusionner deux tableaux, en regroupant les infos venant des deux pour chaque valeur ou combinaison de valeurs d'un ou plusieurs critères présents dans les deux aux mêmes colonnes, il est surtout pratique pour établir des rapports imprimables à partir d'un tableau source unique.
 
Dernière édition:

Statistiques des forums

Discussions
312 198
Messages
2 086 153
Membres
103 136
dernier inscrit
Zoulander