Combobox + Textbox : Chiffrage devis [Résolu]

Messages postés
13
Date d'inscription
mercredi 1 décembre 2010
Dernière intervention
30 décembre 2010
- - Dernière réponse : lolokun
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Dernière intervention
27 août 2013
- 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
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Dernière intervention
27 août 2013
6
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..

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 87 internautes nous ont dit merci ce mois-ci

Commenter la réponse de lolokun
Messages postés
13
Date d'inscription
mercredi 1 décembre 2010
Dernière intervention
30 décembre 2010
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!!!!

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 87 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_marou76
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Dernière intervention
27 août 2013
6
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
Messages postés
13
Date d'inscription
mercredi 1 décembre 2010
Dernière intervention
30 décembre 2010
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
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Dernière intervention
27 août 2013
6
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
Messages postés
13
Date d'inscription
mercredi 1 décembre 2010
Dernière intervention
30 décembre 2010
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
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Dernière intervention
27 août 2013
6
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.