Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Checkbox dans des cases

24 réponses
Avatar
Claude Schneegans
Bonjour,

Je cherche à faire un tableau avec disons deux colonnes.
Dans la première, j'ai des prix, dans la seconde j'ai 1 ou 0 (sélection)
En dessous, j'affiche le total des articles pour lesquels la sélection = 1.

Pour que ça soit plus convivial, je voudrais remplacer les 0 ou 1 par un
checkbox, à la manière Access.
Est-ce possible, et comment je fais pour trouver la valeur associée au
checkbox pour faire mon total ?

Merci.

10 réponses

1 2 3
Avatar
Claude Schneegans
>>..pourtant c'est on ne peut plus simplissime!





1º, les macros sont exclus, le degré de paranoïa des clients et de leurs
systèmes de sécurité rend tout fichier
comportant des macros inutilisable.
2º J'ai fini par implanter une solution, mais avec un checkbox associé à
une colonne dont les cellules vont contenir
TRUE ou FALSE. Mais comme on ne veut pas voir cette colonne, on doit
réduire sa largeur à zéro.
3º comme le checkbox n'est pas contenu dans une cellule, quand on le
copie plus bas, sa cellule associée n'est pas
translatée comme pour toute expression, faut faire à la main.
4º le checkbox est accompagné d'un texte de défaut dont on n'a rien à
cirer et dont il faut se débarasser.
les checkbox se placent n'importe où dans la feuille, pas évident de
les aligner par rapport à la colonne et la la ligne.

Si tout ça c'est simplicime, alors je manque de termes pour décrire la
façon dont ça se fait en Access.
Avatar
LSteph
Bonjour,

Pas à faire de copie.
La macro proposée te fait juste gagner du temps au départ pour implanter
tes CheckBox , de plus les place relativement aux cellules
(suivant le nombre de lignes ce serait fastidieux.

Et surtout lié à une cellule car c'est le fait d'utiliser linkedcell
qui permet de renvoyer une valeur dans la cellule pour pouvoir
l'utiliser dans le calcul.

Par suite la formule sommeprod suffit.plus besoin de la macro et 1 2 3
sont résolus la valeur est planquée derrière la checkbox.


> 4º
ajoute simplement ceci avant le end with

Selection.caption=""


Cordialement.

--
lSteph

Claude Schneegans a écrit :
>>..pourtant c'est on ne peut plus simplissime!

1º, les macros sont exclus, le degré de paranoïa des clients et de leurs
systèmes de sécurité rend tout fichier
comportant des macros inutilisable.
2º J'ai fini par implanter une solution, mais avec un checkbox associé à
une colonne dont les cellules vont contenir
TRUE ou FALSE. Mais comme on ne veut pas voir cette colonne, on doit
réduire sa largeur à zéro.
3º comme le checkbox n'est pas contenu dans une cellule, quand on le
copie plus bas, sa cellule associée n'est pas
translatée comme pour toute expression, faut faire à la main.
4º le checkbox est accompagné d'un texte de défaut dont on n'a rien à
cirer et dont il faut se débarasser.
les checkbox se placent n'importe où dans la feuille, pas évident de
les aligner par rapport à la colonne et la la ligne.

Si tout ça c'est simplicime, alors je manque de termes pour décrire la
façon dont ça se fait en Access.


Avatar
LSteph
Bonjour,

C'est là où tu te plantes

pour que le calcul de sommeprod interviennene il faut une valeur,
il est donc utile de l'avoir dans une cellule sans quoi le fait de
modifier la propriété checked ou pas d'un checkbox ne sera utilisable
que par macro.
Macros que tu ne souhaites visiblement pas utiliser.

voir l'autre fil.

Claude Schneegans a écrit :

>>attribuer une valeur est précisément différent de l'utilisation d'un
format.

Pas du tout. Un checkbox, c'est une représentation, donc un format, pour
une valeur logique qui peut être 0 ou 1.
D'ailleurs, c'est exactement comme ça qu'est traité un champ Yes-no en
Access. On peut changer le format
par du texte, ou un checkbox. C'est bien plus pratique que d'entrer des
valeurs 0 ou 1.

Je disais donc juste que si Microstuff avait procédé de la même façon
pour Excel que pour Access, ça serait aussi bien.


Avatar
LSteph
...pour le dernier point le cas échéant

Selection.Object.Caption = ""
Avatar
Claude Schneegans
>>pour que le calcul de sommeprod interviennene il faut une valeur,




il est donc utile de l'avoir dans une cellule

Tu vois la situation à l'envers :
de la façon dont c'est implanté dans Excel, c'est sûr que c'est comme ça
qu'il faut faire,
mais s'il y avait tout simplement un moyen de dire que ma cellule est de
type logique (0 ou 1)
et qu'elle doit être visualisée sous forme d'un checkbox, la cellule
contiendrait déjà une valeur,
il n'y aurait pas besoin d'en associer un autre, et la fonction
sommeprod pourrait travailler directement dessus.

Encore une fois, c'est comme ça que ça fonctionne dans Access, c'est
beaucoup plus simple et plus logique.
Avatar
LSteph
Je ne crois pas.
Access et Excel ne sont pas toujours simples sur les mêmes choses et ont
chacun leur logique et des objectifs différents.
D'ailleurs la rigueur imposée par Access est amha une chose qu'ont
devrait parfois s'imposer au regard de la liberté apparente offerte par
le tableur.
Que l'on ait pas à la fois comme propriété value d'une cellule des
prix et la valeur des checkbox dans excel ne change rien.
A ma connaissance dans Access ce n'est guère différent un seul champ ne
peut contenir deux types différents de données pour un même enregistrement.
Nom duchamp| type de données| description
Quand tu monte une table c'est il me semble 1 champ 1 type de données
...non?
Il faut un champ avec prix et un champ booleen ou autre pour 0 ou 1 ou
Vrai ou Faux.

Si tu as des questions sur Access il y a un excellent forum aussi pour cela.

Salutations.

--
lSteph





Claude Schneegans a écrit :
>>pour que le calcul de sommeprod interviennene il faut une valeur,
il est donc utile de l'avoir dans une cellule

Tu vois la situation à l'envers :
de la façon dont c'est implanté dans Excel, c'est sûr que c'est comme ça
qu'il faut faire,
mais s'il y avait tout simplement un moyen de dire que ma cellule est de
type logique (0 ou 1)
et qu'elle doit être visualisée sous forme d'un checkbox, la cellule
contiendrait déjà une valeur,
il n'y aurait pas besoin d'en associer un autre, et la fonction
sommeprod pourrait travailler directement dessus.

Encore une fois, c'est comme ça que ça fonctionne dans Access, c'est
beaucoup plus simple et plus logique.


Avatar
Claude Schneegans
>>Access et Excel ne sont pas toujours simples sur les mêmes choses





C'est exactement mon propos, en ce qui concerne cet exemple en tous cas.

>>A ma connaissance dans Access ce n'est guère différent un seul champ
ne peut contenir deux types différents de données pour un même
enregistrement.
Nom duchamp| type de données| description
>>Quand tu monte une table c'est il me semble 1 champ 1 type de données
...non?

Ben oui, bien sûr. Ce que tu ne sembles pas comprendre, c'est qu'un
checkbox n'est pas une donnée,
c'est juste un mécanisme pour représenter une donnée, et permettre d'en
modifier la valeur.
En ce sens, ce n'est pas différent d'une cellule qui affiche la valeur 1
ou 0 en texte et qui permet d'y entrer 1 ou 0 au clavier.
Que ça se fasse au clavier ou à la souris en cliquant dans une boîte, il
n'y a toujours qu'un seul champ et une seule valeur.

>>Il faut un champ avec prix et un champ booleen ou autre pour 0 ou 1
ou Vrai ou Faux.

BIen sûr. Mais si on pouvait choisir le mode « checkbox » comme format
d'affichage du champ logique,
on n'aurait pas besoin de checkbox en plus du champ logique.

>>Si tu as des questions sur Access il y a un excellent forum aussi
pour cela.

Merci beaucoup, mais en Access, je n'ai aucun problème ;-)
Avatar
LSteph
Bonjour,

> BIen sûr. Mais si on pouvait choisir le mode « checkbox » comme format
> d'affichage du champ logique,
J'ai bien compris ce souhait.


Un checkbox n'est pas une donnée mais un objet dont on peut utiliser les
propriétés c'est précisément ce que je dis depuis le début. C'est
pourquoi ma macro te faisait apparaître les checkbox et leur état coché
ou non dans la cellule,

Ta question était bien:
>comment je fais pour trouver la valeur associée au checkbox pour faire
>mon total ?

Pour y répondre je t'ai proposé la formule Sommeprod
car cela me semble convenir.


@+

--
lSteph

Claude Schneegans a écrit :
>>Access et Excel ne sont pas toujours simples sur les mêmes choses

C'est exactement mon propos, en ce qui concerne cet exemple en tous cas.

>>A ma connaissance dans Access ce n'est guère différent un seul champ
ne peut contenir deux types différents de données pour un même
enregistrement.
Nom duchamp| type de données| description
>>Quand tu monte une table c'est il me semble 1 champ 1 type de données
...non?

Ben oui, bien sûr. Ce que tu ne sembles pas comprendre, c'est qu'un
checkbox n'est pas une donnée,
c'est juste un mécanisme pour représenter une donnée, et permettre d'en
modifier la valeur.
En ce sens, ce n'est pas différent d'une cellule qui affiche la valeur 1
ou 0 en texte et qui permet d'y entrer 1 ou 0 au clavier.
Que ça se fasse au clavier ou à la souris en cliquant dans une boîte, il
n'y a toujours qu'un seul champ et une seule valeur.

>>Il faut un champ avec prix et un champ booleen ou autre pour 0 ou 1
ou Vrai ou Faux.

BIen sûr. Mais si on pouvait choisir le mode « checkbox » comme format
d'affichage du champ logique,
on n'aurait pas besoin de checkbox en plus du champ logique.

>>Si tu as des questions sur Access il y a un excellent forum aussi
pour cela.

Merci beaucoup, mais en Access, je n'ai aucun problème ;-)


Avatar
Modeste
Bonsour® LSteph
Bonne année !!! Meilleurs voeux à tous !!!

BIen sûr. Mais si on pouvait choisir le mode « checkbox » comme
format d'affichage du champ logique,


J'ai bien compris ce souhait.
Un checkbox n'est pas une donnée mais un objet dont on peut utiliser
les propriétés c'est précisément ce que je dis depuis le début. C'est
pourquoi ma macro te faisait apparaître les checkbox et leur état
coché ou non dans la cellule,



Tu vas mettre autant de checkbox que de cellules... soit * ..!




;o)))

Sub creeCHKB()
Dim cell As Range '
Dim X As Long, Y As Long, XW As Long, Yh As Long

For Each cell In Selection
With cell
If (cell <> "") And (cell.Value = True Or cell.Value = False) Then
X = cell.Left
Y = cell.Top
XW = 15 'cell.Offset(0, 1).Left - X
Yh = cell.Offset(1, 0).Top - Y
ActiveSheet.OLEObjects.Add _
(ClassType:="Forms.CheckBox.1", _
Link:=True, DisplayAsIcon:úlse, _
Left:=X, Top:=Y, Width:=XW, Height:=Yh).LinkedCell = cell.Address
DoEvents
End If
End With
Next
End Sub
Avatar
gmlsteph
;o)) Avec ferveur,
c'est dans la même veine que ma 1ère proposition
regarde plus haut,

Amitiés.

--
Steph

On 26 jan, 10:47, "Modeste" wrote:
Bonsour® LSteph  
 Bonne année !!! Meilleurs voeux à tous !!!

>> BIen sûr. Mais si on pouvait choisir le mode « checkbox » comme
>> format d'affichage du champ logique,
> J'ai bien compris ce souhait.
> Un checkbox n'est pas une donnée mais un objet dont on peut utiliser
> les propriétés c'est précisément ce que je dis depuis le débu t. C'est
> pourquoi ma macro te faisait apparaître les checkbox et leur état
> coché ou non dans la cellule,
>> Tu vas  mettre autant de checkbox que de cellules... soit * ..!

;o)))

Sub creeCHKB()
Dim cell As Range '
Dim X As Long, Y As Long, XW As Long, Yh As Long

For Each cell In Selection
  With cell
  If (cell <> "") And (cell.Value = True Or cell.Value = False) The n
  X = cell.Left
  Y = cell.Top
  XW = 15 'cell.Offset(0, 1).Left - X
  Yh = cell.Offset(1, 0).Top - Y
   ActiveSheet.OLEObjects.Add _
      (ClassType:="Forms.CheckBox.1", _
       Link:=True,  DisplayAsIcon:úlse, _
       Left:=X, Top:=Y, Width:=XW, Height:=Yh).LinkedCell = cell.Address
  DoEvents
  End If
End With
Next
End Sub


1 2 3