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é
Je pense que je vais faire plus simple dans un premier temp, c'est je vais exporter chaque feuille dans un nouveau classeur et je ferai mes analyse par Tableau croisé ou autre, car aujourd'hui je n'ai pas encore toute la visibilité de mon besoin, je pense que je l'aurai après une utilisation global de la base
 

gbstyle

XLDnaute Impliqué
Bonjour Dranreb, j'aurai aimé avoir ton point de vue sur l'évolution de mon fichier je m'explique dans le cadre du suivi Cmd/Factuation comment verrais tu les choses, je m'explique tu as pu voir dans ma base que j'ai créer un onglet suivi fact qui me permet de synthétyser et compléter des infos à la commande.
J'aimerai savoir si il était possible d'avoir une procédure qui permet lors de la saisie des commande article, je puisse récupérer les infos total de la commande et s'est renseignement. le but sera de compléter les infos facturation des réception et ses montants.
Je ne sais pas si j'ai était clair donc n'hésite pas à revenir vers moi
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Oui, les numéros des lignes de la commande sont dans TLC.
Ce serait une procédure très proche du code qui alimente la LBxC, sauf qu'à la fin au lieu d'envoyer le tableau dans LBxC.List il faut l'envoyer dans une plage de cellules.Value.
 

gbstyle

XLDnaute Impliqué
Par contre il faut obligatoirement que je redéclare dans mon autre userform les différentes :
Option Explicit
Private WithEvents CLsF As ComboBoxLiées, LCouF As Long, TVLF(), _
WithEvents CLsA As ComboBoxLiées, LCouA As Long, TVLA(), TLA() As Long, _
WithEvents CLsC As ComboBoxLiées, LCouC As Long, TVLC(), TLC() As Long
Private DicF As Dictionary, DicA As Dictionary
 

gbstyle

XLDnaute Impliqué
En faite l'objectif est d'avoir un userform dédié au suivi facturation me permettant d'avoir un visu global de toute mes facturation fournisseur.
L'userform était déjà créer dans la base si tu l'a gardé sous le coude
mon principal problème est lors de l'enregistrement d'une commande on enregistre chaque ligne pour chaque article
- j'aurai voulu savoir si il était possible d'ajouter une procédure avec un bouton ou alors déjà dans la procédure existante les infos que je viendrais remplir un autre tableau récapitulant la toute les information de suivis facturation (feuil suivis facturation)
 

Dranreb

XLDnaute Barbatruc
Je me suis aperçu qu'il était assez probable que des infos ajoutées après coup dans la Suivis_Facuration étaient à conserver. Alors j'ai ajouté un petit module de service pour cela.
Il reste plein d'instruction à ajouter. J'en ai mis des modèles en y remplaçant les numéros de colonnes par des "?"
Quand Détail(0) = 0 il faut mettre pour Détail les numéros de colonnes de Suivis_Facturation, sinon de Suivis_Commande. Pour TR il faut toujours prendre le numéro de colonne dans Suivis_Facturation.
 

Pièces jointes

  • CBxLiéesGbstyle.xlsm
    559.1 KB · Affichages: 51
Dernière édition:

gbstyle

XLDnaute Impliqué
Je n'arrive pas à assimiler a quoi correspond LR
c'est la colonne de référence de la feuille suivi commande ?
je devrais avoir quelque chose comme ca :
If détail(0) =0 then
TR(LR, 1) = Détail(1) => (LR ),Numéro de colonne suivis commande soit réf commande = Détail (numéro de colonne suivis facturation)
TR(LR, 1) = Détail(2)
TR(LR, 1) = Détail(3)
else
TR(LR, ??) = Tr (LR, ?) + Détail (?)

j'ai du mal à pigerle truc
j'ai une erreur d'execution 438
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
LR est le numéro de la ligne de résultat qu'on est en train de remplir.
TR(LR, 1) = Détail(1) c'est inutile, déjà fait plus haut par TR(LR, 1) = RefCmd.Id
En fait dans la 1ère partie il faudrait seulement récupérer les colonnes ajoutées manuellement sur le Suivi_Facturation, c'est à dire seulement le 3 dernières colonnes.
Dans la 2ième partie, transférer les données du Suivi_Commandes et, pour les montants seulement:
TR(LR, 8) = TR(LR, 8) + Détail(12)

Oh, il me semble que j'ai oublié un Resize tout à la fin :
VB:
   .DataBodyRange.Resize(LR).Value = TR
 
Dernière édition:

gbstyle

XLDnaute Impliqué
Bonjour Dranreb, alors après plusieur essais ce week end je n'ai toujour pas réussis à atteindre le résultat souhaité, je crois en faite que malgré ton explication je n'arrive pas à assimiler la procédure.
En faite à quoi correspond le premier chapitre ?
Le TR(LR, ?) => Point d'interrogation devrais enfin de compte etre toujour le méme puisque c'est le numéros de réf commande non?
=Détail (??) => ?? correspond a la colonne à ressortir

Par contre pour le 2eme chapitre je pige pas du tout +Détail(?)
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Ce que j'ai appelé la 1ère partie c'est celle qui est soumise au test If Détail(0) = 0 Then
Cela signifie qu'on est sur la ligne de facturation qui préexistait déjà, pour y reconduire les valeurs apportées manuellement dans les dernières colonnes aux mêmes colonnes dans TR(LR, que dans Détail(
Le plus gros est à faire dans la 2ième partie, après le Else, où Détail contient les valeurs d'une ligne de commande.
Oui, sauf pour les montants, qu'il faut cumuler de toutes les lignes, on n'aurait en principe à reproduire les infos de la commande que de la 1ère ligne de commande du SsGr RefCmd
Si vous voulez vous pouvez déclarer un Boolean PremièreLigne pour ne prendre les infos que de la 1ère ligne de commande.
VB:
Private Sub Worksheet_Activate()
Dim Données As Collection, TR(), LR&, RefCmd As SsGr, Détail, PremièreLigne As Boolean
Set Données = Gigogne(TableUnique(Me, WshSuivCmd), 1)
ReDim TR(1 To Données.Count, 1 To 12)
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)
         …
      Else
         If PremièreLigne Then
         Rem. Reproduction des informations de la commande.  TR(LR, col. fact) = Détail(col. commande)
            …
            PremièreLigne = False: End If
      Rem. Cumul des montants de toutes les lignes de commande :
         TR(LR, 8) = TR(LR, 8) + Détail(12)
         End If: Next Détail, RefCmd
With Me.ListObjects("TblSuivisFacturation")
   If LR < .ListRows.Count Then .ListRows(LR + 1).Range _
      .Resize(.ListRows.Count - LR).Delete xlShiftUp
   .DataBodyRange.Resize(LR).Value = TR
   End With
End Sub
 

gbstyle

XLDnaute Impliqué
Bonjour Dranreb
ci joint résultat avec erreur lors du clic sur nom ambigu :/ (Pour infos j'ai changé la colonne 8 et déplacé en 6 car a partir de la 7eme colonne se sont des données qui seront complété ultérieurement par l'intermédiaire de mon userform)

Private Sub Worksheet_Activate()
Dim Données As Collection, TR(), LR&, RefCmd As SsGr, Détail, PremièreLigne As Boolean
Set Données = Gigogne(TableUnique(Me, WshSuivCmd), 1)
ReDim TR(1 To Données.Count, 1 To 12)
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, 2) = Détail(2)
TR(LR, 3) = Détail(3)
TR(LR, 4) = Détail(4)
TR(LR, 5) = Détail(5)
TR(LR, 6) = Détail(6)
TR(LR, 7) = Détail(7)
TR(LR, 8) = Détail(8)
TR(LR, 10) = Détail(10)
TR(LR, 11) = Détail(11)
TR(LR, 12) = Détail(12)
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(2)
TR(LR, 3) = Détail(3)
TR(LR, 4) = Détail(4)
TR(LR, 5) = Détail(5)
PremièreLigne = False: End If
Rem. Cumul des montants de toutes les lignes de commande :
TR(LR, 6) = TR(LR, 6) + Détail(12)
End If: Next Détail, RefCmd
With Me.ListObjects("TblSuivisFacturation")
If LR < .ListRows.Count Then .ListRows(LR + 1).Range _
.Resize(.ListRows.Count - LR).Delete xlShiftUp
.DataBodyRange.Resize(LR).Value = TR
End With
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Alors il ne faut pas TR(LR, 6) = Détail(6) sinon les montants vont être cumulés deux fois, sur le total de la ligne de facture existante. Il faut que ça reste vide ou à la rigueur mettez y 0@ pour préparer le cumul des montants.
 

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 536
dernier inscrit
komivi