IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Cherche comment automatiser un calcul


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut Cherche comment automatiser un calcul
    Bonjour le Forum,

    Je cherche comment automatiser un calcul avec un bouton, je m'explique, l'utilisateur rentre des valeurs décimal dans 19 Textbox, puis en appuyant sur un bouton il faut que la valeur finale soit de 1000, mais seules certaines Textbox peuvent être modifiées par ce calcul "X1; X2; X3 et Y1; Y2", tout en gardant le même rapport entre X1; X2; X3 et Y1; Y2. Je pensais incorporer des pourcentages, mais reste le comment.

    Voici le code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      If X3 = 0 And X2 = 0 And X1 = 0 Or Y1 = 0 And Y2 = 0 Then
                Valeure.Text = Str(CDec(0))
            Else
                Valeure.Text = CStr(CDec((X3 + X2 + X1) / (Y1 + Y2)))
            End If
     
     
      RESULTAT.Text = CStr(X3 + X2 + X1 + Y1 + Y2 + B1 + A1 + A2 + D1 + D2 + D3 + D4 + J1 + J2 + J3 + J4 + Z1 + Z2 + V)
    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 540
    Par défaut
    Citation Envoyé par Tempus01 Voir le message
    mais seules certaines Textbox peuvent être modifiées par ce calcul "X1; X2; X3 et Y1; Y2", tout en gardant le même rapport entre X1; X2; X3 et Y1; Y2. Je pensais incorporer des pourcentages, mais reste le comment.
    je ne comprends pas bien le problème.
    Si certaines zones de saisies ne sont pas renseignées il suffit de tester si la valeur est égale à à 0.
    Ensuite faire une boucle for..each pour parcourir les contrôles du formulaire, si c'est une zone de texte alors agir en conséquence.
    Au besoin utiliser une pile d'argument ou bien la classe StringBuilder

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    Bonjour Mat.M,

    Une fois que l'utilisateur a fini de remplir les Textbox, le total est plus ou moins proche de 1000, il faut un bouton qui fasse en sorte que le total arrive à 1000, les seules valeurs qui peuvent être modifiées sont X1; X2; X3 et Y1; Y2.

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 987
    Par défaut
    A priori, tu sais déjà quand tu n'a pas 1000.
    Une simple soustraction va te donner la différence.

    Reste cette notion de rapport qui n'est pas très clair.
    Ce que je comprends, c'est que tu souhaites répartir la différences entre tes 5 zones.
    Et pour cela, il te suffit de boucler tant que la différence n'est pas égale à 0 et de rajouter (ou enlever 1) tour à tour sur les zones.

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    Oui, pour commencer, un simple if pourrait suffire effectivement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If RESULTAT.Text > Str(CDec(1000)) Then
    Else if RESULTAT.Text < Str(CDec(1000)) Then
    Reste plus cas trouver une solution pour augmenter ou diminuer les valeurs des Textbox "X1; X2; X3 et Y1; Y2" en gardant le même ratio entre elles , tout en prenant en compte qu'il faut que l'utilisateur remplisse 2 valeurs au minimum, un X et un Y pour que le calcul se fasse.

  6. #6
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Cela fait 2 jours que je suis ce sujet mais je comprends toujours pas très bien pis, pas du tout. Et je crois que je ne suis pas seul dans ce cas.

    Peux-tu nous éclairer avec quelques exemples chiffrés ?

    Je comprends que 19 TextBox contiennent des valeurs qui sont totalisées et leur somme est comparée à 1000.
    Cinq TextBox nommées x1, x2, x3 et y1, y2 existent.

    Questions :

    Ces 5 TextBox font-elles partie des 19 TextBox oû viennent-elles en plus ?

    Toutes les TextBox peuvent-elles contenir des valeurs Nulles ?
    Toutes les TextBox peuvent-elles contenir des valeurs Négatives ?
    Toutes les TextBox peuvent-elles contenir des valeurs Identiques ?

    La somme des 19 Textbox peut-elle être supérieure à 1000 ou négative ?

    Si les 19 TextBox totalisent 994, quelles sont les valeurs possibles à trouver dans les 5 TextBox à modifier ?
    Complémentaire à la question précédente, quelles valeurs l'utilisateur "doit-il" encoder dans une des X1, X2, x3 et une des y1, y2 pour obtenir ces valeurs plausibles dans les 5 TextBox ?

    Si les 19 TextBox totalisent 995, quelles sont les valeurs à encoder dans un x et dans un y et quelles sont les valeurs à calculer pour les autres x et Y ?

    Si les 19 TextBox totalisent 190 (c'est la somme des 1 à 19), quelles sont les valeurs à encoder dans un x et dans un y et quelles sont les valeurs à calculer pour les autres x et Y ?

    Désolé de te donner du travail supplémentaire au lieu de te donner une solution ... Celle-ci viendra peut-être ensuite.


  7. #7
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    Je vais essayer d'apporter un peu plus de précision.

    je dois trouver une solution pour augmenter ou diminuer les valeurs des Textbox "X1; X2; X3 et Y1; Y2" en gardant le même ratio entre elles , tout en prenant en compte qu'il faut que l'utilisateur remplisse 2 valeurs au minimum, un X et un Y pour que le calcul se fasse.

    Par exemple si Y1 = 157.89; Y2 = 171.76; X1 = 113.21; X2=92.59; X3= 149.25; B1=300 et V= 200

    le total est de 978.45


    Valeure.Text = CStr(CDec((X3 + X2 + X1) / (Y1 + Y2))) => (113.21+92.59+149.25)/(157.89+171.76) =1.07
    il faut donc augmenter les valeurs X1 ,X2 ,X3 ,Y1 et Y2 proportionnellement jusqu'à 1000 tout en gardant le rapport de 1.07, après il peut aussi arriver que cela dépasse 1000 dans ce cas il faut diminuer les valeurs toujours en gardant la même proportion.

    Cela n'a pas été précisé mais les lettres sont des variables

    exemple => Dim Y1 As Decimal

  8. #8
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    OK, pour ceci " ... augmenter ou diminuer les valeurs des Textbox "X1; X2; X3 et Y1; Y2" en gardant le même ratio entre elles , tout en prenant en compte qu'il faut que l'utilisateur remplisse 2 valeurs au minimum, un X et un Y ...".

    Je comprends aussi maintenant le ratio = Somme(X1:X3)/Somme(Y1:Y2).

    Mais dans ton exemple, que sont B1 et V ?

    L'utilsateur doit encoder au moins un X et un Y. Cela veut dire les modifier car dans ton exemple, tous les X et Y ont déjà une valeur ?
    C'est-à-dire, si je comprends (), que avec les X et Y encodés, on calcule le ratio. Puis, l'utilisateur change un X et un Y et tu veux que le programme ajuste les autres X et Y en gardant le même ratio ?

    Dans ton exemple :

    SommeX = X3 + X2 + X1 = 149.25 + 92.59 + 113.21 = 355.05
    SommeY = Y1 + Y2 = 157.89 + 171.76 = 329.65
    Ratio = SommeX / SommeY = 1.077

    Je ne vois pas ton total de 978.45, ce n'est ni SommeX + SommeY, ni SommeX + SommeY + B1 + V, SommeX et SommeY sont-ils inclus dans ce total ?

    Ce qu'il faut programmer, c'est que si l'utilsateur change X1 en100 et Y1 en 100, il faut modifier X2, X3 et Y2 en gardant la même valeur de ratio dans SommeX / SommeY, et en approchant le total de 1000 ?

    Désolé de ne pas comprendre ...

  9. #9
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    "Mais dans ton exemple, que sont B1 et V ?"
    Ces valeurs une fois saisies par l'utilisateur ne peuvent pas être modifiée par le calcul d'ajustement, seules les valeurs X et Y sont ajustable

    "C'est-à-dire, si je comprends (), que avec les X et Y encodés, on calcule le ratio. Puis, l'utilisateur change un X et un Y et tu veux que le programme ajuste les autres X et Y en gardant le même ratio ?"

    L'utilisateur rentre des valeurs dans les 19 Textbox au maximum, et en appuyant sur un bouton le programmes fait en sorte que le calcul final arrive à 1000, mais seule les valeurs X et Y peuvent être modifiées mais il faut garder le même ratio.

    "Par exemple si Y1 = 157.89; Y2 = 171.76; X1 = 113.21; X2=92.59; X3= 149.25; B1=300 et V= 200

    le total est de 978.45"
    Pour ce calcul, je suis aller trop vite ce matin c'est mois qui est mal additionné, j'étais pas bien réveillé

    Je prend un exemple plus simple avec seulement un x et un Y

    X= 326.70
    Y=368.41
    B1 = 93.75
    V=200
    = 988.86
    avec un ratio à 1.12


    Pour que le calcul se fasse il faut qu'il est au minimum 1 y et un X afin d'avoir un ratio

    Les autres valeurs sont des options que l'utilisateur est libre d'ajouté ou pas, mais le total doit toujours être de 1000.

  10. #10
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Merci pour ces explications mais j'ai encore quelques problèmes ...

    Le ration 1.12 de ton dernier exemple correspond à SommeY / SommeX or dans ton exemple précédent, le ratio correspondait à l'inverse.

    Je suppose que je dois considérer B1 et V comme étant une synthèse des 19 TextBox ?

    Bref, en suivant ton exemple, "je " dois augmenter X et Y pour arriver à 1000 tout en conservant le même ratio.

    ...

  11. #11
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    "Le ration 1.12 de ton dernier exemple correspond à SommeY / SommeX or dans ton exemple précédent, le ratio correspondait à l'inverse.
    Oui, c'est exact le bon ratio est 1.12 "SommeY / SommeX"

    "Je suppose que je dois considérer B1 et V comme étant une synthèse des 19 TextBox ?"
    Non, ils ne sont pas une synthese des 19 TextBox, je prend un exemple afin d'imager tout cela

    Un moule de 1000 millilitres qui peut contenir 19 ingrédients diffèrent possibles, la farine c'est B1 et V est l'eau, mise à part les X et Y les autres lettres " variables" sont des options

    "Bref, en suivant ton exemple, "je " dois augmenter X et Y pour arriver à 1000 tout en conservant le même ratio."

    Oui, c'est ça

  12. #12
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 540
    Par défaut
    Citation Envoyé par Tempus01 Voir le message
    "Un moule de 1000 millilitres qui peut contenir 19 ingrédients diffèrent possibles, la farine c'est B1 et V est l'eau, mise à part les X et Y les autres lettres " variables" sont des options
    On commence à mieux comprendre maintenant.
    D'une part c'est un problème de mathématiques et d'expressions de polynômes.
    Ensuite est-ce que vous avez commencé à coder et utiliser for.each et créer une liste de paramètres comme j'ai écris dans mon premier message ?
    L'intérêt d'une liste c'est que la liste peut varier de taille donc de paramètres.

  13. #13
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    "D'une part c'est un problème de mathématiques et d'expressions de polynômes."
    Oui, c'est un problème de mathématiques

    "Ensuite est-ce que vous avez commencé à coder et utiliser for.each et créer une liste de paramètres comme j'ai écris dans mon premier message ?"
    Oui, c'est une possibilité, mais si on arrive à synthétiser la formule je la place sous un bouton et cela permettra d'avoir le résultat, car il faut que cela soit l'utilisateur qui prenne la décision de modifier les valeurs X et Y

    si cela peut aider, le code fonctionne actuellement avec des TextChanged, cela permet d'être en Dynamique.

  14. #14
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Re ....

    Je ne me suis pas fatigué avec les polynômes (bien que ça a été mon idée de départ, mais trop paresseux). Bien sûr, je ne sais pas si ma solution peux te convenir.

    Je te propose de regarder cette vidéo et me dire ensuite : https://www.dropbox.com/s/sefcx4l82t...Ratio.mp4?dl=0

    Comme tu verras, je considère une somme non modifiable (celle-là, tu la constituera comme tu veux) et des valeurs encodées pour les X et les Y.

    Dans la vidéo :
    Somme non modifiable : 200
    Les X : 100, 150 et 200
    Les Y : 110 et 120
    On obtient avec ça un total général de 880 et un ratio de 0.51.

    Le programme recalcule les X et les Y pour arriver à un total de 1000 avec le même ratio de 0.51.

    Voila ma compréhension du problème ...

    Si ceci te convient, je t'enverrai une version "pédagogique" de ma solution (je veux dire du code lisible et compréhensible ... )

  15. #15
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    Je viens de visionner la vidéo, c'est parfait, cela répond aux critères, on part sur la somme des autres valeurs "en fix" tout en gardant le ratio et on obtient 1000 au final.

  16. #16
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Ouf ! "... c'est parfait ... " je n'en attendais pas tant, vu mes difficultés de compréhension du problème !

    Je t'envoie le ZIP de mon programme de test : XYRatio.zip.

    C'est un programme en 4 parties principales :
    1. Lire les encodages
    2. Calculer les sommes et ratio dus aux encodages
    3. Calculer les valeurs ajustées, ainsi que la nouvelle somme totale et le ratio pour contrôle
    4. Afficher les valeurs issues du réglage.


    Le principe est le suivant :
    • Il faut arriver à 1000
    • Les X et Y doivent arriver à 1000 moins ce qui ne peut être modifié (dans la video, le non modifiable est de 200, donc les X et Y doivent arriver à 800, mais ils ne totalisent que 680, il faut donc augmenter les X et Y de 800 / 680, soit les multiplier par 1.17647).
    • Je ne me préoccupe pas du ratio, il reste "automatiquement" bon.


    J'espère que ceci te dépannera ...

  17. #17
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    Bonjour Phil Rob,

    Un grand merci, car votre code est génial, j'ai fini de l'intégrer ce matin dans mon appli, cependant seul le cas de figure ou SommeTotaleDepart est inferieur à 1000 fonctionne parfaitement, mais si SommeTotaleDepart est supérieur à 1000 les calculs ont besoin d'être adaptés, et là je coince un peu.

    Je pensais remplacer le * par le / dans cette formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X1Modif = X1Depart * PourcentageXY

  18. #18
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    J'y regarde dès que possible....

    Non tout de suite ...

    Juste une petite modif dans la procédure de calcul des nouveaux X et Y, soit dans mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
        Private Sub BCalculerLesModifs_Click(sender As Object, e As EventArgs) Handles BCalculerLesModifs.Click
            Dim LimiteXY As Double = 1000 - SommeNonModifiable ' C'est la part des X et Y devant atteindre 1000
            Dim PourcentageXY As Double
            If LimiteXY < 0 Then
                PourcentageXY = (SommeXDepart + SommeYDepart) / LimiteXY
            Else
                PourcentageXY = LimiteXY / (SommeXDepart + SommeYDepart)
            End If
     
    '... ... ...
    Le PoucentageXY est calculé différemment selon qu'il faille augmenter ou diminuer les X et Y.


    Bon dimanche ...

  19. #19
    Membre confirmé
    Homme Profil pro
    Technicien
    Inscrit en
    Juillet 2020
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Juillet 2020
    Messages : 141
    Par défaut
    C'est parfait cela fonctionne dans les 2 sens

    Encore merci et bon dimanche à vous aussi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [EXCEL MACRO] Comment automatiser un texte?
    Par PAULOM dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/03/2006, 23h46
  2. [IDE][VB.NET]Comment automatiser deploiement dotnetfx 2.0?
    Par evlp2004@hotmail.com dans le forum Visual Studio
    Réponses: 6
    Dernier message: 13/03/2006, 17h10
  3. comment automatiser la création d'une source ODBC ?
    Par belmansour tidjani dans le forum Windows
    Réponses: 2
    Dernier message: 22/02/2006, 10h10
  4. cherche comment copier le champ vers une autre champ
    Par khier dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 01/07/2005, 12h20
  5. Réponses: 8
    Dernier message: 18/09/2002, 03h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo