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
C'est quoi le problème ? Tu ne sais même pas affecter à quelque chose une expression calculée ? Tu en as pourtant déjà une : TR(LR, 6) + Détail(12)
Quand elle est dans un module objet tel qu'un module de classe, une Public Function ne s'appelle pas une fonction mais une méthode ou une propriété en lecture seule, afin de toujours rappeler immédiatement et implicitement, dès qu'on en parle, qu'elle ne peut être utilisée que précédée d'un point.
Il faut bien sûr affecter une expression = ValeurTBx(TBx, TypeDon) pour qu'elle soit utilisée. TypeDon est facultatif: vbDouble assumé.
 

gbstyle

XLDnaute Impliqué
ci joint ce que j'ai fait avant ton retour :
VB:
          TR(LR, 8) = TR(LR, 8) + Détail(12)
          TR(LR, 14) = TR(LR, 13) + 30 'manque l'arrondi fin de mois
          TR(LR, 16) = TR(LR, 8) + TR(LR, 11)
          TR(LR, 17) = TR(LR, 16) * 20 / 100
          TR(LR, 18) = TR(LR, 16) + TR(LR, 17)

Par contre comment définir une donnée avec une formule de type Finmois sur excel


Pour la Vbx j'ai essayer de reprendre le modèle depuis tout à l'heure sur ce qu'on avait fait dans le cadre de la fiche fournisseur impossible de réussir a comprendre pourquoi ca ne fonctionne pas donc je vais faire comme on avait définis sur la fiche article je remplirais les cellule par 0 pour dire qu'il y a une information
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Pour obtenir la date de fin du mois M de l'année A, on peut utiliser l'expression DateSerial(A, M + 1, 1) - 1
Pour obtenir la date de fin du mois d'une autre date AD c'est DateSerial(Year(AD), Month(AD) + 1, 1) - 1
Ce serait plus facile et plus concis d'utiliser des ValeurTBx(LaTextBox, LeTypeDeDonnée)
 

gbstyle

XLDnaute Impliqué
Bonjour,
Ci joint j'ai essayé cette écriture mais il me ressort l'année 2000 :/
L'info était d'avoir 30jr fin de mois a compter de la date de facturation dans mon exemple TR(LR,13)=Détail(13) "valeur dans tableau du 08/04/2018

TR(LR, 15) = DateSerial(Détail(13), Détail(13) + 1, 1) - 1
mon résultat attendus devrais être le 31/05/2018

Pout les valeur tbx j'ai regardé encore hier soir mais en vain j'ai meme replongé dans nos première version de base mais nada, on avait prévu de fonctionner avec puisque mise dans le module mais à aucun moment on l'utilise ou alors je n'ai vraiment pas pigé l'utilité
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Tu as mal raisonné par rapport à ce que j'ai dit au poste #363. En tenant compte de l'observation de ChTi160 c'est
DateSerial(Year(Détail(13)), Month(Détail(13)) + 1, 0)
Ce n'est pas de ma faute si tu n'as jamais voulu utiliser cette fonction ValeurTBx.
Tu vois bien qu'elle affecte à sa valeur à retourner au programme appelant une valeur de cellule correcte en fonction d'une TextBox spécifiée en 1er paramètre et un type de donnée facultatif en 2nd, non ? Donc il suffit d'affecter de telles expressions à tes TR.
Il y a un exemple d'une telle affectation depuis le poste #9 ! C'est vieux !
 
Dernière édition:

gbstyle

XLDnaute Impliqué
Ah je sais le problème, je me suis borné avec (Détail13) mais c'est TR(LR,13) qu'il faut que j'utilise mais j'ai mon résultat qui m'emmène au 30/04/2018
TR(LR, 15) = DateSerial(Year(TR(LR, 13)), Month(TR(LR, 13)) + 1, 0)
je souhaiterais avoir 30/05/2018
 

Dranreb

XLDnaute Barbatruc
C'est toujours hors contexte en dehors d'une exécution. Tu a oublié de cliquer dans la marge pour mettre un point d'arrêt.
Pourquoi le fais tu à toutes les lignes de commande ? Bien. Tu as vu que tu n'as pas de date en colonne 13 dans les commandes. Mais pourquoi ne fais tu pas ça plus haut, dans le report des infos de la ligne de facturation ?
 
Dernière édition:

gbstyle

XLDnaute Impliqué
Car pour moi ce sont deux information différentes
TR13 est la date de réception de facturation une données que je viens compléter après l'enregistrement des infos de la commande
TR15 est la date d'échéance et dans ce cas la 30 jours fin de qui se calculera lors de la saisie du TR13
d'ailleur je suis entrain de me dire que si jamais j'ai négocier des délais supérieur tout sera en paramétrer à 30jours ca risque de devenir genant ca.
 

Statistiques des forums

Discussions
312 203
Messages
2 086 196
Membres
103 153
dernier inscrit
SamirN