Insertion formule mathématique dans formulaire excel

Résolu
cs_tiwan Messages postés 7 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 10 juin 2007 - 6 juin 2007 à 00:42
cs_tiwan Messages postés 7 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 10 juin 2007 - 8 juin 2007 à 00:29
Bonjour,

J'ai besoin de votre aide pour trouver une soution pour insérer une formule mathématique dans un formulaire excel en vb. Etant ultra débutant, je touche le fond....

Mon souci:
J'ai créé un formulaire sous excel pour gérer mes clients et leur facture. Dans cette macro (userform) je souhaite rajouter une zone de texte qui affiche le résultat d'une formule mathématique avec les 4 dernières données rentrées, sans quitter ce formulaire.

Exemple de mon user form: (calcul du prix final selon les objets du client X)

Client:     Monsieur X
quantité objet A:     3
quantité objet B:     2
quantité objet C:    6
quantité objet D:    8

Prix total:  50 

Le 50 étant le résultant du calcul (3*A)+(2*B)+(6*C)+(8*D)   <= en fait c'est cette formule que je veux introduire dans le formulaire .

Est-ce possible ? J'ai trouvé des .calculte, des R1C1 mais je doute que cela corresponde à ce que je veux faire.
Des solutions ?

Merci d'avance

Tiwan

6 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 juin 2007 à 01:22
Salut,

en fait, il faut utiliser Formula.
Exemple : place de A1 à A4 les valeurs de 1 à 4, puis dans A5 : = A1+A2+A3+A4
10 sera inscrit.

Sub Exemple()

    MsgBox Range("A5").Value
    MsgBox Range("A5").Formula
    
End Sub

~
<small>[code.aspx?ID =39466 Mortalino] ~
Colorisation automatique</small>
La 1ère MsgBox te sortira 10, la seconde sortira =A1+A2+A3+A4

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 juin 2007 à 23:31
Salut,

pour l'affichage de données, un simple Label suffira  ;)
Pour le calcul, c'est à toi de lui faire faire.

Si tes données sont décimales, il faudra employer un CDbl (conversion en Double), si ce sont des entiers, c'est le CLng (conversion en Long)

Exemple :
Admettons, tes 4 valeurs sont dans 4 TextBox, non décimales

LeNouveauLabel.Caption = CLng(TextBoxValeur1.Text) + CLng(TextBoxValeur2.Text) + CLng(TextBoxValeur3.Text) + CLng(TextBoxValeur4.Text)

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 juin 2007 à 01:17
Oui, c'est tout à fait possible.

Tu peux faire une fonction.

Private Sub CommandButton1_Click()
    rad.Caption = CLng(objetA.Text) + CLng(objetB.Text) + CLng(objetC.Text) + CLng(objetD.Text)
    rad.BackColor = MyBackColor(CLng(rad.Caption))
End Sub

Private Function MyBackColor(ByVal Valeur As Long) As OLE_COLOR
    MyBackColor = IIf(Valeur >= 40, vbRed, &H8000000F)
End Function

~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
1
cs_tiwan Messages postés 7 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 10 juin 2007
6 juin 2007 à 23:07
ok merci c'est la bonne réponse au problème n°1 mais en fait je me suis mal exprimé.


Dans mon userform je saisis différentes données dont les quantités A B C et D.
Sans sortir de ce userform en continuant ma saisie je souhaite voir le résultat automatique d'une opération entre A, B C et D (et non sa formule)dans une case située en dessous. Seulement je ne sais pas quel objet insérer dans le userform pour afficher ce résultat (cadre ? zone de texte, ref edit ?) ni comment faire le calcul sans sortir de ce userform (et sans autre fenetre popup).

Je sais je ne suis pas simple ^^

Merci d'avance de votre aide,

Tiwan
0

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

Posez votre question
cs_tiwan Messages postés 7 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 10 juin 2007
7 juin 2007 à 00:23
Génial  ça marche !! Merci beaucoup Mortalino

Dans mon cas ce sont des entiers et le calcul est en fait bien plus compliqué qu'une simple addition mais le principe reste le même je pense.

Ca donne pour mon exemple ici:

Private Sub rad_Click()
    rad.Caption = CLng(objetA.Text) + CLng(objetB.Text) + CLng(objetC.Text) + CLng(ObjetD.Text)
End Sub

Et le label créé me renvoit bien la valeur de la somme.

Question subsidiaire (j'avoue ne pas avoir chercher - pas bien)

Il y a t il la possibilité de donner une condition de couleur au label en fonction de la valeur ?
Si par exemple la valeur est supérieure à 40 le fond du label devient rouge ? Je connais le principe sous excel mais pas en vb.
0
cs_tiwan Messages postés 7 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 10 juin 2007
8 juin 2007 à 00:29
Franchement si je pouvais pogrammer à ton niveau j'en serai fier et mes casses tête  n'existeraient plus ^^

Evidemment ta solution ça marche impeccable !!

Merci encore j'aurai mis des semaines à trouver la bonne réponse.
0
Rejoignez-nous