XL 2019 Choix multiple case à cocher

Fanrs

XLDnaute Nouveau
Bonjour à tous,

Je bloque depuis un petit moment sur la résolution de mon problème, je craque et demande de l'aide... C'est plus un problème de gout que de fonctionnalité

En gros l'utilisateur faire une sélection multiple et les résultats de cette sélection sont reportés en E12

Il faudrait que :
-la zone de liste à sélection multiple ne soit pas une liste déroutante
-qu'elle puisse s'adapter à ma "listfillrange" (C1:C20) qui peut est de longueur variable (sans m'afficher les cases vides sans intitulé)
-que la valeur par défaut soit toute cochée avec report en E12 des résultats sélectionnés
-si possible pas de validation pour le report en E12

1.png


Place aux experts:)
Merci d'avance

Fichier exemple
 
Solution
Ah mais c'est mieux de tout faire avec le double-clic en E12, fichier (4) :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [E12]) Is Nothing Then Exit Sub
Dim test As Boolean, i&
Cancel = True
test = IsEmpty([E12])
With ListBox1
    For i = 0 To .ListCount - 1
        .Selected(i) = test
    Next
End With
End Sub

Fanrs

XLDnaute Nouveau
:D:D:D

Tu en as sur amazon, mais après je suis sceptique sur cette légende 😝

C'est pas la première fois que cela m'arrive sur ce forum :rolleyes:
Pourtant, je pense faire le maximum avec impression écran et fichier joint.... mais ça doit être une divergence de langage dû à mon faible niveau fasse aux "experts"



Je vais essayer autrement :

Il me faudrait des cases à cocher à sélection multiple, sans liste déroulante, dont la plage de donnée se trouve en C1:C7 (voir impression écran). Cette zone de données peut être variable (plus longue C1:C20 ou plus courte C1:C3) du cout il faudrait que le nombres de cases à cocher puissent aussi s'adapter au nombre de données source (nbr ligne).

Quand l'utilisateur fait ses choix, il me faudrait le récap de ses choix dans une cellule E12 (voir impression écran)

C'est mieux ? 🤪🧐

Désolé, mais c'est pas évident car je n'ai pas la logique de construction, je sais juste ou je veux arriver !
 

job75

XLDnaute Barbatruc
Pas beaucoup plus clair mais j'ai eu le temps d'aller aux puces acheter une petite boule.

Puisque vous n'êtes pas fichu de déposer votre fichier voyez le mien ci-joint et cette macro :
VB:
Private Sub ListBox1_Change()
Dim i&, a(), n&
With ListBox1
    For i = 0 To .ListCount - 1
        If .Selected(i) Then ReDim Preserve a(n): a(n) = .List(i, 0): n = n + 1
    Next
End With
[E12] = Join(a)
End Sub
A+
 

Pièces jointes

  • ListBox(1).xlsm
    21.9 KB · Affichages: 17

Fanrs

XLDnaute Nouveau
Merci pour votre réponse

Puisque vous n'êtes pas fichu de déposer votre fichier voyez

Ça, c'est pas cool et pas très distingué :rolleyes:
J'aurai du l'entourer de rouge... Peut-être chez vous le téléchargement ne se passe pas comme chez moi !!!


2.png



Merci pour votre proposition, mais cela revient au même que mon fichier exemple ;)

edit : enfin quasiment, le votre est mieux
 
Dernière édition:

Victor21

XLDnaute Barbatruc
Bonjour, Fanrs.

Le Monsieur pas cool et pas très distingué aux 33684 messages destinés pour la plus grande partie à aider les personnes en difficulté voulait faire remarquer au p'tit nouveau aux 27 messages qu'en bas à gauche de la fenêtre, il y a un bouton qui permet de joindre un fichier Excel.
Et si ce fichier est correctement construit, il illustre le problème avec clarté et concision, à l'aide d'exemples représentatifs de ce qu'on a et de ce qu'on souhaite obtenir.
 

Fanrs

XLDnaute Nouveau
Le fichier n'était pas joint... :oops:

Excusez-moi de ce peu et mille excuses d'être débutant, autant en Excel qu'en l'utilisation de ce forum.
Ce dernier n'est visiblement pas de mon niveau, aussi !

Ça doit être dure de fédérer de nouveaux tops membres !

s
 

Fanrs

XLDnaute Nouveau
Bonjour,

Merci pour votre relance et désolé pour cette réponse tardive... vous savez ce que c'est, le samedi soir, enfin le droit d'aller boire un verre en terrasse...😇


Nom défini Liste =DECALER(Feuil1!$C$1;;;NBVAL(Feuil1!$C:$C))
Ne semble pas fonctionner chez moi ! Si je rajoute dans votre fichier A8 et A9 à la suite de la liste cela ne crée pas de case à cocher correspondantes... Je dois mal comprendre le principe de fonctionnement.
Idem si je supprime A7, cela efface l'item de la case à cocher, mais pas la case à cocher.


Concernant le"cochage" par défaut, y aurait-il un code vba (ou autre subtilité Excel) qui fait le taff à l'ouverture du fichier, par exemple, et qui coche toutes les cases ?


Bon dimanche à vous
 

job75

XLDnaute Barbatruc
Bonjour Fanrs,

Fichier (2), avec ce code la ListBox se met à jour automatiquement quand on modifie la liste source :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
ListBox1.ListFillRange = "Liste"
End Sub
Avec un double-clic dans la ListBox tout est sélectionné :
Code:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim i&
With ListBox1
    For i = 0 To .ListCount - 1
        .Selected(i) = True
    Next
End With
End Sub
A+
 

Pièces jointes

  • ListBox(2).xlsm
    23.3 KB · Affichages: 8

Fanrs

XLDnaute Nouveau
Super merci beaucoup

C'est quand même impressionnant ce que vous arrivé à faire.

Pour tout sélectionner, cela m'embête un peu, car votre solution nécessite une action de l'utilisateur, j'aimerai plutôt que cela soit automatique par appel de macro dans un module... Possible ? 🥺
 

job75

XLDnaute Barbatruc
En complément fichier (3) avec cette macro pour tout désélectionner :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [E12]) Is Nothing Then Exit Sub
Dim i&
Cancel = True
With ListBox1
    For i = 0 To .ListCount - 1
        .Selected(i) = False
    Next
End With
End Sub
 

Pièces jointes

  • ListBox(3).xlsm
    23.1 KB · Affichages: 6

Discussions similaires