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 6 et antérieur Discussion :

IF/ElseIf et Unités arrondis


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 10
    Points
    10
    Par défaut IF/ElseIf et Unités arrondis
    Salutations à vous tous. Je ne crois pas que les problemes ci-dessous vous causeront d'énormes problemes. Merci de votre aide:



    Voici une image du programme (très basique, je peux l'avouer)

    Je vous explique un peu la fonction. En haut, tu dois écrire trois chiffres. (bois-mana-minerais). Lorsque ceci est fait, vous devez cliquez sur "Calculer". C'est la que tout ce passe. Un Loup de Fenris, par exemple, coute 3 de bois, 1 mana et 1 de minerais. Je veux que le programme calcule le nombre de Loup de Fenris (avec les couts) que je peux faire, avec les unités de bois/mana/minerais que j'ai entré plus haut. En gros, je veux que le programme fasse: (Si j'inscrit que je possède 50 de bois, 50 de mana et 50 de minerais)

    =50 / par le cout (3)
    =50/3
    =17(environ)
    Ensuite
    =50(mana) / 1

    Voilà.. J'ai fais un minimum de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Private Sub cmdCalculer_Click()
     
    lblH1_bois.Caption = Val(txtBois.Text) / 3
    lblH1_mana.Caption = Val(txtMana.Text) / 1
    lblH1_minerais.Caption = Val(txtMinerais.Text) / 1
     
    If Val(lblH1_bois.Caption) <= Val(lblH1_mana.Caption) <= Val(lblH1_minerais.Caption) Then
    lblH1.Caption = Val(lblH1_bois.Caption)
    End If
     
    If Val(lblH1_bois.Caption) <= Val(lblH1_minerais.Caption) <= Val(lblH1_mana.Caption) Then
    lblH1.Caption = Val(lblH1_bois.Caption)
    End If
     
    If Val(lblH1_minerais.Caption) <= Val(lblH1_mana.Caption) <= Val(lblH1_bois.Caption) Then
    lblH1.Caption = Val(lblH1_minerais.Caption)
    End If
     
    If Val(lblH1_mana.Caption) <= Val(lblH1_bois.Caption) <= Val(lblH1_minerais.Caption) Then
    lblH1.Caption = Val(lblH1_mana.Caption)
    End If
     
    If Val(lblH1_minerais.Caption) <= Val(lblH1_bois.Caption) <= Val(lblH1_mana.Caption) Then
    lblH1.Caption = Val(lblH1_minerais.Caption)
    End If
     
    If Val(lblH1_bois.Caption) <= Val(lblH1_minerais.Caption) <= Val(lblH1_mana.Caption) Then
    lblH1.Caption = Val(lblH1_bois.Caption)
    End If
     
    If Val(lblH1_mana.Caption) <= Val(lblH1_minerais.Caption) <= Val(lblH1_bois.Caption) Then
    lblH1.Caption = Val(lblH1_mana.Caption)
    End If
     
    End Sub
    Private Sub cmdCalculer2_Click()
    txtFerme = Val(txtpourcentageFerme.Text) * (txtcout.Text) / 200
    txtMaison = Val(txtpourcentageMaison.Text) * (txtcout.Text) / 200
    End Sub
    Private Sub cmdQuitter_Click()
    End
    End Sub
    Ne faites pas attention au "Calculer2". C'est une fonction que j'ai rajouté dernièrement.

    (PS. Biensûr, le IF ne fonctionne pas, la est mon probleme)



    Donc dans la zone de texte blanche, je veux que le programme inscrit le plus bas chiffre des trois réponses. Ici, ça ce trouve à être lblH1_bois, mais les trois diviseur de base ( 3, 1 et 1) vont toujours être modifiée.

    Je ne sais pas si j'ai bien été compris, mais bon.

    Premier label rouge: lblH1_bois
    Deuxième label rouge: lblH1_mana
    Troisième label rouge: lblH1_minerais
    Label blanc: lblh1

    Deuxième probleme:
    Si par exemple, j'inscris 85. Le programme fera: 85 / 3 donc = 28.33333

    Il y a une manière de rendre la réponse juste et net à 23? (Sans modifier le 85 ou le 3) Comme en arrondissant.


    Merci.

  2. #2
    Membre habitué
    Inscrit en
    Juillet 2007
    Messages
    433
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 433
    Points : 130
    Points
    130
    Par défaut
    Pour faire une division entière faut utiliser \ au lieu de / je crois.
    Ensuite dans un if je crois pas aue tu peux faire direct a < b < c, faut faire if a < b and b < c il me semble. Ecris une fonction minimum sinon genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function Min (A As Integer, B As Integer, C As Integer) As Integer
    Dim Temp As Integer
    Temp = IIf (A > B, A, B)
    Temp = IIf (Temp > C, Temp, C)
    Min = Temp
    End Function
    Ensuite pour remplir ton lblH1.Caption (le blanc) tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lblH1.Caption = Min (lblH1_Bois.caption \ 3, lblH1_Mana.caption, lblH1_Minerais.caption)

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Je confirme la réponse de Gaetch, les if ne supportent pas les comparaisont multiple de la façon que tu l'écrit.

    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (A < E and X > B) or (V > A and H < Z) then
    ....
    elseif E=2 or I=5 then
    .....
    else
    ....
    end if

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    Voici ce que j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Private Sub cmdCalculer_Click()
    lblH1_bois.Caption = Val(txtBois.Text) \ 3
    lblH1_mana.Caption = Val(txtMana.Text) \ 1
    lblH1_minerais.Caption = Val(txtMinerais.Text) \ 1
    Function Min(A As Integer, B As Integer, C As Integer) As Integer
    Dim Temp As Integer
    Temp = IIf(A > B, A, B)
    Temp = IIf(Temp > C, Temp, C)
    Min = Temp
    End Function
    lblH1.Caption = Min(lblH1_bois.Caption \ 3, lblH1_mana.Caption \ 1, lblH1_minerais.Caption \ 1)
    End Sub
     
    Private Sub cmdCalculer2_Click()
    txtFerme = Val(txtpourcentageFerme.Text) * (txtcout.Text) / 200
    txtMaison = Val(txtpourcentageMaison.Text) * (txtcout.Text) / 200
    End Sub
     
    Private Sub cmdQuitter_Click()
    End
    End Sub
    Pourtant ça ne fonctionnne pas. L'erreur: Expected End Sub.

    Il est pourtant bien la...

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Dit donc..... relit un peu ton code,
    tu imbrique une fonction dans une sub

  6. #6
    Membre chevronné
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Points : 1 788
    Points
    1 788
    Par défaut
    Ton erreur (L'erreur: Expected End Sub.), viens de la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub cmdCalculer_Click()
    lblH1_bois.Caption = Val(txtBois.Text) \ 3
    lblH1_mana.Caption = Val(txtMana.Text) \ 1
    lblH1_minerais.Caption = Val(txtMinerais.Text) \ 1
    Function Min(A As Integer, B As Integer, C As Integer) As Integer
    Dim Temp As Integer
    Temp = IIf(A > B, A, B)
    Temp = IIf(Temp > C, Temp, C)
    Min = Temp
    End Function
    lblH1.Caption = Min(lblH1_bois.Caption \ 3, lblH1_mana.Caption \ 1, lblH1_minerais.Caption \ 1)
    End Sub
    Tu as mis une fonction dans une procedure, En VB c'est pas possible, tu doit faire ressortir la fonction de la definition de la procedure comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub cmdCalculer_Click()
    lblH1_bois.Caption = Val(txtBois.Text) \ 3
    lblH1_mana.Caption = Val(txtMana.Text) \ 1
    lblH1_minerais.Caption = Val(txtMinerais.Text) \ 1
    lblH1.Caption = Min(lblH1_bois.Caption \ 3, lblH1_mana.Caption \ 1, lblH1_minerais.Caption \ 1)
    End Sub
     
    Private Function Min(A As Integer, B As Integer, C As Integer) As Integer
    Dim Temp As Integer
    Temp = IIf(A > B, A, B)
    Temp = IIf(Temp > C, Temp, C)
    Min = Temp
    End Function
    La comme ca tu ne devrais plus avoir ce genre d'erreur.
    "Toute question a une reponse. Et chaque reponse est une nouvelle question." Albert EINSTEIN

    En cas de Question resolu, n'oubliez pas

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    Aie, ou j'avais la tête héhé.

    Cependant ça ne résous pas mon probleme. Si j,entre 12/12/12 dans txtBois/txtMana/txtMinerais.

    Ça lance les réponse
    1. 4 dans lblh1_bois
    2. 12 dans lblh1_mana
    3. 12 dans lblh1_minerais

    Et pourtant, dans lblh1 (le label blanc) il me sort le chiffre "12" alors que C'est senser donner "4".

    Désolé si je vous dérange, mais bon. Je ne vois aucune erreure nul-part...

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Remet ton code rectifier pour rechercher l'erreur.

    De plus ton explication sur le résultat souhaité est vraiment pas clair.

    Explique de cette façon...
    1 loup= 3Bois
    1 loup = 1 mana
    1 loup = 1minerais

    C'est ça ?
    sinon explique mieux

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Citation Envoyé par Dorhken
    Aie, ou j'avais la tête héhé.

    Cependant ça ne résous pas mon probleme. Si j,entre 12/12/12 dans txtBois/txtMana/txtMinerais.

    Ça lance les réponse
    1. 4 dans lblh1_bois
    2. 12 dans lblh1_mana
    3. 12 dans lblh1_minerais

    Et pourtant, dans lblh1 (le label blanc) il me sort le chiffre "12" alors que C'est senser donner "4".

    Désolé si je vous dérange, mais bon. Je ne vois aucune erreure nul-part...
    Attend.. Si tu pense que la réponse est 4 je suppose alors que

    1 loup = 3bois+1Mana+1Minerais
    Si oui, ton calcul est impossible en arrondi
    tu aurrai en réponse 4 Loups et reste 8 mana et 8 Minerai

    Autre réflexion, j'ai regarder dans MSDN et la fonction min() n'est pas reprise en VB6, excepté dans les requêtes SQL ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub cmdCalculer_Click()
    lblH1_bois.Caption = Val(txtBois.Text) \ 3
    lblH1_mana.Caption = Val(txtMana.Text) \ 1
    lblH1_minerais.Caption = Val(txtMinerais.Text) \ 1
    lblH1.Caption = Min(lblH1_bois.Caption, lblH1_mana.Caption, lblH1_minerais.Caption)
    End Sub
    Private Function Min(A As Integer, B As Integer, C As Integer) As Integer
    Dim Temp As Integer
    Temp = IIf(A > B, A, B)
    Temp = IIf(Temp > C, Temp, C)
    Min = Temp
    End Function
    Private Sub cmdCalculer2_Click()
    txtFerme = Val(txtpourcentageFerme.Text) * (txtcout.Text) / 200
    txtMaison = Val(txtpourcentageMaison.Text) * (txtcout.Text) / 200
    End Sub
    Private Sub cmdQuitter_Click()
    End
    End Sub
    Je ré-explique donc. Pour créer un loup, il faut un minimum de 3 bois, 1 mana et 1 minerais. Les txtBois, txtMana et txtMinerais signifie le nombre de bois/mana/minerais que tu possède en tout. Si j'entre 12 dans txtbois, 12 dans txtmana et 12 dans txtMinerais, le programme fait les calcule plus haut(divison de 3, division de 1 et division 1) pour savoir combien de loup serait-il possible de créer avec les ressources que tu possèdes (Bois,Mana Minerais)

    Donc si je prend le premier label rouge. Dans celui-là, c'est la réponse du txtBois/3. En gros, ce label affiche combien de loup tu peux créer avec ton bois (comme s'il ne fallait pas de Mana/minerais)

    C'est pareil pour les deux autres label. Puis, il y a le label blanc: la source des problemes.

    Je veux que dans celui-ci, il soit affiché le plus petit chiffre des 3 labels rouges. Pourquoi? Si, avec ton bois, tu peux créer 4 loups et qu'avec la mana/minerais que tu possèdes, tu peux en créer 12. Alors c'est impossible en créer douze, due au manque de bois.

    Donc dans le label blanc, la réponse serait 4.

    J'espère avoir été comprit.

  11. #11
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Je viens juste de regarder ton sujet et la première chose qui me saute au yeux, ce sont les fautes de français sur l'interface. Si c'est juste pour toi, c'est pas grave. Sinon:
    Compteur d'unités automatique celon votre race
    pourrait devenir
    Compteur automatique d'unités selon votre race
    ou encore
    Compteur d'unités selon votre race
    parce que d'habitude un compteur c'est automatique, non?

    Dans les trois étiquettes
    possèdez
    pourrait devenir
    possédez

    Surtout ne le prends pas mal. Je regarde le reste et je reviens.

    [Edit] En fait, il tonne, alors je quite. Je reviendrai plus tard.

  12. #12
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bon j'ai mis ça sur mon PC l'erreur vient des IIF

    Il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Temp = IIf(A > B, B, A)
    Temp = IIf(Temp > C, C, Temp)
    A+

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par zazaraignée
    Je viens juste de regarder ton sujet et la première chose qui me saute au yeux, ce sont les fautes de français sur l'interface. Si c'est juste pour toi, c'est pas grave. Sinon:
    Compteur d'unités automatique celon votre race
    pourrait devenir
    Compteur automatique d'unités selon votre race
    ou encore
    Compteur d'unités selon votre race
    parce que d'habitude un compteur c'est automatique, non?

    Dans les trois étiquettes
    possèdez
    pourrait devenir
    possédez

    Surtout ne le prends pas mal. Je regarde le reste et je reviens.

    [Edit] En fait, il tonne, alors je quite. Je reviendrai plus tard.
    Je n'ai aucunement fait attention aux fautes, c'est un programme ou j'ai misé sur le code avant de travailler l'interface.

    Merci LeForestier, mon probleme est résolu.


    Cependant, j'aimerais avoir une autre information. (Je sais, j'en demande beaucoup)

    Je n'ai pas trop approndis mes testes, mais les chiffres en haut de 99000 ne fonctionnent pas. Error: Overflow.

    J'ai testé quelques petits trucs pour voir si cela règlait le probleme, mais non héhé. (C'est pas comme le C, faut croire)

  14. #14
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Essaie avec des Long plutôt que des Integer.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    Merci à vous tous pour l'aide. Si j'ai d'autres problemes, je viendrai ici. Vous savez pourquoi ? Les gens aident réellement !

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

Discussions similaires

  1. [ETAT] Access arrondi à la 10aine au lieu de l'unité
    Par Alain Rivet dans le forum IHM
    Réponses: 10
    Dernier message: 20/01/2006, 18h02
  2. [Turbo Pascal] [Windows XP] Problème avec l'unité GRAPH
    Par themofleur dans le forum Turbo Pascal
    Réponses: 22
    Dernier message: 29/03/2003, 22h43
  3. TTreeView -> Comment ouvrir une unité ?
    Par DaLove dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/12/2002, 11h30
  4. [VB6] Racine carrée + arrondi
    Par Krys29 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/10/2002, 13h19
  5. Connaitre l'unitée à ajouter dans USES
    Par DelphiCool dans le forum Langage
    Réponses: 7
    Dernier message: 01/08/2002, 13h48

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