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é
Bonjour Dranreb, j'ai effectuer les dernière modif et à prioris tout fonctionne, je ne sais plus si il reste encore des modif à faire je pensais notamment à des controle de doublon pour éviter des erreur de saisie par exemple sur les réf article
Ah oui il me manquait je crois qu'on en avait parlé mais la possibilité d'avoir la ligne article qui s'affiche dans LBxC juste aprés avoir cliquer sur ajouter et que ca mette à jour le LBxA sur l'état des stocks
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Non, il n'est pas prévu d'empêcher la saisie un article deux fois.
Normalement oui , un article ajouté devrait mettre à jour la LBxC puisque ça exécute un CLsC.Actualiser, lequel déclenche de fil en aiguille la CLsC_Résultat qui recommence tout le garnissage de la liste LBxC. Si ça ne se fait pas il faut pister l'exécution pour trouver pourquoi. Une hypothèse: CLsC n'est peut être pas actif ? si c'est le cas exécuter FrmC_Click après CLsC.Actualiser.
C'est très regrettable et décevant qu'un Frmx_Click ne se déclenche pas quand on sollicite d'une manière ou d'une autre un contrôle d'un Frame autre que le contrôle actif, parce que bien qu'il ne se déclenche pas, le Frame contenant le contrôle sollicité devient quand même le contrôle actif de l'UserForm !
Pour l'état des stock, je n'ai pas d'idée.
 
Dernière édition:

gbstyle

XLDnaute Impliqué
alors en effet la ligne d'ajout vient s'incrémenter à partir du moment ou je viens cliquer dans le frame commande
Pour l'état des stock de la LBxA je me suis un bouton de maj de l'userform du style
BTnMaj_click
unload me
FrmGlobal.show
End sub
ca m'évite de retourner au sommaire le seul inconvénient c'est que la base s'ouvre en neutre

Je ne sais pas si il avait était possible que en cliquant sur le frame de la commande ca actualise bien la LBxC et la LBxA
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonsoir.
J'ai du nouveau.
Comment ai-je pu passer à coté de ça.
Il est vrai que j'utilise si peu les Frame que j'ai oublié d'en étudier les autres évènements que le Click, lequel est proposé comme modèle de procédure quand on double clic sur un Frame depuis la fenêtre de conception d'un UserForm.
En remplaçant toutes les Frmx_Click par les trois procédures ci dessous, on a un fonctionnement global beaucoup plus proche de ce que j'avais imaginé au départ.
VB:
Private Sub FrmA_Enter()
CLsF.Stopper: FrmF.BackColor = &HE9E9FF
CLsC.Stopper: FrmC.BackColor = &HE9E9FF
CLsA.Réactiver: FrmA.BackColor = &HD8FFD8
End Sub
Private Sub FrmF_Enter()
CLsA.Stopper: FrmA.BackColor = &HE9E9FF
CLsC.Stopper: FrmC.BackColor = &HE9E9FF
CLsF.Réactiver: FrmF.BackColor = &HD8FFD8
End Sub
Private Sub FrmC_Enter()
CLsA.Stopper: FrmA.BackColor = &HE9E9FF
CLsF.Stopper: FrmF.BackColor = &HE9E9FF
CLsC.Réactiver: FrmC.BackColor = &HD8FFD8
End Sub
 

gbstyle

XLDnaute Impliqué
ah oui en effet c'est génial ce que tu me propose ca fonctionne à merveille meme mes listbox se mette a jour.
Ah oui au faite il nous manque encore une chose, c'est la suppression d'un article d'une commande en effet c'est le seul bouton non actif à ce jour
 

Dranreb

XLDnaute Barbatruc
C'est très proche des CBnSupprimerF_Click et CBnSupprimerA_Click sauf qu'il n'y a pas de Dictionary à reconstruire après le CLsC.Actualiser.
Par contre il faudrait reproduire les instructions de la LBxC_KeyPress pour qu'aucune ligne ne soit sélectionnée dans la ListBox après l'opération.
 

gbstyle

XLDnaute Impliqué
Bonjour dranreb alors voici déjà l'ébauche :

Private Sub CBnSupprimerC_Click()

If LCouC = 0 Then Exit Sub
If MsgBox("Etes-vous sûr de vouloir supprimer cette Article ?", _
vbYesNo + vbExclamation, Me.Caption) = vbNo Then Exit Sub
CLsC.Lignes(LCouC).Delete
CLsC.Actualiser

End Sub

Par contre je n'ai pas d'instruction LBxC_KeyPress je n'ai que ceci si je comprend bien il faut que créer une nouvelle instruction permettant de dire à la CBnSupprimer C_Click de supprimer la ligne sélectionner de la LBxC

Private Sub LBxC_Click()
LCouC = TLC(LBxC.ListIndex + 1)
CBnValiderC.Caption = "Modifier"
TVLC = CLsC.Lignes(LCouC).Range.Value
CLsC.ValeursDepuis TVLC
TBxCmdQtecmd.Text = TVLC(1, 10)
TBxCmddatelivraisonestime = TVLC(1, 7)
AppelA TVLC(1, 8)
'GarnirCommande
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Derrière la Private Sub LBxC_Click j'ai celle ci :
VB:
Private Sub LBxC_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
LBxC.ListIndex = -1
LCouC = 0
CBnValiderC.Caption = "Ajouter"
End Sub
Elle ne supprime rien, elle désélectionne seulement toute ligne de la LBxC, remet à 0 la ligne courante LCouC et comme fonction "Ajouter" au bouton de validation.
Il faut faire pareil après une suppression.
 
Dernière édition:

gbstyle

XLDnaute Impliqué
Alors a prioris ca fonctionne et en effet j'avais bien la LBxC je m'etais trompé de fichier ci joint le résultat :
Quand je clic sur une ligne de la LBxC et que je clique sur supprimer l'article est bien supprimer de la base commande.

N'hésite pas à me dire si j'ai omis quelque chose


Private Sub LBxC_Click()
LCouC = TLC(LBxC.ListIndex + 1)
CBnValiderC.Caption = "Modifier"
TVLC = CLsC.Lignes(LCouC).Range.Value
CLsC.ValeursDepuis TVLC
TBxCmdQtecmd.Text = TVLC(1, 10)
TBxCmddatelivraisonestime = TVLC(1, 7)
AppelA TVLC(1, 8)
End Sub

Private Sub LBxC_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
LBxC.ListIndex = -1
LCouC = 0
CBnValiderC.Caption = "Ajouter"
End Sub

Private Sub CBnSupprimerC_Click()
If LCouC = 0 Then Exit Sub
If MsgBox("Etes-vous sûr de vouloir supprimer cette Article ?", _
vbYesNo + vbExclamation, Me.Caption) = vbNo Then Exit Sub
CLsC.Lignes(LCouC).Delete
CLsC.Actualiser
End Sub
 

Dranreb

XLDnaute Barbatruc
Oui, omis de mettre LBxC.ListIndex = -1: LCouC = 0: CBnValiderC.Caption = "Ajouter" derrière CLsC.Actualiser.
Cela n'entraine t-il pas d'anomalie visible après une suppression, telle que le bouton de validation qui afficherait toujours "Modifier" ? Et qui sait à quelle ligne erronée cette modification s'appliquerait si on tentait de l'utiliser ensuite !
 

gbstyle

XLDnaute Impliqué
Alors en effet j'ai ajouter les instructions après le CLsC Actualiser. d'un premier jet cela fonctionne aussi avec la modifiation du bouton entre "ajouter" et modifier
Par contre j'ai essayer de passer une deuxième commande sur le fournisseur 1 (qui a déjà une commande en cours C00001) je souhaiter créer la C00008 pour 2 autre article
hors lorsque je souhaite la créer ma LBxA redevient toujour vierge à la saisie du numéro de commande. je ne peux donc plus séléctionner d'article pour crer une nouvelle commande.
De plus la Remise à zéro commande ne mes pas ma LBxC vierge laisse toujour la liste j'ai du me louper un moment je pense
Ci joint un exemplaire du fichier avec toute les dernière modif
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
J'ai un peu de mal à concevoir ce qui se passe avec ces description, mais ça semble lié à ce que lorsqu'une seule combinaison de valeur existe pour un élément spécifié l'objet ComboBoxLiée assume les autres. C'est peut être pour ça qu'on ne peut pas effacer la commande s'il n'en existe qu'une pour le fournisseur en cours. Mais ça ne devrait pas empêcher de taper un nouveau numéro de commande par dessus, inexistant celui là. À priori si on ne peut sélectionner aucun article c'est qu'il n'en existe aucun du fournisseur courant. Tout cela est bien contradictoire…
 

Statistiques des forums

Discussions
312 329
Messages
2 087 323
Membres
103 516
dernier inscrit
René Rivoli Monin