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é
Après réflexion je me demande si ce n'est pas du aux dernière modification d'affichage, tu sais les codes de type sur le formulaire pour remettre un affichage plein écran :/
Code:
Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'Code permettant l'affichage de la barre de ruban par un double clic sur un userform
Static Temps As Date
If Temps <> 0 Then
    Application.DisplayFullScreen = Not Application.DisplayFullScreen
Else
    Temps = Now + TimeSerial(0, 0, 1)
    Do: DoEvents: Loop Until Now > Temps
    End If
Temps = 0
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Décompose l'instruction provisoirement pour voir à quel moment ça se produit
VB:
'    CLsC.Lignes.Add.Range.Resize(, 11).Value = TVLC
   Dim LRs As ListRows, LRw As ListRow, Rng As Range
   Set LRs = CLsC.Lignes
   Set LRw = LRs.Add
   Set Rng = LRw.Range
   Rng.Resize(, 11).Value = TVLC
 

gbstyle

XLDnaute Impliqué
quelque chose comme ceci donc
VB:
Private Sub CBnValiderC_Click()
Dim LRs As ListRows, LRw As ListRow, Rng As Range
If LCouC = 0 Then ReDim TVLC(1 To 1, 1 To 11)

TVLC(1, 4) = TVLF(1, 2)
TVLC(1, 2) = ValeurTBx(Me.TBxCmdDate, vbDate)
TVLC(1, 3) = Me.TBxCmdEnregistrepar.Text
TVLC(1, 5) = Me.CBxDelaislivraison.Text
TVLC(1, 6) = ValeurTBx(Me.TBxMontant, vbCurrency)
TVLC(1, 7) = ValeurTBx(Me.TBxCmddatelivraisonestime, vbDate)
TVLC(1, 8) = Me.CBxRefArticle.Text
TVLC(1, 9) = Me.CBxDsgnArticle.Text
TVLC(1, 10) = ValeurTBx(Me.TBxCmdQtecmd, vbDouble)
TVLC(1, 11) = ValeurTBx(Me.TBxPrixUnitHT, vbCurrency)

If LCouC = 0 Then
    CLsC.ValeursVers TVLC
    'CLsC.Lignes.Add.Range.Resize(, 11).Value = TVLC
   
    Set LRs = CLsC.Lignes
    Set LRw = LRs.Add
    Set Rng = LRw.Range
    Rng.Resize(, 11).Value = TVLC
    CLsC.Actualiser
    Rem. Refaire un Dictionary ? Refiltrer quelque chose ? On verra !
Else
   
    CLsC.Lignes(LCouC).Range.Resize(, 11).Value = TVLC '11=nombre de colonnes contenant des constantes
   
    End If
End Sub
 

Dranreb

XLDnaute Barbatruc
Oui. C'est vrai qu'il est d'usage de mettre les Dim au début, mais ils peuvent en réalité être mis n'importe où avant leur utilisation. Et là comme ce n'était que du provisoire, le temps qu'on trouve pourquoi un des objets impliqués a perdu sa relation avec les données en mémoire qui le concernent…
 
Dernière édition:

gbstyle

XLDnaute Impliqué
upload_2018-7-2_13-31-34.png
 

Dranreb

XLDnaute Barbatruc
Ouais. Je m'y attendais vaguement. Ça va être difficile de trouver pourquoi la propriété Lignes (As ListRows) du ComboBoxLiées n'est plus membre du ListObject qu'il avait trouvé lors de l'invocation de sa méthode Plage.
Pffff… Indique moi donc une série de manœuvres et de saisies à faire pour reproduire le problème.
On pourrait contourner le problème en n'utilisant plus la propriété Lignes. Mais j'ai peur que ça ne fasse que retarder l'arrivée d'un autre problème.
 

gbstyle

XLDnaute Impliqué
As tu vu que je t'ai mis le projet global en copie ? (pour info j'ai supprimé à l'ouverture l'affichage en plein écran et désactivé dans l'userform facturation, ta procédure de réactivation des affichage dans un frame, je m'étais dis que c'était ptet du à ca).

Alors écoute pour faire simple tu ouvre l'userform Frm Global
Tu selectionne le fournisseur ADEN et ANAIS
A partir de la listbox tu selectionne un article
Et tu créer la commande C00010
avec Enregistré par SL
Date : Date du jour
Date estimé : tu 15/07/2018
Qté : celle que tu veux et tu clic sur ajouter et la ca plantera :/

Normalement tu as le résutat des saisie qui vienne s'incrémeter sur la feuille Suivis commande
 

gbstyle

XLDnaute Impliqué
Ca ne sert à rien que je refasse tout le projet vu que ca fonctionne ailleur, par contre je constate que le soucis arrive des que j'utilise le fichier sous excel 2016 car chez moi en 2010 ca fonctionné aussi et je n'avais pas ce message d'erreur :/
 

Dranreb

XLDnaute Barbatruc
Mais non ! J'ai seulement Excel 2016 moi, et ça marche très bien.
Y a t'il d'autre classeur ouverts qui pourraient perturber l'application ?
Ça va être très très difficile à cerner. C'est très ennuyeux, mais ce n'est probablement pas très grave.
 

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat