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 :

[VB6] Petite devinette de fin d'année [Trucs & Astuces]


Sujet :

VB 6 et antérieur

  1. #1
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut [VB6] Petite devinette de fin d'année
    Pour les pros du VB6 (pas valable en VBA).

    Comment assigner par le code, de la façon la plus simple, sa valeur à une CheckBox à partir d'un Booléen.

    Pour clarifier la question:
    Je ne dispose que d'une valeur booléenne et je veux changer l'état (coché ou pas) d'une CheckBox en fonction de cette valeur.

    Quand je dis de la façon la plus simple, on peut traduire par la plus courte (à l'écriture).

    Si je dis "les pros", ce n'est pas par esprit de ségrégation mais parce que ça fait appel à une bonne connaissance de la représentation des données en VB. Ca n'empêche à personne de s'y lancer même sans ces connaissances.

    SVP, ne postez que du code testé. Le but de ce post est de vous faire chercher sur un problème, pas de recevoir un max de réponses. Je supprimerai tout message dont la solution ne fonctionne pas.

    Par contre, vous pouvez poster vos commentaires sur l'évolution de vos recherches.

    Pourquoi pas valable en VBA?
    Car en VBA on peut assigner True ou False à une CheckBox. Donc, pas d'intérêt.

    Edit --> Une assignation tient en une ligne. Pas besoin de tout le charabia autour tel que bouton et autre Form_Load.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Avec VB5 le code suivant marche sans problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Command1_Click()
      If Check1.Value = 0 Then Check1.Value = 1 Else Check1.Value = 0
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonsoir,
    Effectivement, le CheckBox à une valeur True ou False, donc Boolean.
    Enfin il y a ceci qui marche.
    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
     
    Private Sub Command1_Click()
    Dim bln As Boolean
    bln = False
    If Command1.Caption = "Activer Check1" Then
            Check1 = 1
              Command1.Caption = "Désactiver Check1"
    Else
              Command1.Caption = "Activer Check1"
            Check1.Value = bln
        End If
    End Sub
     
    Private Sub Form_Load()
    Command1.Caption = "Activer Check1"
    End Sub
    jpleroisse

  4. #4
    Membre confirmé Avatar de ypicot
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 412
    Points : 579
    Points
    579
    Par défaut
    Je n'ai plus VB sous la main (désolé...) mais il me semblait qu'il fallait mettre 0 pour faux et -1 pour vrai (puisque not 0 = -1, et non pas 1)

    VBment,

    Yvan
    Une solution n'est valable que dans un contexte donné

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par jmfmarques
    Avec VB5 le code suivant marche sans problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Command1_Click()
      If Check1.Value = 0 Then Check1.Value = 1 Else Check1.Value = 0
    End Sub
    Quel est l'intérêt de ce que tu as écrit?
    J'interprète: Si ma chkbox est décochée, je la coche, sinon, je la décoche.

    Par contre, tu donnes un premier élément de recherche.
    Une CheckBox n'accepte que les valeurs 0 et 1.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par leroissejp
    Bonsoir,
    Effectivement, le CheckBox à une valeur True ou False, donc Boolean.
    J'insiste, on parle bien de VB (5 ou 6) pas de VBA.

    Il n'est pas possible d'assigner True ou False à une CheckBox.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par ypicot
    Je n'ai plus VB sous la main (désolé...) mais il me semblait qu'il fallait mettre 0 pour faux et -1 pour vrai (puisque not 0 = -1, et non pas 1)

    VBment,

    Yvan
    Exact!

    Deuxième élément de recherche.

    True vaut -1 et False vaut 0
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  8. #8
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    explique-toi tout-à-fait :
    aucune valeur (y compris 0, 1 et -1) ne doit apparaître dans le code oùseuls true et false seraient permis ?

  9. #9
    Membre habitué Avatar de Mandalar
    Profil pro
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 121
    Points : 128
    Points
    128
    Par défaut
    J'ai trouvé ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim b As Boolean
    b = True '(ca marche aussi pour b = False)
    Check1.Value = Abs(b)
    A priori le false booléen correspond a 0 et le true booléen à -1. Cependant la valeur "cochée" du checkbox semble être 1 (d'ou la valeur absolue) la fonction valeur absolue semblant également convertir implicitement en entier le "true" ou "false" du booléen.

  10. #10
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    voila :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Command1_Click()
    If Check1.Value = -False Then Check1.Value = -True Else Check1.Value = -False
    End Sub

  11. #11
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Je précise :
    par mon code précédent, j'attribue la valeur que je veux à la checkbox sans utiliser 1, 0 ou -1

  12. #12
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Prenons une variable booléenne, appelons-la blnCheck.

    Une assignation simple serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Check1.Value = bnlCheck
    Or, on sait que VB n'accepte pas cette syntaxe.
    Il faudra convertir blnCheck en un format acceptable par Check1.Value.

    Le chalenge est de trouver la manière la plus courte pour faire l'assigation.

    C'est clair, maintenant?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  13. #13
    Membre habitué Avatar de Mandalar
    Profil pro
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 121
    Points : 128
    Points
    128
    Par défaut
    AlainTech, est-ce que ce que j'ai proposé plus haut (avec abs()) est recevable ? ou il y a plus simple (plus pratique) ?

  14. #14
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Mandalar t'a déjà fourni la réponse

  15. #15
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    ben !
    où est la différence avec ce que je disais ?
    pour cocher je dirais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Command1_Click()
    bnlcheck = -True
    Check1.Value = bnlcheck
    End Sub
    et pour décocher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Command1_Click()
    bnlcheck = -false
    Check1.Value = bnlcheck
    End Sub

  16. #16
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par jmfmarques
    Je précise :
    par mon code précédent, j'attribue la valeur que je veux à la checkbox sans utiliser 1, 0 ou -1
    Tu n'attribues pas la valeur que tu veux, tu changes son état.
    Ce n'est pas pareil.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  17. #17
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par Mandalar
    AlainTech, est-ce que ce que j'ai proposé plus haut (avec abs()) est recevable ? ou il y a plus simple (plus pratique) ?
    On est tout près...
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  18. #18
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    tu as demandé :
    Je ne dispose que d'une valeur booléenne et je veux changer l'état (coché ou pas) d'une CheckBox en fonction de cette valeur.
    !!!!!
    c'est bien ce que j'ai fait !

  19. #19
    Membre habitué Avatar de Mandalar
    Profil pro
    Étudiant
    Inscrit en
    Mai 2004
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2004
    Messages : 121
    Points : 128
    Points
    128
    Par défaut
    Ceci semble marcher et est encore plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim b As Boolean
    Check1.Value = -b

  20. #20
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par jmfmarques
    ben !
    où est la différence avec ce que je disais ?
    pour cocher je dirais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Command1_Click()
    bnlcheck = -True
    Check1.Value = bnlcheck
    End Sub
    et pour décocher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Command1_Click()
    bnlcheck = -false
    Check1.Value = bnlcheck
    End Sub
    Si tu mets -True dans blncheck, ce n'est plus une variable booléenne...
    J'ai dit qu'on recevait une valeur booléenne dans blnCheck.

    Ceci dit, tu t'es fort approché de la solution en apportant un élément important.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. Petite devinette sur l'overloading
    Par mathk dans le forum Langage
    Réponses: 11
    Dernier message: 24/06/2007, 02h06
  2. [Une Devinette] petite devinette pour le sport de meninges :)
    Par landryx dans le forum La taverne du Club : Humour et divers
    Réponses: 63
    Dernier message: 04/01/2007, 00h09
  3. [VB6] Petite question avec "select case ... end case"
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 22
    Dernier message: 04/05/2006, 10h24

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