Calcul integré au code d'une textbox

Roupitoux

XLDnaute Nouveau
Bonjour à tous,

J'ai en faite 2 problèmes:

Le premier pas trés compliqué je pense mais au dessus de mes capacités, j'ai créé un userform avec plusieurs checkbox et je veux renvoyer la valeur (le prix dans mon exemple) dans une textbox et dans une cellule au format numérique.
On ne pourra selectionner qu'un seul choix.

Le deuxième, je souhaiterais intégrer un calcul simple directement dans une textbox selon les valeurs des cellules excel (qui peuvent changer).

Je n'ai pas trouver de sujet similaire et je galère malgrés les differents code que j'ai pu trouver sur divers forum.

Merci par avance!
 

Pièces jointes

  • Userform et Textbox.xlsx
    19.8 KB · Affichages: 26

Staple1600

XLDnaute Barbatruc
Re : Calcul integré au code d'une textbox

Re

Pourquoi n'as tu pas intégré de userform dans ton classeur ?
(Dans Excel, faire ALT+F11 puis Insertion/Userform ensuite ajouter les contrôles nécessaires (TextBox, CheckBox CommandButton) pour qu'il ressemble à l'ébauche qu'il y a sur ta feuille)

EDITION
Voici un exemple de que tu devrais arriver à obtenir
01ExempleUSF.png

Une fois que tu auras crées ton Userform et mis des données sur la feuille Données , on pourra commencer à t'aider ;)
 
Dernière édition:

Roupitoux

XLDnaute Nouveau
Re : Calcul integré au code d'une textbox

En fait ce n'est bien sur qu'un exemple mais j'ai créé mon formulaire comme ça où je clic sur un bouton et il apparait mon userform.

En réalité j'ai des images dans mon userform et chaque checkbox correspondent à une image qui doit renvoyer une valeur selon le choix.
Pareil pour les textbox qui sont directement dans ma feuille excel, c'est une question de présentation.
Je souhaiterais vraiment garder cette présentation et dans la feuille "Données" il n'y a rien parceque c'est pour autre chose j'aurais dû l'effacer...

Est ce possible?
 

Staple1600

XLDnaute Barbatruc
Re : Calcul integré au code d'une textbox

Re

- Tu parles du Userform, mais il n'y en a pas dans ta pièce jointe ??
Ce que tu appelles Userform c'est que tu as mis sur ta feuille nommée Feuil1 ?

- Tu parles d'images également et il n'y a pas non plus d'images dans ton classeur...

- Où sont les noms des fruits et leurs prix ?

Je te suggère de joindre une piéce jointe un peu plus étoffée et aboutie avec tous les éléments nécessaires pour faire nos tests et tender de t'aider.
 
Dernière édition:

Roupitoux

XLDnaute Nouveau
Re : Calcul integré au code d'une textbox

Décidément! J'ai bien fait un userform que j'ai du refaire puisque je n'avais pas enregistré mon fichier avec les macros...je ne comprenais pas! voila qui est réparé.
Je n'ai pas mis les images (inutile) le prix a afficher est directement ecrit dans les checkbox.

Merci par avance
 

Pièces jointes

  • Userform et Textbox.xlsm
    28.2 KB · Affichages: 26
  • Userform et Textbox.xlsm
    28.2 KB · Affichages: 31
  • Userform et Textbox.xlsm
    28.2 KB · Affichages: 35

Staple1600

XLDnaute Barbatruc
Re : Calcul integré au code d'une textbox

Re


Voila qui est mieux

Voici un début de piste
Ci-dessous code pour le bouton OK sur l'userform
(à mettre donc dans le code de l'userform)
Code:
Private Sub CommandButton1_Click()
Dim ctrl As MSForms.Control, chbox As MSForms.CheckBox
For Each ctrl In Fruits.Controls
    If TypeOf ctrl Is MSForms.CheckBox Then
            If ctrl.Value Then
                Range("G13") = CDbl(Split(Split(ctrl.Caption, "(")(1))(0)) 
            End If
        End If
    Next ctrl
End Sub

Mais que se passera-t-il si on coche plusieurs CheckBoxs simultanément ?
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Calcul integré au code d'une textbox

Re


Oui j'ai testé et cela fonctionne ;)
(Petite précision: j'avais oublié de retirer le * 2 que j'avais mis pour test, mais j'ai édité mon précédent message)
mais cela ne change rien au fait que la cellule G13 prend la valeur du prix correspondant à la checkbox cochée.

Et c'est tout ce que fait le code pour le moment (c'est pour cela que je disais plus bas: début de piste ;) )

NB: Tu as bien mis le code dans le code de l'userform (et pas dans un module standard) ?

La preuve en image que c'est OK chez moi
01userform.png
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Calcul integré au code d'une textbox

Re

Pour ton second problème, une proposition de modification de ton code pour la CheckBox sur la feuille
(dans le code de la feuille donc, copier/coller à la place du code existant celui-ci)
Code:
Private Sub CheckBox1_Click()
If Me.CheckBox1 = False Then
        Me.TextBox2.Enabled = False                      'Désactiver
        Me.TextBox2.BackColor = RGB(211, 211, 211) 'Fond gris clair
        Me.TextBox2 = ""
    Else
        Me.TextBox2.Enabled = True                       'Activer
        Me.TextBox2.BackColor = RGB(255, 255, 255) 'Fond blanc
        Me.TextBox2 = Application.Sum(Range("L21:L23")) * Range("L24")
        Range("E25") = CDbl(Me.TextBox2.Value)
        Range("E25").NumberFormat = "# ##0.00"
End If
End Sub
 

Roupitoux

XLDnaute Nouveau
Re : Calcul integré au code d'une textbox

Bonjour Staple16000,

J'ai beau retourner le problème dans tous les sens, j'ai une fenêtre de débogage qui s'affiche et me surligne en jaune "Range("G13") = CDbl(Split(Split(ctrl.Caption, "(")(1))(0))".
Je l'ai bien copié dans l'Userform, il y a certainement quelque chose que je fais mal mais je ne sais pas quoi...
Par contre c'est nickel pour le 2ème code! merci.
 

Staple1600

XLDnaute Barbatruc
Re : Calcul integré au code d'une textbox

Bonsoir à tous

Roupitoux
Voici une version modifiée pour ajouter la valeur formatée dans la cellule G13 et la TextBox1 de la feuille 1.
Code:
Private Sub CommandButton1_Click()
Dim ctrl As MSForms.Control, chbox As MSForms.CheckBox
For Each ctrl In Fruits.Controls
    If TypeOf ctrl Is MSForms.CheckBox Then
            If ctrl.Value Then
                With Range("G13")
                    .Value = CDbl(Split(Split(ctrl.Caption, "(")(1))(0))
                    .NumberFormat = "# ##0.00"
                    Feuil1.TextBox1 = Format(.Value, "# ##0.00")
                End With
            End If
        End If
    Next ctrl
    Unload Me
End Sub
J'ai testé sur ton fichier (comme déjà précédemment) joint dans le message #7.
-> Test OK

Voici une petit macro pour expliquer la ligne CDbl(Split(Split(ctrl.Caption, "(")(1))(0))
Code VBA:
Sub TestSplit()
Dim Chaine As String, a$, b$
Chaine = "Pomme (0,6 euros)"
a = Split(Chaine, "(")(1)
b = Split(a)(0)
MsgBox "a=" & a & Chr(13) & "b= " & b
'Si on réunit les deux Split, on a
MsgBox Split(Split(Chaine, "(")(1))(0)
End Sub




Il faut donc pour que la syntaxe avec les Split fonctionne avec le userform que les noms des CheckBox soit du type
NomFruitESPACE(0,6 euros) donc par exemple : Pomme (0,6 euros)

C'est bien le cas sur l'userform de la pièce jointe, mais est-ce bien le cas sur l'userform présent dans le fichier que tu testes sur ton PC ?
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 428
Messages
2 088 324
Membres
103 813
dernier inscrit
Lolo280277