Combobox + Textbox : Chiffrage devis

Résolu
cs_marou76 Messages postés 13 Date d'inscription mercredi 1 décembre 2010 Statut Membre Dernière intervention 30 décembre 2010 - 14 déc. 2010 à 11:27
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre 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 !!

7 réponses

lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
14 déc. 2010 à 15:44
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..
3
cs_marou76 Messages postés 13 Date d'inscription mercredi 1 décembre 2010 Statut Membre Dernière intervention 30 décembre 2010
14 déc. 2010 à 16:03
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!!!!
3
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
14 déc. 2010 à 11:40
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..
0
cs_marou76 Messages postés 13 Date d'inscription mercredi 1 décembre 2010 Statut Membre Dernière intervention 30 décembre 2010
14 déc. 2010 à 11:47
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
14 déc. 2010 à 11:55
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..
0
cs_marou76 Messages postés 13 Date d'inscription mercredi 1 décembre 2010 Statut Membre Dernière intervention 30 décembre 2010
14 déc. 2010 à 15:33
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;
0
lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
14 déc. 2010 à 16:20
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..
0
Rejoignez-nous