Calcul basique dans userform[NON RESOLU]

ELSONCe

XLDnaute Junior
Bonjour à tous,

Je débute dans le VBA et ses variantes et me trouve confronté à un problème tout bête : comment faire des calculs dans ces merveilleuses petites fenêtres qui en plus d'êtres usuelles donnent du cachet à notre application ?? :)

Je me suis aventuré dans divers essais en vain...

Vous trouverez ci-joints, chers excelliens, mes fichiers joints avec la description exacte de ce que je recherche.

Vous remerciant par avance pour les explications qui sont toujours aussi utiles qu'efficaces.

Bonne journée !


Cordialement
 

Pièces jointes

  • CALCUL BARREAUDAGE.xls
    61 KB · Affichages: 188
  • CALCUL BARREAUX.zip
    275.4 KB · Affichages: 93
Dernière édition:

13GIBE59

XLDnaute Accro
Re : Calcul basique dans userform

Bonjour ELSONCe.

Les "merveilleuses petites fenêtres" dont tu parles sont des textbox.
Pour faire des calculs, rien de plus simple. Tu utilises la propriété "Value" des textbox dans ton code, et les opérateurs + - * /
Un exemple est plus parlant :

Private Sub TextBox1_Change()
TextBox2.Value = TextBox3.Value / TextBox4.Value
End Sub
(Quand la valeur de la textbox1 change, la valeur de la textbox2 est égale à la valeur de la textbox3, divisée par celle de la textbox4).

C'est le principe général. Cela dit, je n'ai pas compris le principe de calcul de ton fichier...

Bon courage.
 

Gorfael

XLDnaute Barbatruc
Re : Calcul basique dans userform

Salut ELSONCe et le forum
Je suis persuadé que ceux qui utilisent ton fichier comprennent de quoi tu parle. Mais n'étant ni utilisateur, ni devin, ni télépathe, je ne sais pas ce que tu veux !
C'est comme à l'école : pour résoudre un problème, il faut des données, et une question. Comme on est mauvais, faut expliquer ce que tu comptes obtenir.
A+
 

laetitia90

XLDnaute Barbatruc
Re : Calcul basique dans userform

bonjour ELSONCe , 13GIBE59, Gorfael
pas si simple que cela les calculs dans des texboxs il faut savoir que dans un user..tout est considere comme du texte donc convertir en expression numerique dans l'exemple donne j'utilise cdbl et non val qui accepte que le point
dans textbox3 je fais la somme de textbox1+ textbox2 en "live" cela veut dire je change une valeur dans textbox1 ou texbox2
regarde seulement le code que cela demande sans generer une erreur
et encore j'utilise
Code:
 On Error Resume Next
pour pas generer d'erreurs si une des 2 textbox est vide
c'est pas si simple que cela i parait c'est pour cela si beaucoup de textboxs on utilise un module de classe
c'est pour cela il faut être trés explicit dans ta demande
attention dans l'exemple je simplifie pas volontairement:p


ps modifier j'ai mis 2 fois la meme ligne de code
 

Pièces jointes

  • Classeur1.zip
    11.1 KB · Affichages: 51
  • Classeur1.zip
    11.1 KB · Affichages: 57
  • Classeur1.zip
    11.1 KB · Affichages: 52
Dernière édition:

laetitia90

XLDnaute Barbatruc
Re : Calcul basique dans userform[NON RESOLU]

rebonjour tous
a mon avis il faut partir sur un seul user bien plus simple
autre question quel calcul tu applique pour avoir 5.69 ???
c'est quoi 75*70 ect.. moi pas bricoleuse:confused:

si pas de reponse regarderais demain matin pas le temps aujourd'hui
 

Pièces jointes

  • Copie de CALCUL BARREAUDAGE-1.zip
    15.6 KB · Affichages: 43
  • Copie de CALCUL BARREAUDAGE-1.zip
    15.6 KB · Affichages: 44
  • Copie de CALCUL BARREAUDAGE-1.zip
    15.6 KB · Affichages: 44

ELSONCe

XLDnaute Junior
Re : Calcul basique dans userform[NON RESOLU]

rebonjour tous
a mon avis il faut partir sur un seul user bien plus simple
autre question quel calcul tu applique pour avoir 5.69 ???
c'est quoi 75*70 ect.. moi pas bricoleuse:confused:

si pas de reponse regarderais demain matin pas le temps aujourd'hui

Bonjour Laetitia,

Tout d'abord un grand merci !!! :)

Les 75*70 et autres sont des désignations de profil pour lesquelles mes formules de calcul sont différentes que voici :

75*70 = (( X - 150 ) - 110 ) / 130
90*70 = (( X - 180 ) - 110 ) / 130
110*70 = (( X - 220 ) - 110 ) / 130

( X = Largeur HORS-TOUT )

Voilà j'espère avoir répondu au mieux à vos interrogations. :p

Cordialement
 

laetitia90

XLDnaute Barbatruc
Re : Calcul basique dans userform[NON RESOLU]

re, tous
comme j'ai compris
j'ai considere 150,180,220 comme des constantes ... pas sur??
la variable x pas mis en public
 

Pièces jointes

  • Copie de CALCUL BARREAUDAGE-1.zip
    20.4 KB · Affichages: 53
  • Copie de CALCUL BARREAUDAGE-1.zip
    20.4 KB · Affichages: 51
  • Copie de CALCUL BARREAUDAGE-1.zip
    20.4 KB · Affichages: 54

YANN-56

XLDnaute Barbatruc
Re : Calcul basique dans userform[NON RESOLU]

Bonjour ELSONCe, 13GIBE59, Gorfael, Laetitia, et à ceux qui passeront par là,

Coucou particulier à voisine du dessus qui n'est pas bricoleuse,
mais qui a de beau outils dans sa caisse Vba... :) :) :)

ELSONCe:
Je me permets de ramener ma fraise dans ton Fil pour deux raisons:
Complicité régionale, et mes 35 ans dans l'Aluminium et la Miroiterie.
(Gros ouvrages.... Pas de p.v.c.... , mais cela ne change pas grand-chose)

Je pratique un peu le VBA, et aidé par ma connaissance du métier,
je vais pouvoir te construire un petit exemple.

En premier lieu; il me semble qu'il y ait confusion entre intervalles et nombre de barreaux.
Si j'ai bien vu: Il y a de ce fait un de trop; ton patron ne va pas être content!

En second lieu; tu fais un calcul d'axes en axes sans tenir compte de la section des barreaux.

En troisième; tu vas devoir incorporer la notion de barreaudages fixés sur dormant ou ouvrant.
(Porte ouvrant à l'anglaise, châssis à projection... Et c.)

De la même façon, il ne faut pas figer une appli!
Par exemple: Le dormant de type "Rénovation" peut avoir une section modifiée par suite
d'un changement de fournisseur, ou les espaces entre barreaux suivant réglementation à appliquer.

D'où l'intérêt de mettre les éléments de calcul du clair de vitrage dans une feuille Excel compréhensible
et facilement accessible pour tous les utilisateurs, sans avoir à venir bidouiller les Codes.

Dernier point:
Il n'est pas souhaitable de passer par une boite de dialogue pour entrer les dimensions.
Cela fait plus "Pro", mais c'est contraignant!

Pour les barreaudages contre l'effraction, O.K. car ils sont rarissimes.
Mais il serait intéressant de partir sur une base qui permettrait par la suite,
de pouvoir l'extrapoler aux garde-corps. (On ne sait jamais où après-demain nous bosserons)

15 Porte-fenêtres de largeur différente
6 Coursives .......................................
23 Loggias ........................................
Lieu publique ou lieu privé .........Et c.

Nous en sommes déjà à 44 saisies x 3 minimum de TextBoxes à remplir!!! . Pffffff!

Le mec, il remplit les 44 lignes de sa feuille; il clique sur le bouton "O.K."
Un type de pose forfaitaire lui est proposé.... Il accepte ou modifie ponctuellement.

Il valide......... Et Vlan le Calcul est fait et édité.

J'espère avoir le temps de te proposer un Classeur en soirée.

Désolé d'avoir été si long,

Amicalement,

Yann
 

ELSONCe

XLDnaute Junior
Re : Calcul basique dans userform[RESOLU]

Bonjour à tous,

Un grand MERCI à Laëtitia pour cette merveilleuse solution qui force le respect :) Et une petite dédicace à Yann que je remercie également vivement pour ses commentaires. Car oui tu as raison, ma seule volonté étant d'avoir le code VBA que Mlle Laëtitia m'a fourni avec la plus grande exactitude. Cela m'a permis de revoir mon process et du coup d'optimiser mon projet de départ.

Encore Merci à vous deux !!

Cordialement Cédric
 

laetitia90

XLDnaute Barbatruc
Re : Calcul basique dans userform[NON RESOLU]

re, en regardant de plus prés j'ai fais une erreur sur les calculs
en effet
je prends exemple de dormant 110*70
je rentres 1500 j'ai nb..barreaux =10 c'est faux on devrait avoir 9
systematiquement je rajoute 1 pas bon dans ce cas j'ai un entier (9)
il faut corriger comme cela
dans user
Code:
Private Sub T1_Change()
On Error Resume Next
T2 = CDbl(((T1 - T3) - 110) / 130)
If T2 <> CInt(T2) Then T2 = Int(T2) + 1
End Sub

dans module de classe

Code:
Public WithEvents lbs As MSForms.OptionButton
Private Sub lbs_Change()
On Error Resume Next
Choix.Frame2.Visible = True: Choix.Frame2.T1.SetFocus
If lbs.Name = "P1" Then x = 180
If lbs.Name = "P2" Then x = 180
If lbs.Name = "P3" Then x = 150
If lbs.Name = "P4" Then x = 220
Choix.T3 = x
Choix.T2 = CDbl(((Choix.T1 - Choix.T3) - 110) / 130)
If Choix.T2 <> CInt(Choix.T2) Then Choix.T2 = Int(Choix.T2) + 1
End Sub

sorry:(
 

Statistiques des forums

Discussions
312 338
Messages
2 087 396
Membres
103 534
dernier inscrit
Kalamymustapha