j'avoue humblement ne pas avoir encore regardé les fichiers d'aides sur ces
deux fonctions
mais je me permets quand même de vous poser quelques questions concernant
l'utilisation..
voilà je suis en train de faire une feuille contenant un certains nombre de
cases à cocher (checkboxes) .
cherchant, peut être à tort , à minimiser la taille d'une BDD access, je
souhaiterait "coder" sur un seul champ le résultat des checkboxes.
A savoir
si le premier checkbox (index 0) est coché : valeur 1, sinon 0
si le deuxième est coché (index 1) : valeur 2
.....
si le n + 1 ème est coché valeur : 2^n sinon 0
et donc additionner les différentes valeurs..
pour ce faire je projette de faire un for next avec un addition au fur et à
mesure de la progression.
Mais, et c'est ma première question, lorsque je voudrai relire la valeur
sauvegardée, comment extraire (donc dans un for next sans doute) de chiffre
global, l'information sur une valeur donnée
est ce de la façon suivante : exemple de valeur enregistrée : 11 (décimal)
pour savoir si la valeur 2 existe (pour cocher) le checkbox correspondant
(index 1)
je dois écrire if (MonChiffre and 2 = 2) then 'On coche' ??
je dois écrire if (MonChiffre and 2 = 2) then 'On coche' ??
Oui, mais j'écrirais : if ((MonChiffre and 2) = 2) then Dans le doute sur la priorité des opérations;
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Patrice Henrio
Il suffit même d'écrire If ((MonChiffre and 2)<>0) then
Il s'agit en fait d'un masque qui précise si le bit 1 est à 0 ou à 1 (le premier bit est le bit 0)
Il serair intéressant d'ailleurs de tester cette autre version qui est peut-être plus rapide If not((MonChiffre and 2)=0))
Enfin dernière remarque de puriste : un chiffre est un caractère permettant d'écrire des nombres comme les lettres permettent d'écrire des mots. Il vaudrait mieux écrire (MonNombre and 2).
"Fred" a écrit dans le message de news: uFA%
Dans : news:, driss hanib disait :
Bonjour,
Bonsoir,
je dois écrire if (MonChiffre and 2 = 2) then 'On coche' ??
Oui, mais j'écrirais : if ((MonChiffre and 2) = 2) then Dans le doute sur la priorité des opérations;
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Il suffit même d'écrire If ((MonChiffre and 2)<>0) then
Il s'agit en fait d'un masque qui précise si le bit 1 est à 0 ou à 1 (le
premier bit est le bit 0)
Il serair intéressant d'ailleurs de tester cette autre version qui est
peut-être plus rapide
If not((MonChiffre and 2)=0))
Enfin dernière remarque de puriste : un chiffre est un caractère permettant
d'écrire des nombres comme les lettres permettent d'écrire des mots. Il
vaudrait mieux écrire (MonNombre and 2).
"Fred" <foleide@libre.france> a écrit dans le message de news:
uFA%23nAT9FHA.3416@TK2MSFTNGP15.phx.gbl...
Dans : news:u277J0S9FHA.2676@TK2MSFTNGP15.phx.gbl,
driss hanib disait :
Bonjour,
Bonsoir,
je dois écrire if (MonChiffre and 2 = 2) then 'On coche' ??
Oui, mais j'écrirais :
if ((MonChiffre and 2) = 2) then
Dans le doute sur la priorité des opérations;
Il suffit même d'écrire If ((MonChiffre and 2)<>0) then
Il s'agit en fait d'un masque qui précise si le bit 1 est à 0 ou à 1 (le premier bit est le bit 0)
Il serair intéressant d'ailleurs de tester cette autre version qui est peut-être plus rapide If not((MonChiffre and 2)=0))
Enfin dernière remarque de puriste : un chiffre est un caractère permettant d'écrire des nombres comme les lettres permettent d'écrire des mots. Il vaudrait mieux écrire (MonNombre and 2).
"Fred" a écrit dans le message de news: uFA%
Dans : news:, driss hanib disait :
Bonjour,
Bonsoir,
je dois écrire if (MonChiffre and 2 = 2) then 'On coche' ??
Oui, mais j'écrirais : if ((MonChiffre and 2) = 2) then Dans le doute sur la priorité des opérations;
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Patrice Henrio
Message précédent parti trop vite
Je précise que MonNombre and 6 <> 0 permet d'indiquer que le bit 1 ou le bit 2 sont à 1.
MonNombre and 6 = 2 indique que le bit 1 est à 1 et le bit 2 à 0 MonNombre and 6 = 4 indique que le bit 1 est à 0 et le bit 2 à 1 MonNombre and 6 = 6 c'est pour les deux bits à 1
Enfin le or ne sert à rien dans ce cas : MonNombre or 2 = MonNombre si le bit 1 est à 1 sinon MonNombnre or 2 = MonNombre + 2
"Fred" a écrit dans le message de news: uFA%
Dans : news:, driss hanib disait :
Bonjour,
Bonsoir,
je dois écrire if (MonChiffre and 2 = 2) then 'On coche' ??
Oui, mais j'écrirais : if ((MonChiffre and 2) = 2) then Dans le doute sur la priorité des opérations;
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Message précédent parti trop vite
Je précise que MonNombre and 6 <> 0 permet d'indiquer que le bit 1 ou le bit
2 sont à 1.
MonNombre and 6 = 2 indique que le bit 1 est à 1 et le bit 2 à 0
MonNombre and 6 = 4 indique que le bit 1 est à 0 et le bit 2 à 1
MonNombre and 6 = 6 c'est pour les deux bits à 1
Enfin le or ne sert à rien dans ce cas : MonNombre or 2 = MonNombre si le
bit 1 est à 1
sinon MonNombnre or 2 = MonNombre + 2
"Fred" <foleide@libre.france> a écrit dans le message de news:
uFA%23nAT9FHA.3416@TK2MSFTNGP15.phx.gbl...
Dans : news:u277J0S9FHA.2676@TK2MSFTNGP15.phx.gbl,
driss hanib disait :
Bonjour,
Bonsoir,
je dois écrire if (MonChiffre and 2 = 2) then 'On coche' ??
Oui, mais j'écrirais :
if ((MonChiffre and 2) = 2) then
Dans le doute sur la priorité des opérations;
Je précise que MonNombre and 6 <> 0 permet d'indiquer que le bit 1 ou le bit 2 sont à 1.
MonNombre and 6 = 2 indique que le bit 1 est à 1 et le bit 2 à 0 MonNombre and 6 = 4 indique que le bit 1 est à 0 et le bit 2 à 1 MonNombre and 6 = 6 c'est pour les deux bits à 1
Enfin le or ne sert à rien dans ce cas : MonNombre or 2 = MonNombre si le bit 1 est à 1 sinon MonNombnre or 2 = MonNombre + 2
"Fred" a écrit dans le message de news: uFA%
Dans : news:, driss hanib disait :
Bonjour,
Bonsoir,
je dois écrire if (MonChiffre and 2 = 2) then 'On coche' ??
Oui, mais j'écrirais : if ((MonChiffre and 2) = 2) then Dans le doute sur la priorité des opérations;
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
Driss HANIB
Patrice,
exact pour ta remarque sur les intitulés nombre et chiffre: précipitation .....;o((
merci pour toutes les précisions sur le and et or.. je vais regarder et tester tout cela
Driss
"Patrice Henrio" a écrit dans le message de news:
Il suffit même d'écrire If ((MonChiffre and 2)<>0) then
Il s'agit en fait d'un masque qui précise si le bit 1 est à 0 ou à 1 (le premier bit est le bit 0)
Il serair intéressant d'ailleurs de tester cette autre version qui est peut-être plus rapide If not((MonChiffre and 2)=0))
Enfin dernière remarque de puriste : un chiffre est un caractère
permettant
d'écrire des nombres comme les lettres permettent d'écrire des mots. Il vaudrait mieux écrire (MonNombre and 2).
"Fred" a écrit dans le message de news: uFA% > Dans : news:, > driss hanib disait : >> Bonjour, > > Bonsoir, > >> je dois écrire if (MonChiffre and 2 = 2) then 'On coche' ?? > > Oui, mais j'écrirais : > if ((MonChiffre and 2) = 2) then > Dans le doute sur la priorité des opérations; > > -- > Fred > http://www.cerbermail.com/?3kA6ftaCvT
Patrice,
exact pour ta remarque sur les intitulés nombre et chiffre:
précipitation .....;o((
merci pour toutes les précisions sur le and et or..
je vais regarder et tester tout cela
Driss
"Patrice Henrio" <patrice.henrio@laposte.net> a écrit dans le message de
news:enmfhXT9FHA.744@TK2MSFTNGP10.phx.gbl...
Il suffit même d'écrire If ((MonChiffre and 2)<>0) then
Il s'agit en fait d'un masque qui précise si le bit 1 est à 0 ou à 1 (le
premier bit est le bit 0)
Il serair intéressant d'ailleurs de tester cette autre version qui est
peut-être plus rapide
If not((MonChiffre and 2)=0))
Enfin dernière remarque de puriste : un chiffre est un caractère
permettant
d'écrire des nombres comme les lettres permettent d'écrire des mots. Il
vaudrait mieux écrire (MonNombre and 2).
"Fred" <foleide@libre.france> a écrit dans le message de news:
uFA%23nAT9FHA.3416@TK2MSFTNGP15.phx.gbl...
> Dans : news:u277J0S9FHA.2676@TK2MSFTNGP15.phx.gbl,
> driss hanib disait :
>> Bonjour,
>
> Bonsoir,
>
>> je dois écrire if (MonChiffre and 2 = 2) then 'On coche' ??
>
> Oui, mais j'écrirais :
> if ((MonChiffre and 2) = 2) then
> Dans le doute sur la priorité des opérations;
>
> --
> Fred
> http://www.cerbermail.com/?3kA6ftaCvT
exact pour ta remarque sur les intitulés nombre et chiffre: précipitation .....;o((
merci pour toutes les précisions sur le and et or.. je vais regarder et tester tout cela
Driss
"Patrice Henrio" a écrit dans le message de news:
Il suffit même d'écrire If ((MonChiffre and 2)<>0) then
Il s'agit en fait d'un masque qui précise si le bit 1 est à 0 ou à 1 (le premier bit est le bit 0)
Il serair intéressant d'ailleurs de tester cette autre version qui est peut-être plus rapide If not((MonChiffre and 2)=0))
Enfin dernière remarque de puriste : un chiffre est un caractère
permettant
d'écrire des nombres comme les lettres permettent d'écrire des mots. Il vaudrait mieux écrire (MonNombre and 2).
"Fred" a écrit dans le message de news: uFA% > Dans : news:, > driss hanib disait : >> Bonjour, > > Bonsoir, > >> je dois écrire if (MonChiffre and 2 = 2) then 'On coche' ?? > > Oui, mais j'écrirais : > if ((MonChiffre and 2) = 2) then > Dans le doute sur la priorité des opérations; > > -- > Fred > http://www.cerbermail.com/?3kA6ftaCvT
Driss HANIB
merci fred pour tes précisions je teste tout cela
Driss
"Fred" a écrit dans le message de news:uFA%
Dans : news:, driss hanib disait : > Bonjour,
Bonsoir,
> je dois écrire if (MonChiffre and 2 = 2) then 'On coche' ??
Oui, mais j'écrirais : if ((MonChiffre and 2) = 2) then Dans le doute sur la priorité des opérations;
-- Fred http://www.cerbermail.com/?3kA6ftaCvT
merci fred pour tes précisions
je teste tout cela
Driss
"Fred" <foleide@libre.france> a écrit dans le message de
news:uFA%23nAT9FHA.3416@TK2MSFTNGP15.phx.gbl...
Dans : news:u277J0S9FHA.2676@TK2MSFTNGP15.phx.gbl,
driss hanib disait :
> Bonjour,
Bonsoir,
> je dois écrire if (MonChiffre and 2 = 2) then 'On coche' ??
Oui, mais j'écrirais :
if ((MonChiffre and 2) = 2) then
Dans le doute sur la priorité des opérations;
Bonjour Puisqu'on coupe les cheveux en quatre, ce qui est toujours intéressant, il suffit d'écrire If monChiffre AND 2 Then ... (<>0 est impliqué !).
Patrice Henrio
"Barsalou" a écrit dans le message de news:
Bonjour Puisqu'on coupe les cheveux en quatre, ce qui est toujours intéressant, il suffit d'écrire If monChiffre AND 2 Then ... (<>0 est impliqué !).
Pas tout à fait, je n'utilise jamais les valeurs implicites du vrai et faux pour les booléens puisque cela dépend de l'implémentation au niveau du langage. Même s'il est vrai que pour VB Faux vaut 0, et Vrai toute valeur différente de zéro.
Patrice
"Barsalou" <ericMettreUnPointbarsalou@wanadoo.fr> a écrit dans le message de
news: O0cEeRc9FHA.736@TK2MSFTNGP09.phx.gbl...
Bonjour
Puisqu'on coupe les cheveux en quatre, ce qui est toujours intéressant, il
suffit d'écrire If monChiffre AND 2 Then ...
(<>0 est impliqué !).
Pas tout à fait, je n'utilise jamais les valeurs implicites du vrai et faux
pour les booléens puisque cela dépend de l'implémentation au niveau du
langage. Même s'il est vrai que pour VB Faux vaut 0, et Vrai toute valeur
différente de zéro.
Bonjour Puisqu'on coupe les cheveux en quatre, ce qui est toujours intéressant, il suffit d'écrire If monChiffre AND 2 Then ... (<>0 est impliqué !).
Pas tout à fait, je n'utilise jamais les valeurs implicites du vrai et faux pour les booléens puisque cela dépend de l'implémentation au niveau du langage. Même s'il est vrai que pour VB Faux vaut 0, et Vrai toute valeur différente de zéro.
Patrice
Gloops
Bonjour,
Je viens de m'amuser à écrire une application pour illustrer le décryptage d'un drapeau binaire (flag, en Anglais).
Pour mettre ça en oeuvre, il convient, sur un formulaire, de : - placer une case à cocher (checkbox) en haut à gauche - lui affecter l'intitulé (caption) "1 ( = 2 ^ 0)" - copier la case à cocher, la coller - lorsque VB demande si il faut créer une collection de contrôles, répondre oui - supprimer le contrôle collé - créer un bouton, à droite
Ensuite, dans le code du formulaire, coller ce qui se trouve ci-dessous. Le résultat apparaît d'une part dans une boîte de message (MsgBox : la valeur du drapeau), d'autre part dans la fenêtre de débogage (la décomposition en puissances de 2).
Private Sub Command1_Click() Dim Puis As Integer, Flag As Integer For Puis = 0 To 8 If Me.Check1(Puis) = vbChecked Then Flag = Flag + 2 ^ Puis End If Next MsgBox Flag For Puis = 0 To 7 If (Flag And (2 ^ Puis)) Then Debug.Print 2 ^ Puis End If Next End Sub
Private Sub Form_Load() Dim N As Integer For N = 1 To 8 Load Me.Check1(N) Me.Check1(N).Visible = True Me.Check1(N).Top = Me.Check1(0).Top + Me.Check1(0).Height * N Me.Check1(N).Caption = Str$(2 ^ N) + " ( = 2 ^ " + Str$(N) + ")" Me.Check1(N).Width = 2000 Next Me.Height = Me.Check1(0).Top + Me.Check1(0).Height * 12 Me.Caption = "Illustration du décryptage d'un drapeau binaire" Command1.Caption = "Décrypter" End Sub
Bonjour,
Je viens de m'amuser à écrire une application pour illustrer le
décryptage d'un drapeau binaire (flag, en Anglais).
Pour mettre ça en oeuvre, il convient, sur un formulaire, de :
- placer une case à cocher (checkbox) en haut à gauche
- lui affecter l'intitulé (caption) "1 ( = 2 ^ 0)"
- copier la case à cocher, la coller
- lorsque VB demande si il faut créer une collection de contrôles,
répondre oui
- supprimer le contrôle collé
- créer un bouton, à droite
Ensuite, dans le code du formulaire, coller ce qui se trouve ci-dessous.
Le résultat apparaît d'une part dans une boîte de message (MsgBox : la
valeur du drapeau), d'autre part dans la fenêtre de débogage (la
décomposition en puissances de 2).
Private Sub Command1_Click()
Dim Puis As Integer, Flag As Integer
For Puis = 0 To 8
If Me.Check1(Puis) = vbChecked Then
Flag = Flag + 2 ^ Puis
End If
Next
MsgBox Flag
For Puis = 0 To 7
If (Flag And (2 ^ Puis)) Then
Debug.Print 2 ^ Puis
End If
Next
End Sub
Private Sub Form_Load()
Dim N As Integer
For N = 1 To 8
Load Me.Check1(N)
Me.Check1(N).Visible = True
Me.Check1(N).Top = Me.Check1(0).Top + Me.Check1(0).Height * N
Me.Check1(N).Caption = Str$(2 ^ N) + " ( = 2 ^ " + Str$(N) + ")"
Me.Check1(N).Width = 2000
Next
Me.Height = Me.Check1(0).Top + Me.Check1(0).Height * 12
Me.Caption = "Illustration du décryptage d'un drapeau binaire"
Command1.Caption = "Décrypter"
End Sub
Je viens de m'amuser à écrire une application pour illustrer le décryptage d'un drapeau binaire (flag, en Anglais).
Pour mettre ça en oeuvre, il convient, sur un formulaire, de : - placer une case à cocher (checkbox) en haut à gauche - lui affecter l'intitulé (caption) "1 ( = 2 ^ 0)" - copier la case à cocher, la coller - lorsque VB demande si il faut créer une collection de contrôles, répondre oui - supprimer le contrôle collé - créer un bouton, à droite
Ensuite, dans le code du formulaire, coller ce qui se trouve ci-dessous. Le résultat apparaît d'une part dans une boîte de message (MsgBox : la valeur du drapeau), d'autre part dans la fenêtre de débogage (la décomposition en puissances de 2).
Private Sub Command1_Click() Dim Puis As Integer, Flag As Integer For Puis = 0 To 8 If Me.Check1(Puis) = vbChecked Then Flag = Flag + 2 ^ Puis End If Next MsgBox Flag For Puis = 0 To 7 If (Flag And (2 ^ Puis)) Then Debug.Print 2 ^ Puis End If Next End Sub
Private Sub Form_Load() Dim N As Integer For N = 1 To 8 Load Me.Check1(N) Me.Check1(N).Visible = True Me.Check1(N).Top = Me.Check1(0).Top + Me.Check1(0).Height * N Me.Check1(N).Caption = Str$(2 ^ N) + " ( = 2 ^ " + Str$(N) + ")" Me.Check1(N).Width = 2000 Next Me.Height = Me.Check1(0).Top + Me.Check1(0).Height * 12 Me.Caption = "Illustration du décryptage d'un drapeau binaire" Command1.Caption = "Décrypter" End Sub
Gloops
Gloops a écrit, le 02/12/2005 13:00 :
For Puis = 0 To 8
For Puis = 0 To 7
Oui, enfin on peut mettre la même limite pour les deux, ça ne mange pas de pain ...
Gloops a écrit, le 02/12/2005 13:00 :
For Puis = 0 To 8
For Puis = 0 To 7
Oui, enfin on peut mettre la même limite pour les deux, ça ne mange pas
de pain ...
Oui, enfin on peut mettre la même limite pour les deux, ça ne mange pas de pain ...
Gloops
Gloops a écrit, le 02/12/2005 13:00 :
Dim Flag As Integer
Pour s'exprimer avec rigueur, à moins de s'engager dans une analyse d'image, on considère qu'un drapeau peut seulement être levé ou baissé, présentant donc une valeur booléenne.
La variable entière constitue donc plutôt un jeu de drapeaux, chaque drapeau étant représenté par l'un des bits constitutifs de cette variable. Pour cette raison il est de coutume que cette variable s'appelle plutôt Flags, avec un s.
L'application s'appellerait donc "Constitution et décryptage d'un jeu de drapeaux binaire". Ou, si on préfère : "Drapeaux". Ou encore, pour les antimilitaristes : "Ne pas se mélanger les pinceaux". Ou si on veut être plus bref : "Pinceaux" ;)
Gloops a écrit, le 02/12/2005 13:00 :
Dim Flag As Integer
Pour s'exprimer avec rigueur, à moins de s'engager dans une analyse
d'image, on considère qu'un drapeau peut seulement être levé ou baissé,
présentant donc une valeur booléenne.
La variable entière constitue donc plutôt un jeu de drapeaux, chaque
drapeau étant représenté par l'un des bits constitutifs de cette
variable. Pour cette raison il est de coutume que cette variable
s'appelle plutôt Flags, avec un s.
L'application s'appellerait donc "Constitution et décryptage d'un jeu de
drapeaux binaire". Ou, si on préfère : "Drapeaux". Ou encore, pour les
antimilitaristes : "Ne pas se mélanger les pinceaux". Ou si on veut être
plus bref : "Pinceaux" ;)
Pour s'exprimer avec rigueur, à moins de s'engager dans une analyse d'image, on considère qu'un drapeau peut seulement être levé ou baissé, présentant donc une valeur booléenne.
La variable entière constitue donc plutôt un jeu de drapeaux, chaque drapeau étant représenté par l'un des bits constitutifs de cette variable. Pour cette raison il est de coutume que cette variable s'appelle plutôt Flags, avec un s.
L'application s'appellerait donc "Constitution et décryptage d'un jeu de drapeaux binaire". Ou, si on préfère : "Drapeaux". Ou encore, pour les antimilitaristes : "Ne pas se mélanger les pinceaux". Ou si on veut être plus bref : "Pinceaux" ;)