Combobox + Textbox : Chiffrage devis [Résolu]

cs_marou76 13 Messages postés mercredi 1 décembre 2010Date d'inscription 30 décembre 2010 Dernière intervention - 14 déc. 2010 à 11:27 - Dernière réponse : lolokun 1241 Messages postés mardi 10 octobre 2006Date d'inscription 27 août 2013 Dernière intervention
- 14 déc. 2010 à 16:20
Bonjour le forum,

Je vous sollicite ce matin car je rencontre deux problémes dans mon application excel devis (userform + tableau excel). Voici le lien de mon fichier exemple.

1er probléme :
Comment peut-on dans une textbox limiter un résultat à 3 chiffres aprés la virgule ?

2éme probléme :
Dans le fichier en pièce jointe (en le consultant on comprend mieux), je chiffre les recépteurs H.T selon le nombre de visite effectuées. Si il n'y en a qu'une alors le prix se trouve cellule H10. Si il y en a plus, les suivantes seront au prix de la cellule H11.
Pouvez-vous m'aider à réaliser ce petit calcul svp ?

Merci Beaucoup !!
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
lolokun 1241 Messages postés mardi 10 octobre 2006Date d'inscription 27 août 2013 Dernière intervention - 14 déc. 2010 à 15:44
3
Merci
Re,

Alors pour une comparaison de chaîne, plutôt que value c'est le paramètre "text" :

If Presta_elec1.text = "Récepteur H.T."="" then (à ce propos, attention à la casse et aux accents, es-tu sûr que c'est bien écrit comme cela ?)

A quoi correspondent tes autres variables? textbox aussi?si tu veux retirer 1, il faudra surement convertir..


L'expérience, c'est une connerie par jour, mais jamais la même..

Merci lolokun 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de lolokun
Meilleure réponse
cs_marou76 13 Messages postés mercredi 1 décembre 2010Date d'inscription 30 décembre 2010 Dernière intervention - 14 déc. 2010 à 16:03
3
Merci
Voici le code qui me permet de réaliser ce calcul:

Private Sub Quantitatif_elec1_Change()
    
    UserForm1.Quantitatif_elec1.Value = Replace(UserForm1.Quantitatif_elec1.Value, ".", ",")
    If Quantitatif_elec1.Value "" Then Annee_elec1 "": Exit Sub
    If Presta_elec1.Text = "Récepteur H.T." Then
    Annee_elec1.Value = Round((Unit_elec1.Value + (Quantitatif_elec1.Value - 1) * Range("H11") * Visite_elec1.Value), 2): Exit Sub
    Else: Annee_elec1.Value = Round(Unit_elec1.Value * Quantitatif_elec1.Value * Visite_elec1.Value, 2): Exit Sub
    End If
    End Sub


Merci pour ton aide.

Concernant le nombre de chiffre aprés la virgule, j'ai utilisé la fonction "round(,)" permettant d'avoir une valeur arrondie.

Merci!!!!

Merci cs_marou76 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de cs_marou76
lolokun 1241 Messages postés mardi 10 octobre 2006Date d'inscription 27 août 2013 Dernière intervention - 14 déc. 2010 à 11:40
0
Merci
Bonjour,

pour ton problème 1, la fonction format te permettra de limiter à 3 chiffres après la virgule.

Pour le problème 2 : une condition doit suffire
if visite=1 then prix=(H10) else prix=(H11) end if


L'expérience, c'est une connerie par jour, mais jamais la même..
Commenter la réponse de lolokun
cs_marou76 13 Messages postés mercredi 1 décembre 2010Date d'inscription 30 décembre 2010 Dernière intervention - 14 déc. 2010 à 11:47
0
Merci
Merci pour ton élement de réponse.
Je vais essayer la fonction format, cependant j'ai essayé la condition pour le probléme 2 mais cela ne fonctionne pas.
Est-il possible d'écrire :

If Quantitatif_elec1.Value "" Then Annee_elec1 "" ': Exit Sub
    Else If Quantitatif_elec1.Value = "Récepteur H.T." Then
    Annee_elec1.Value = (Unit_elec1.Value + (Quantitatif_elec1.Value - 1) * Presta_elec1.List(Presta_elec1.ListIndex + 1, 6)) * Visite_elec1.Value ': Exit Sub
    Else: Annee_elec1.Value = Unit_elec1.Value * Quantitatif_elec1.Value * Visite_elec1.Value
    End If

Merci.
Commenter la réponse de cs_marou76
lolokun 1241 Messages postés mardi 10 octobre 2006Date d'inscription 27 août 2013 Dernière intervention - 14 déc. 2010 à 11:55
0
Merci
Ton "Quantitatif_elec1" est un textbox ou bien une combo? ne faudrait-il pas remplacer value par la propriété "text"?

De plus c'ets pas logique dans ton if :
tu fais une comparaison de chaîne:
Quantitatif_elec1.Value = "Récepteur H.T."
et ensuite tu retire 1 à cette chaîne:
Quantitatif_elec1.Value - 1
.
Donc est-ce bien une chaîne de caractère?

Cela ne fontcionne pas c'est un peu vague, tu as un message d'erreur?
Je te conseille de rajouter des msgbox dans ton code pour voir où tu passes..


L'expérience, c'est une connerie par jour, mais jamais la même..
Commenter la réponse de lolokun
cs_marou76 13 Messages postés mercredi 1 décembre 2010Date d'inscription 30 décembre 2010 Dernière intervention - 14 déc. 2010 à 15:33
0
Merci
Mon "Quantitatif_elec1" est une textboc contenant la quantité d'élements à visiter.

Tu as bien remarqué l'erreur que j'ai faite, il s'agissait plutot de :

Presta_elec1.Value = "Récepteur H.T."


J'ai une erreur de syntaxe lors de l'execution de l'userform. J'ai passé toute la journée dessus sans rien obtenir;
Commenter la réponse de cs_marou76
lolokun 1241 Messages postés mardi 10 octobre 2006Date d'inscription 27 août 2013 Dernière intervention - 14 déc. 2010 à 16:20
0
Merci
Si la valeur arrondie ne te convient pas, tu peux utiliser la fonction format comme ceci:
MsgBox Format(CSng(tachaîne)"#.###")

A quoi correspondent tes variables? car tu utilises la propriété value es-tu bien sur qu'elle contienne ce que tu veux ? -> en vb6, l'objet textbox n'a qu'une propriété text, pas de propriété value... Après je ne connais pas assez bien le vba.

Regardes du côté des opératerus de conversion de chaîne..(cint, clng, csng )

L'expérience, c'est une connerie par jour, mais jamais la même..
Commenter la réponse de lolokun

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.