Ceci est plus une astuce de programmation concernant les checkbox qu'une source à proprement parler.
Je trouvais lourde la manière d'inverser la sélection de checkbox dans un programme, transformer tous les checkbox "checked" (checkbox.value=1) en checkbox "unchecked" (checkbox.value=0) nécessitait 2 "if then else" par checkbox!! Soit un code super lourd, peu esthetique et pas du tout optimisé!
Je me suis donc creusé la tête et fit un peu de binaire pour essayer de trouver une solution pour améliorer mon code (pour écrire beaucoup moins de ligne de code surtout :p )
Voici ma démarche :
Mathématiquement nous avons:
NOT 0 = -1 et NOT 1 = -2
Soit:
(NOT 0)+2 = 1 et (NOT 1)+2 = 0
exemple : notre checkbox est "unchecked" (value=0), on fait checkbox.value=(NOT(checkbox.value))+2 et hop il devient "checked" (value=1) et inversement pour un checkbox "checked" au départ!
Bingo!
Donc nous n'avons qu'à faire une seule affectation par checkbox (au lieu de 2 test et 1 affectation auparavant)!!
Voir le code pour avoir un aperçu concret de mes explications :)
Source / Exemple :
'SANS L'ASTUCE :
Private Sub Inverser_Selection_Click()
if check1.value=1 then
check1.Value = 0
elseif check1.value=0 then
check1.value=1
end if
if check2.value=1 then
check2.Value = 0
elseif check2.value=0 then
check2.value=1
end if
if check3.value=1 then
check3.Value = 0
elseif check3.value=0 then
check3.value=1
end if
End Sub
'===============================================
'AVEC L'ASTUCE :
Private Sub Inverser_Selection_Click()
check1.Value = ((Not (check1.Value)) + 2)
check2.Value = ((Not (check2.Value)) + 2)
check3.Value = ((Not (check3.Value)) + 2)
End Sub
Conclusion :
Aucun bug connu :P
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.