Résultats Button Incomplets.

Résolu

Bonjour,

Voila mon petit souci. Sur une form j'ai un button qui doit me faire 3 opérations, lorsque je clique dessus il ne m'affiche que le premier résultat. Je dois cliquer dessus une seconde fois pour l'obtention du 2ème résultat. Idem pour le 3ème. Voici le code perso du button. Pouvez-vous m'aider, Merci

Refresh()
       
        'Déclaration de Variables pour le traitement de l'année
        'Variable jours
        Dim VarTBjour1 As Integer
        Dim VarTBjour2 As Integer
        'Variable mois
        Dim VarTBMois1 As Integer
        Dim VarTBMois2 As Integer
        'Variable année
        Dim VarTBAnnée1 As Integer
        Dim VarTBAnnée2 As Integer
        Dim VarTBAnnée3 As Integer
        Dim VarTBAnnée4 As Integer
        'Variable Résultat
        
        
        'Dim VarTBRésulKarmaCaché1 As Integer
        'Dim VarTBRésulKarmaCaché2 As Integer
        Dim VarTBresulCheminDeVie1 As Integer
        Dim VarTBRésulCheminDeVie2 As Integer
        Dim VarTBRésulCheminDeVie3 As Integer
        Dim VarTBRésulCheminDeVie4 As Integer
        Dim VarTBRésulCheminDeVie5 As Integer
        Dim VarTBRésulCheminDeVie6 As Integer
   
        'Variable pour la concaténation
        Dim VarTest1 As Integer

        VarTBjour1 = Val(TBjour1.Text)
        VarTBjour2 = Val(TBjour2.Text)
        VarTBMois1 = Val(TBMois1.Text)
        VarTBMois2 = Val(TBMois2.Text)
        VarTBAnnée1 = Val(TBAnnée1.Text)
        VarTBAnnée2 = Val(TBAnnée2.Text)
        VarTBAnnée3 = Val(TBAnnée3.Text)
        VarTBAnnée4 = Val(TBAnnée4.Text
        'VarTBRésulKarmaCaché1 = Val(TBRésulKarmaCaché1.Text)
        'VarTBRésulKarmaCaché2 = Val(TBRésulKarmaCaché2.Text)
        VarTBresulCheminDeVie1 = Val(TBRésulCheminDeVie1.Text)
        VarTBRésulCheminDeVie2 = Val(TBRésulCheminDeVie2.Text)
        VarTBRésulCheminDeVie3 = Val(TBRésulCheminDeVie3.Text)
        VarTBRésulCheminDeVie4 = Val(TBRésulCheminDeVie4.Text)
        VarTBRésulCheminDeVie5 = Val(TBRésulCheminDeVie5.Text)
        VarTBRésulCheminDeVie6 = Val(TBRésulCheminDeVie6.Text)
        VarTBRésulChemindeVieFinal = Val(TBRésulChemindeVieFinal.Text)
        VarTest1 = Val(TBConcatenationChemVie.Text)
        Refresh()
        TBRésulCheminDeVie1.Text = VarTBjour1 + VarTBjour2 + VarTBMois1 + VarTBMois2 + VarTBAnnée1 + VarTBAnnée2 + VarTBAnnée3 + VarTBAnnée4
        TBRésulCheminDeVie4.Text = VarTBRésulCheminDeVie2 + VarTBRésulCheminDeVie3
        TBRésulChemindeVieFinal.Text = VarTBRésulCheminDeVie4 + VarTBRésulCheminDeVie5
        TBConcatenationChemVie.Text = TBRésulCheminDeVie1.Text & TBRésulCheminDeVie4.Text
    End Sub


Windows / Edge 104.0.1293.63

9 réponses

  1. Bonjour

    Tout d'abord pour poster un code, merci de suivre ce qui est décrit là https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code et de choisir Basic, pas VBScript


    Ensuite, si tu utilises Visual Studio Community, tu es censé coder en VB.Net, mais ton code ressemble beaucoup plus à du VBA (comme sur Excel). Visual Basic Express n'est pas un langage, mais un IDE qui n'existe plus, depuis l'avènement de Community.

    Aussi surprenant que ça puisse être, VB.Net ce n'est pas du VB, c'est du C# déguisé en VB.

    Donc pour bien coder en VB.Net, la première chose à faire est de désactiver la référence à Visual Basic (ci-dessous une vieille capture, VS 2015 ou 2015, mais dans 2022 ça y ressemble fort)

    Ensuite, il faut mettre Option Strict et Option Explicit.

    Une fois fait, tu verras que ton code est souligné de rouge à plein d'endroits.

    Tous ces traits rouges, te signalerons soit des utilisations de VBA/6 dans VB.Net, soit des mauvaises pratiques dues au fait que Option Strict et Option Explicit n'étaient pas activés.

    Tous ces traits rouges sont des raisons de bug aléatoires potentiels. Et comme c'est aléatoire, c'est super galère à trouver.



    Une fois ces impératifs réglés, il est fortement déconseillé d'utiliser des accents dans les noms de variables.

    D'ailleurs, appeler tes variables VarQuelqueChose n'est pas forcément judicieux, j'imagine que ça t'aide à te rappeler que ce sont des variables, mais Var est un type de données, ça peut aussi prêter à confusion.

    Autre point, on n'utilise pas 3 int pour des dates, on se sert du type DateTime

    Et alors, le top, serait d'avoir écrit une classe dont le job est de faire tes calculs, sans aucune interface graphique (juste des données d'entrées et des données de sortie), on appelle ça une classe métier, et c'est le fondement de .Net les classes métiers.

    Et coté IHM, seul le lien entre le graphique et les classes métiers est codé.

    Mais bon, ce sera l'étape d'après

    Quoi qu'il en soit, je te conseille la lecture de ce cours, https://tahe.developpez.com/dotnet/vbnet/


    1. Re-bonjour,

      Juste une petite question, j'ai installé Delphi, j'ai investi dans de la doc "Delphi 10.3" de Thierry Grassia. Est-ce que tu me conseilles D'utiliser ce produit ou bien d'utiliser C#. Etant retraité j'ai mes soirées de dispo et je veux m'investir dans la programmation (même des petits programmes) pour débuter.

      Merci, Pos85

    2. @Pop85

      Je ne connais pas Delphi.

      J'ai fait du pascal, il y a longtemps, et je sais que Delphi c'est du pascal objet (et donc des classes).

      Si la doc dont tu parles est ce livre : https://livre.fnac.com/a15197802/Thierry-Grassia-Delphi-10-3 alors c'est un cours, pas une doc. Et je ne sais pas s'il est bien ou pas.

      La différence entre une doc et un cours et que la doc présente tous les mots clés, instructions, classes etc... mais ne t'apprends pas à coder (y'a des exemples, mais c'est tout). Un cours va t'apprendre à coder, il va te donner les notions nécessaires pour comprendre les algorithmes, l'objet, etc. Mais il ne va te montrer que les mots clés, instructions et classes les plus courants et le laissera chercher dans la doc pour les autres.

      Je ne sais pas te dire lequel, entre VB.Net ou Delphi est plus accessible pour un débutant.

      Mais autant rentabiliser tes presque 40€

  2. Bonjour,

    Votre description c'est ce que vous attendez ou pas?

    Pouvez mettre un fichier exemple a dispo?

    Pour transmettre un fichier,
    Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
    il faut passer par un site de pièce jointe tel que cjoint.com

    Allez sur ce site : http://cjoint.com
    Clic sur parcourir,
    Cherche ton fichier,
    clic sur ouvrir,
    Clic sur "Créer le lien cjoint",
    Copier le lien,
    Revenir ici le coller dans une réponse...

    1. Bonjour,

      Ce n'est pas Visual Basic Express mais Visual Web Developer 2010 Express

      1. Bonjour f894009, désolé mais il s'agit bien de visual basic Express 2022 de Visual Studio community. Aurais tu une solution à mon problème.

        Merci

        1. Bonjour,

          Ok, pige, c'est le code d'une form. Par contre avec le projet serait plus facile

          Je dois cliquer dessus une seconde

          C'est ce que vous voulez ou vous voulez les resultats sur un seul click?

          1. Bonjour, 

            Dans la simplicité et l'absolu il serait sympa qu'un seul clic affiche mes résultats. Voulez vous plus d'infos sur le programme;

            If BtCalculCheminDeVie.Enabled = True Then
                        BtCalculCheminDeVie.BackColor = Color.Chartreuse
                    End If
                    'Déclaration de Variables pour le traitement de l'année
                    'Variable jours
            
            'Ici je documente une date de naissance
            
            'Variable Jour
                    Dim VarTBjour1 As Integer
                    Dim VarTBjour2 As Integer
            
            
                    'Variable mois
                    Dim VarTBMois1 As Integer
                    Dim VarTBMois2 As Integer
                    'Variable année
            
            
                    Dim VarTBAnnée1 As Integer
                    Dim VarTBAnnée2 As Integer
                    Dim VarTBAnnée3 As Integer
                    Dim VarTBAnnée4 As Integer
                    'Ma TextBox pour le 1er Résultat
                    Dim VarTBresulCheminDeVie1 As Integer
            
               
                    Dim VarTBRésulCheminDeVie2 As Integer
                    Dim VarTBRésulCheminDeVie3 As Integer
                    Dim VarTBRésulCheminDeVie4 As Integer
                    Dim VarTBRésulCheminDeVie5 As Integer
                    Dim VarTBRésulCheminDeVie6 As Integer
                    Dim VarTBRésulChemindeVieFinal As Integer
            
            
                    'Variable pour la concaténation
                    Dim VarTest1 As Integer
            
                    VarTBjour1 = Val(TBjour1.Text)
                    VarTBjour2 = Val(TBjour2.Text)
                    VarTBMois1 = Val(TBMois1.Text)
                    VarTBMois2 = Val(TBMois2.Text)
                    VarTBAnnée1 = Val(TBAnnée1.Text)
                    VarTBAnnée2 = Val(TBAnnée2.Text)
                    VarTBAnnée3 = Val(TBAnnée3.Text)
                    VarTBAnnée4 = Val(TBAnnée4.Text)
                    
            
                    VarTBresulCheminDeVie1 = Val(TBRésulCheminDeVie1.Text)
                    VarTBRésulCheminDeVie2 = Val(TBRésulCheminDeVie2.Text)
                    VarTBRésulCheminDeVie3 = Val(TBRésulCheminDeVie3.Text)
                    VarTBRésulCheminDeVie4 = Val(TBRésulCheminDeVie4.Text)
                    VarTBRésulCheminDeVie5 = Val(TBRésulCheminDeVie5.Text)
                    VarTBRésulCheminDeVie6 = Val(TBRésulCheminDeVie6.Text)
                    VarTBRésulChemindeVieFinal = Val(TBRésulChemindeVieFinal.Text)
                    VarTest1 = Val(TBConcatenationChemVie.Text)
            
                    'Ici le premier calcul
                    Refresh()
                    TBRésulCheminDeVie1.Text = VarTBjour1 + VarTBjour2 + VarTBMois1 + VarTBMois2 + VarTBAnnée1 + VarTBAnnée2 + VarTBAnnée3 + VarTBAnnée4
                    TBRésulCheminDeVie4.Text = VarTBRésulCheminDeVie2 + VarTBRésulCheminDeVie3
            
                     'Ici le second calcul
                    TBRésulChemindeVieFinal.Text = VarTBRésulCheminDeVie5 + VarTBRésulCheminDeVie6
                   
            
                    'TBRésulChemindeVieFinal.Text = VarTBRésulCheminDeVie5 + VarTBRésulCheminDeVie6
            
            
                    TBConcatenationChemVie.Text = TBRésulCheminDeVie1.Text & TBRésulCheminDeVie4.Text
            
                End Sub
            1. Re,

              Voulez vous plus d'infos sur le programme;

              Je vous ai demande votre projet car serait beaucoup plus simple pour vous aider

              A priori votre code semble ok, mais je ne peux pas le tester sans votre projet

              Pour transmettre un fichier,
              Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
              il faut passer par un site de pièce jointe tel que cjoint.com

              Allez sur ce site : http://cjoint.com
              Clic sur parcourir,
              Cherche ton fichier,
              clic sur ouvrir,
              Clic sur "Créer le lien cjoint",
              Copier le lien,
              Revenir ici le coller dans une réponse...

              1. Bonsoir, voici le lien concernant ma demande. J'espère que ce sera complet. Sinon je vous enverrai 3  liens supplémentaires.

                https://cjoint.com/c/LHCtCk5HAf3

                1. Bonjour,

                  Sinon je vous enverrai 3  liens supplémentaires.

                  Et le projet complet, c'est pour quand?