Valeur monétaire

accoman

XLDnaute Junior
Bonjour a tous
je souhaiterai pouvoir récupérer la valeur du prix achat(I4),du prix vente(j4) et de la marge(K4) dans l’userform3 mais en monétaire comment dois je modifier mon code
Merci
Cordialement
 

Pièces jointes

  • Gestion.zip
    44.9 KB · Affichages: 62
  • Gestion.zip
    44.9 KB · Affichages: 68
  • Gestion.zip
    44.9 KB · Affichages: 63
G

Guest

Guest
Re : Valeur monétaire

Bonjour,

Deux solution ci-dessous:
Code:
'Si les cellules ne sont pas formatées en monaitaires
Me.Prix_achat = Format(Sheets("Base.Produits").Cells(c.Row, 9), "#,##0.00 €")
'Pour des cellules déjà formatées
     Me.Prix_vente = Sheets("Base.Produits").Cells(c.Row, 10).Text
     Me.Marge = Sheets("Base.Produits").Cells(c.Row, 11).Text

A+
 

accoman

XLDnaute Junior
Re : Valeur monétaire

bonsoir a tous
merci Hasco pour ta reponse tout simple et sa marche.
Et a tout zazar a l’inverse si je veux rentrer un prix a partir d’un Textbox, pour qu’il soit tout de suite en version monétaire avant d’être valider dans une feuille, la formule utiliser s’est la quelle
Merci encore a toute les personnes du forum pour l’aide qu’ils apportent
Amicalement
 
G

Guest

Guest
Re : Valeur monétaire

Bonjour,

D'une certaine façon ni l'une ni l'autre.

Les textbox abritent des valeurs Textuelles, qu'il faut traduire en valeurs numériques pour les passer dans les cellules. Ce sont ces cellules qu'il faut formater soit par VBA, mais c'est rarement vraiment utile, soit par l'interface utilisateur xl, choix qui me parait plus souple et judicieux.

Cherche dans l'aide VBA les fonctions de conversion, Val(), Cdbl(), Ccur() etc... ce sont ces fonctions qu'il faut apprendre à maîtriser, pour les utiliser à bon escient, chacune d'elle ayant ses propres limites suivant le cas.

Faire toujours la différence entre valeurs affichées (Textbox ou cellules), valeurs numériques des cellules (type double) et valeurs numériques de différents types calculées par VBA.


Je te laisse faire tes essais.

A+
 

accoman

XLDnaute Junior
Re : Valeur monétaire

Bonjour a tous
merci Hasco
J'ai mis la fonction CCur , et formater les cellules directement en monétaire, sa fonctionne
Bonne continuation a tous et a bientôt pour de nouvelles aventures
amicalement

j'ai parler trop vite si je ne mais pas de prix je me retrouve avec "erreur d'execution 13, incompatibilité de type" que faut t'il faire comme manip pour ne plus avoir ce message
en vab j'ai mis
.Cells(l, 9) = CCur(Prix_achat) 'Prix d'achat
 
Dernière édition:
G

Guest

Guest
Re : Valeur monétaire

Re,

Faire un test:

If Len(Trim(TextBox1))>0 then Range("A1")= Ccur(TextBox1)
Ou
If Trim(Textbox1)<>"". Then ....

Len -> donne le nombre de caractère saisit
Trim -> supprime les espaces qui pourraient trainer.

De façon générale, ne jamais faire confiance à la saisie utilisateur et tester le contenu des objet d'une manière ou d'une autre.

A+
 
G

Guest

Guest
Re : Valeur monétaire

Re,

Avec cette question, je commence a douté que ce soit toi qui ait fait le reste du code!

Exemple avec Prix_achat pour affichage dans la cellule.
Code:
     If Trim(Prix_achat) <> "" Then .Cells(l, 9) = CCur(Prix_achat) 'Prix d'achat

Pour limiter les possibilités d'erreur de saisie tu peux controler dans l'évènement keypress, les touches frappés par l'utilisateur:

Exemple pour Prix_achat, ne permet que de saisir un chiffre, une virgule ou un point
si le point est saisit il est remplacé par la virgule.

Code:
 Private Sub Prix_achat_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr(1, "0123456789.,", Chr(KeyAscii)) = 0 Then KeyAscii = 0
    If Chr(KeyAscii) = "." Then KeyAscii = Asc(",")
End Sub

Ensuite ré-affichage en format monétaire dans le textbox à la fin de la saisie utilisateur et avant que le focus ne soit déplacer sur le prochain TextBox:

Code:
Private Sub Prix_achat_AfterUpdate()
If Trim(Prix_achat) <> "" Then Prix_achat = Format(CCur(Prix_achat), "#,##0.00 €")
End Sub

Voilà

A+
 

accoman

XLDnaute Junior
Re : Valeur monétaire

re
Je regarde les code qui existe cherche a comprendre leurs roll tâtonnes
mais personnes ne ma fait le codage je m’aide beaucoup du site
Formation Excel VBA JB et quand je bute sur un problème je viens sur ce forum demander des explications ou de l’aide
mais s’est vrais que s’est dans un premier temps au bonheur la chance
et au lieu de mettre une heure a faire un bout de code je met deux jours pas grave j'apprend
Amicalement
 
Dernière édition:

accoman

XLDnaute Junior
Re : Valeur monétaire

Bonjour a tous
Bon le problème de valeur est résolut merci encore à Hasco pour son aide. je vient de constater que je ne récupère pas la valeur de la listBox (Sous-famille) dans ma Base. Produits en H. je ne voie pas ce qui manque. Si quelqu’un pouvais m’éclairer ce serais sympas
Merci
voir fichier attachés dans le premier post
Amicalement
 
G

Guest

Guest
Re : Valeur monétaire

Bonjour,

Je ne comprends pas trop le fonctionnement de création de référence Alpha-> sous-famille. Ni non plus l'utilité d'une listbox pour sous famille puisque tu n'affiche qu'un choix.

Si tu ne le récupère pas c'est parcequ'à aucun moment tu n'as sélectionné ta sous-famille. Ajouter un ou des items, ne les sélectionne pas. Si tu ne cliques pas sur la listbox ou si tu ne modifie pas la propriété ListIndex, aucun choix n'est fait.

Dans tes messages, pourrais-tu être plus précis et nous indiquez au minimum comment se déroule les choses. Nous n'avons pas forcément le temps ou même l'envie de tout décortiquer pour comprendre.

A+
 

accoman

XLDnaute Junior
Re : Valeur monétaire

Re
j'ai 10 catégorie de base qui se compose de 15 familles de produit qui elles même se compose de X sous familles
exemple :
catégorie (produit brut) famille (huiles essentielles) sous famille (huiles essentielles Bio )
catégorie (produit brut) famille (huiles essentielles) sous famille (huiles essentielles naturel)
Chaque sous famille serre de base pour le code produit
huiles essentielles Bio = heb
huiles essentielles naturel = hen
chaque produits et en plusieurs conditionnement 2ml, 5ml, 10ml etc.
donc le code que je recherche et pour une huile essentielle par exemple Heb(référence sous famille )02(référence du conditionnement) 001(code du produit)
Heb02001 Achillée millefeuilles 2ml
Heb05001 Achillée millefeuilles 5ml
etc.
Je n’arrive pas a trouver la manip pour que si je rentre a partir du même userform un produit d’une sous famille il soit automatiquement enregistré sur une page correspondant a la dite sous famille

Pour la question du listBox j’ai voulus mettre un textBox a la place mais je n’ai pas encore réussie, mais je ne perd pas espoir :p
j'espere que mes explication vons permettre de mieux comprendre ce que je souhaite mettre en place
Merci Hasco pour le temps précieux que tu m’accorde
Amicalement
 
G

Guest

Guest
Re : Valeur monétaire

Re,

Ce que je ne comprends pas c'est pourquoi tu ne pars pas de tes listes pour le code.
On choisit une catégorie, une famille, une sous-famille, puis un produit et on obtient la Ref Alpha. En partant de Alpha tu es obligé de remontet la chaine.

M'enfin pour ton problème de récupération de la sous-famille:
Mets un textbox à la place de la listbox et voici le code modifié pour Alpha:

Code:
'Gestion Ref
Private Sub Alpha_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    ligne = Int(Y / (Me.Alpha.Font.Size * 1.2))
    If Me.Alpha.TopIndex >= 0 Then
        temp = Alpha.List(ligne + Me.Alpha.TopIndex)
        Me.Alpha = temp
        Me.Sous_Famille.Text = ""
        For Each c In f.Range("A4:A" & f.[A65000].End(xlUp).Row)
            If c = temp Then Me.Sous_Famille.Text = c.Offset(0, 1)
        Next c
    End If
    'Creation code Alpha
    If Alpha <> "" And Code_ctnce <> "" And Code_produit <> "" Then Reference = Alpha.Value & Code_ctnce.Value & Code_produit.Value
End Sub

Puisque tes codes ALPHA sont uniques et affichés dans l'ordre où ils apparaissent dans la feuille tu pourrais avoir:
Code:
Private Sub Alpha_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    ligne = Int(Y / (Me.Alpha.Font.Size * 1.2))
    If Me.Alpha.TopIndex >= 0 Then
           Me.Sous_Famille.Text = f.Range("A4:A" & f.[A65000].End(xlUp).Row).Cells(ligne + Me.Alpha.TopIndex + 1, 2)
    End If
    'Creation code Alpha
    If Alpha <> "" And Code_ctnce <> "" And Code_produit <> "" Then Reference = Alpha.Value & Code_ctnce.Value & Code_produit.Value
End Sub

A+
 
Dernière modification par un modérateur:

accoman

XLDnaute Junior
Re : Valeur monétaire

Re
Je suis d’accord avec toi sur le principe mais comme je l’ai dit je ne suis pas un pro d’Excel et loin de l'être
Et je dois par la même occasion me compliquer la vie inutilement. Sic
Aurais tu un exemple de se que tu me propose. Je suis près à tous remettre à plat s’il le faut
Ce qui serrai le top s’est que chaque famille de produit soit sur une feuille différente
Amicalement
 

Discussions similaires

Réponses
3
Affichages
279
Réponses
2
Affichages
865

Statistiques des forums

Discussions
312 347
Messages
2 087 503
Membres
103 564
dernier inscrit
Paul 1