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
 

Dranreb

XLDnaute Barbatruc
Mais il ne faut pas saisir "10/16", il faut saisir "oct 16", comme l'affiche Format(DateSerial(2016, 10, 1), "mmm yy"), bon sang !
Si ça ne commence pas par un mois en lettre il ne détecte pas que le quantième est manquant et doit être assumé 1.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
J'ai testé cette procédure dans un nouveau classeur, ça marche :
VB:
Sub Test()
   Dim T(1 To 12) As String, D1 As Date, Txt As String, D2 As Date
   For M = 1 To 12
      D1 = DateSerial(2016, M, 1)
      Txt = Format(D1, "mmm yy")
      D2 = CDate("1 " & Txt)
      T(M) = "CDate(""1 "" & """ & Txt & """) = " & Format(D2, "dd/mm/yyyy")
      Next M
   MsgBox Join(T, vbLf), vbInformation, "Test"
   End Sub
 

gbstyle

XLDnaute Impliqué
Bonjour Dranreb et bien écoute je ne sais pas pourquoi mais cela ne fonctionne pas chez moi
VB:
Private Sub CBnValiderF_Click()
TVLF(1, 3) = Me.CBxGroupe.Text
TVLF(1, 4) = Me.TBxNomjf.Text
TVLF(1, 5) = Me.TBxPrénom.Text
TVLF(1, 6) = ValeurTBx(Me.TBxDatenaiss, vbDate)
TVLF(1, 7) = Me.TBxLieunaiss.Text
TVLF(1, 8) = Me.TBxDeptnaiss.Text
TVLF(1, 9) = Me.CBxSitufam.Text
TVLF(1, 10) = Me.CBxContrat.Text
TVLF(1, 11) = CDate("1/" & Me.TBxDatecontrat.Text) 'ValeurTBx(Me.TBxDatecontrat, vbDate)
TVLF(1, 12) = Me.TBxEnfants.Text
TVLF(1, 13) = Me.TBxAdract.Text
TVLF(1, 14) = Me.TBxCP.Text
TVLF(1, 15) = Me.TBxVille.Text 'TVLF(1, 15) = ValeurTBx(Me.TBxCréele, vbDate)
TVLF(1, 16) = Me.CBxRP.Text
TVLF(1, 17) = ValeurTBx(Me.TBxLoyer, vbCurrency)
TVLF(1, 18) = CDate("1/" & Me.TBxLoyerdepuis.Text)
TVLF(1, 19) = Me.TBxTel.Text
TVLF(1, 20) = Me.TBxEmail.Text
TVLF(1, 21) = Me.TBxProfession.Text
TVLF(1, 22) = Me.TBxEmployeur.Text
TVLF(1, 23) = Me.CBxTypecont.Text
TVLF(1, 24) = Me.CBxStatut.Text
TVLF(1, 25) = CDate("1/" & Me.TBxAnciennete.Text)
TVLF(1, 26) = Me.TBxPays.Text
TVLF(1, 27) = Me.TBxNationalite.Text

TVLF(1, 28) = Me.CBxIBBanque.Text
TVLF(1, 29) = Me.TBxIBAgen.Text
TVLF(1, 30) = Me.TBxIBAdr.Text
TVLF(1, 31) = Me.TBxIBCP.Text
TVLF(1, 32) = Me.TBxIBVille.Text
TVLF(1, 33) = Me.TBxIBNom.Text

TVLF(1, 34) = ValeurTBx(Me.TBxRSalaire, vbCurrency) 'CCur("1/" & Me.TBxRSalaire.Text)
TVLF(1, 35) = ValeurTBx(Me.TBxRAlloc, vbCurrency)
TVLF(1, 36) = ValeurTBx(Me.TBxRRFoncier, vbCurrency)
TVLF(1, 37) = ValeurTBx(Me.TBxRPensions, vbCurrency)
TVLF(1, 38) = ValeurTBx(Me.TBxRRFRN1, vbCurrency)
TVLF(1, 39) = ValeurTBx(Me.TBxRRFRN2, vbCurrency)
TVLF(1, 40) = ValeurTBx(Me.TBxRIRPP, vbCurrency)

TVLF(1, 41) = Me.CBxNom2.Text
TVLF(1, 42) = Me.TBxNomjf2.Text
TVLF(1, 43) = Me.TBxPrénom2.Text
TVLF(1, 44) = Me.TBxDatenaiss2.Text
TVLF(1, 45) = Me.TBxLieunaiss2.Text
TVLF(1, 46) = Me.TBxDeptnaiss2.Text
TVLF(1, 47) = Me.CBxSitufam2.Text
TVLF(1, 48) = Me.CBxContrat2.Text
TVLF(1, 49) = CDate("1/" & Me.TBxDatecontrat2.Text)
TVLF(1, 50) = Me.TBxEnfants2.Text
TVLF(1, 51) = Me.TBxAdract2.Text
TVLF(1, 52) = Me.TBxCP2.Text
TVLF(1, 53) = Me.TBxVille2.Text
TVLF(1, 54) = Me.CBxRP2.Text
TVLF(1, 55) = Me.TBxLoyer2.Text
TVLF(1, 56) = CDate("1/" & Me.TBxLoyerdepuis2.Text)
TVLF(1, 57) = Me.TBxTel2.Text
TVLF(1, 58) = Me.TBxEmail2.Text
TVLF(1, 59) = Me.TBxProfession2.Text
TVLF(1, 60) = Me.TBxEmployeur2.Text
TVLF(1, 61) = Me.CBxTypecont2.Text
TVLF(1, 62) = Me.CBxStatut2.Text
TVLF(1, 63) = CDate("1/" & Me.TBxAnciennete2.Text)
TVLF(1, 64) = Me.TBxPays2.Text
TVLF(1, 65) = Me.TBxNationalite2.Text

TVLF(1, 66) = Me.CBxIBBanque2.Text
TVLF(1, 67) = Me.TBxIBAgen2.Text
TVLF(1, 68) = Me.TBxIBAdr2.Text
TVLF(1, 69) = Me.TBxIBCP2.Text
TVLF(1, 70) = Me.TBxIBVille2.Text
TVLF(1, 71) = Me.TBxIBNom2.Text

TVLF(1, 72) = ValeurTBx(Me.TBxRSalaire2, vbCurrency) 'CCur("1/" & Me.TBxRSalaire.Text)
TVLF(1, 73) = ValeurTBx(Me.TBxRAlloc2, vbCurrency)
TVLF(1, 74) = ValeurTBx(Me.TBxRRFoncier2, vbCurrency)
TVLF(1, 75) = ValeurTBx(Me.TBxRPensions2, vbCurrency)
TVLF(1, 76) = ValeurTBx(Me.TBxRRFRN12, vbCurrency)
TVLF(1, 77) = ValeurTBx(Me.TBxRRFRN22, vbCurrency)
TVLF(1, 78) = ValeurTBx(Me.TBxRIRPP2, vbCurrency)

TVLF(1, 79) = Me.TBxCNom1.Text
TVLF(1, 80) = Me.CBxCNat1.Text
TVLF(1, 81) = CDate("1/" & Me.TBxCDatreal1.Text)
TVLF(1, 82) = CDate("1/" & Me.TBxCDatfin1.Text)
TVLF(1, 83) = ValeurTBx(Me.TBxCRest1, vbCurrency)
TVLF(1, 84) = Me.TBxCNom2.Text
TVLF(1, 85) = Me.CBxCNat2.Text
TVLF(1, 86) = CDate("1/" & Me.TBxCDatreal2.Text)
TVLF(1, 87) = CDate("1/" & Me.TBxCDatfin2.Text)
TVLF(1, 88) = ValeurTBx(Me.TBxCRest2, vbCurrency)
TVLF(1, 89) = Me.TBxCNom3.Text
TVLF(1, 90) = Me.CBxCNat3.Text
TVLF(1, 91) = CDate("1/" & Me.TBxCDatreal3.Text)
TVLF(1, 92) = CDate("1/" & Me.TBxCDatfin3.Text)
TVLF(1, 93) = ValeurTBx(Me.TBxCRest3, vbCurrency)
TVLF(1, 94) = Me.TBxCNom4.Text
TVLF(1, 95) = Me.CBxCNat4.Text
TVLF(1, 96) = CDate("1/" & Me.TBxCDatreal4.Text)
TVLF(1, 97) = CDate("1/" & Me.TBxCDatfin4.Text)
TVLF(1, 98) = ValeurTBx(Me.TBxCRest4, vbCurrency)
TVLF(1, 99) = Me.TBxCNom5.Text
TVLF(1, 100) = Me.CBxCNat5.Text
TVLF(1, 101) = CDate("1/" & Me.TBxCDatreal5.Text)
TVLF(1, 102) = CDate("1/" & Me.TBxCDatfin5.Text)
TVLF(1, 103) = ValeurTBx(Me.TBxCRest5, vbCurrency)
TVLF(1, 104) = ValeurTBx(Me.TBxCPens, vbCurrency)

TVLF(1, 105) = Me.CBxIProp1.Text
TVLF(1, 106) = Me.TBxIDes1.Text
TVLF(1, 107) = ValeurTBx(Me.TBxIVal1, vbCurrency)
TVLF(1, 108) = Me.TBxIAdr1.Text
TVLF(1, 109) = ValeurTBx(Me.TBxILoy1, vbCurrency)
TVLF(1, 110) = Me.CBxIProp2.Text
TVLF(1, 111) = Me.TBxIDes2.Text
TVLF(1, 112) = ValeurTBx(Me.TBxIVal2, vbCurrency)
TVLF(1, 113) = Me.TBxIAdr2.Text
TVLF(1, 114) = ValeurTBx(Me.TBxILoy2, vbCurrency)
TVLF(1, 115) = Me.CBxIProp3.Text
TVLF(1, 116) = Me.TBxIDes3.Text
TVLF(1, 117) = ValeurTBx(Me.TBxIVal3, vbCurrency)
TVLF(1, 118) = Me.TBxIAdr3.Text
TVLF(1, 119) = ValeurTBx(Me.TBxILoy3, vbCurrency)
TVLF(1, 120) = Me.CBxIProp4.Text
TVLF(1, 121) = Me.TBxIDes4.Text
TVLF(1, 122) = ValeurTBx(Me.TBxIVal4, vbCurrency)
TVLF(1, 123) = Me.TBxIAdr4.Text
TVLF(1, 124) = ValeurTBx(Me.TBxILoy4, vbCurrency)
TVLF(1, 125) = Me.CBxIProp5.Text
TVLF(1, 126) = Me.TBxIDes5.Text
TVLF(1, 127) = ValeurTBx(Me.TBxIVal5, vbCurrency)
TVLF(1, 128) = Me.TBxIAdr5.Text
TVLF(1, 129) = ValeurTBx(Me.TBxILoy5, vbCurrency)

TVLF(1, 130) = Me.CBxPATit1.Text
TVLF(1, 131) = Me.CBxPADes1.Text
TVLF(1, 132) = Me.TBxPAOrg1.Text
TVLF(1, 133) = ValeurTBx(Me.TBxPAMon1, vbCurrency)
TVLF(1, 134) = ValeurTBx(Me.TBxPADat1, vbDate)
TVLF(1, 135) = ValeurTBx(Me.TBxPAEpm1, vbCurrency)
TVLF(1, 136) = Me.CBxPATit2.Text
TVLF(1, 137) = Me.CBxPADes2.Text
TVLF(1, 138) = Me.TBxPAOrg2.Text
TVLF(1, 139) = ValeurTBx(Me.TBxPAMon2, vbCurrency)
TVLF(1, 140) = ValeurTBx(Me.TBxPADat2, vbDate)
TVLF(1, 141) = ValeurTBx(Me.TBxPAEpm2, vbCurrency)
TVLF(1, 142) = Me.CBxPATit3.Text
TVLF(1, 143) = Me.CBxPADes3.Text
TVLF(1, 144) = Me.TBxPAOrg3.Text
TVLF(1, 145) = ValeurTBx(Me.TBxPAMon3, vbCurrency)
TVLF(1, 146) = ValeurTBx(Me.TBxPADat3, vbDate)
TVLF(1, 147) = ValeurTBx(Me.TBxPAEpm3, vbCurrency)
TVLF(1, 148) = Me.CBxPATit4.Text
TVLF(1, 149) = Me.CBxPADes4.Text
TVLF(1, 150) = Me.TBxPAOrg4.Text
TVLF(1, 151) = ValeurTBx(Me.TBxPAMon4, vbCurrency)
TVLF(1, 152) = ValeurTBx(Me.TBxPADat4, vbDate)
TVLF(1, 153) = ValeurTBx(Me.TBxPAEpm4, vbCurrency)


If LCouF = 0 Then
    CLsF.ValeursVers TVLF
    CLsF.Lignes.Add.Range.Value = TVLF ' . value2 => ancienne version d'excel ne changeant par le format
    CLsF.Actualiser
    Me.LabNbfournisseur = CLsF.Lignes.Count 'comptage nombre de fournisseur
    Set DicF = DicoSujet(CLsF.Item(CBxNom).SujetBdD)
Else
    CLsF.Lignes(LCouF).Range.Value = TVLF
    End If

Unload Me
FRmGlobal.Show

End Sub
 

gbstyle

XLDnaute Impliqué
Toute mes lignes demandant une Cdate vierge ne fonctionne pas.
J'ai également testé ta procédure ce matin et pour moi meme en saisissant une date par un moi ca ne fonctionne pas.
mon objectif était de gagner du temp de saisie ou du temp de traitement
en saisissant 10/16 le résultat attendus est oct 16 aprés mise à jour du Cbn Modifier tout en sachant qu'il est possible que cette valeur soit vierge dans certain cas.
 

gbstyle

XLDnaute Impliqué
Afin de faciliter les chose je saisierai les date comme ceci 01/10/16 au moins je suis sur que tout est pris en compte.

J'ai également du essayer de faire afficher dans des textbox la somme de 2 autres
dans mon TVLF j'ai ajouter 3 colonne pour effectuer mes calcul de ligne

A la fin de ma commande garnir j'ai modifier les constante afin de ne pas supprimer mes calcul mais ca ne fonctionne pas.

If LCouF = 0 Then
CLsF.ValeursVers TVLF
CLsF.Lignes.Add.Range.Resize(, 158).Value = TVLF au lieu de CLsF.Lignes.Add.Range.Value = TVLF
Mais mes formules en colonne 159 160 161 sont supprimé ce qui fait que j'ai l'ancienne valeur affiché et pas la mise à jour
1584961565006.png


La colonne S_Revenus 159 = a la somme de plusieur cellule
La colonne S_Charge 160 = 154+155
161 = 160/159

l'objectif et que quand je modifie un Revenus et que je fais une mise à jour avec la cmd button les infos se mette à jour dans l'usf
 

Dranreb

XLDnaute Barbatruc
Je ne vois pas pourquoi ceci ne marcherait pas chez toi.

Des formules à références structurées communes à toutes les lignes existantes sont normalement reproduites sur une ligne ajoutée.
 

Pièces jointes

  • Test.xlsm
    19.6 KB · Affichages: 19

Dranreb

XLDnaute Barbatruc
Maintenant on peut aussi accepter le mois en chiffre si tu veux.
Mais il vaut mieux que le séparateur soit un espace, pas "/", parce qu'avec un seul ça signifie jour/mois de l'année en cours.
 

Pièces jointes

  • Test.xlsm
    20.1 KB · Affichages: 3

gbstyle

XLDnaute Impliqué
En effet, est ce que je peux te faire parvenir mon fichier, tu verra que dans la mise à jour du TBL que meme après mise à jour du tableau es formules s'efface et sont remplacer par les valeurs tbx, je ne comprend pas
J'ai 1 problème principale :
- la possibilité d'avoir les mise à jour de mes cellule en fonction des modification de revenus ou charge suite à cmd btn modifier (tu verras qu' en fin de procédure sur la commande btn je fais un fermer ouvrir pour essayer de prendre en compte les modification

Si jamais tu as 2mn pour regarder car depuis ce matin je me prend la tête sur le sujet ggrrrr
ca te permettra de voir l'évolution du projet, toi qui est à l'origine ;)

Si tu vois quelque chose d'incohérent n'hésite pas, c'est normal que l'userform évolue j'ai effectué quelque changement.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Pourquoi dans la CBnValiderF_Click, il y a en création
CLsF.Lignes.Add.Range.Resize(, 158).Value = TVLF
tandis qu'en modification, au lieu de :
CLsF.Lignes(LCouF).Range.Resize(, 158).Value = TVLF
qui n'écraserait pas les formules il y a toujours :
CLsF.Lignes(LCouF).Range.Value = TVLF ?
 

gbstyle

XLDnaute Impliqué
ah lala oui en effet j'étais pas du tout sur ca je suis passéer complètement au travers.
encore merci Dranreb tu vas trop vite c'est de la folie :/ rien ne t'échape
Crois tu qu'il soit possible que quand je clique en fin de procédure de modification aprés fermeture et ouverture de l'userform pour la mise a jour il est possible de rouvrir le usf sur le dernier nom qui as eu la modification ?
 

Dranreb

XLDnaute Barbatruc
Jamais je ne décharge un UserForm pour le réafficher aussitôt.
À quoi servent les ClsX.Actualiser si tu n'utilise pas derrière ces couteuses actualisations et l'oblige à refaire carrément tout depuis le début ?
Si c'est pour nettoyer des choix pour certains tableaux fais confiance aux ClsX.Nettoyer.
 
Dernière édition:

Statistiques des forums

Discussions
312 386
Messages
2 087 848
Membres
103 668
dernier inscrit
Aekhassen