Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Liste déroulante avec affichage multiple

M.Ben

XLDnaute Junior
Bonjour le forum,

Je vous sollicite car je n'ai pas d'idée sur la ou les manières qui existe pour répondre à la demande que j'ai.

J'ai un fichier Excel qui sert à répertorier les heures passées par semaine (Feuille de pointage).

J'ai des onglets qui vont de S01 à S52 (correspondantes au semaines de l'année)

Dans celles-ci j'ai une liste déroulante en colonne B qui est liée à des données qui sont présentes dans l'onglet "Détails désignation".

Ma question est la suivante, existe t-il un moyen par formule ou VBA pour que dans cette liste, on y voit les éléments de la colonne A à C de l'onglet "Détails désignation", et que lorsque on sélectionne un donnée que seule la donnée "Catégorie" apparaissent.

Il existe une méthode qui consiste à concaténer les données, mais le problème (si je ne dis pas de bêtise) c'est que toutes les données apparaitront dans la cellule avec cette méthode.

Un peu à l'image d'une listeBox ou une ListView, sans passé par une ComboBox ou autre (pour éviter d'avoir x contrôle formulaire à a jouter à toutes mes lignes de tous mes onglets).

Auriez-vous des pistes ou des exemples sur lesquels je pourrais m'appuyer.

J'ai joint le fichier Excel afin de vous permettre de visualiser comment sont construits les différents onglets.
 

Pièces jointes

  • Feuille de pointage-TEST 2023.xlsm
    295.3 KB · Affichages: 11

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour M.Ben et bienvenu sur XLD, Bonjour Fanfan,
Une autre approche en utilisant dans Thisworkbook :
VB:
' Sur clic cellules B4:B29
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Left(ActiveSheet.Name, 1) = "S" Then
        If Not Intersect(Target, [B4:B29]) Is Nothing Then
            ActiveSheet.Unprotect
            With Selection.Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Liste"
                .ShowInput = True
                .ShowError = True
            End With
            ActiveSheet.Protect
        End If
    End If
Fin:
End Sub
' Sur validation
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Left(ActiveSheet.Name, 1) = "S" Then
        If Not Intersect(Target, [B4:B29]) Is Nothing Then
            ActiveSheet.Unprotect
            Application.EnableEvents = False
            On Error Resume Next
            Target = Split(Target, " - ")(1)
            ActiveSheet.Protect
        End If
        Application.EnableEvents = True
    End If
End Sub
 

Pièces jointes

  • Feuille de pointage-TEST 2023.xlsm
    305.3 KB · Affichages: 10

M.Ben

XLDnaute Junior
Bonsoir, Fanfan et Sylvanu,

Je vous remercie pour vos propositions les 2 fonctionnes très bien et elles répondent à ma demande.

J'aime beaucoup le rendu de celle de Sylvanu, Car on dirait une liste déroulante classique que l'on obtient quand on passe par la validation de donnée. Le seul inconvénient que je vois, c'est qu'on ne voit pas la totalité de ce qui est écrit et que j'ai l'impression qu'on ne peut pas modifier ou alors je ne vois pas la ligne qui gère le paramètre.

Celle proposé par FanFan est top pour l'affichage (on voit tous et on peut jouer sur la largeur des colonnes si on le souhaite. C'est l'userform qui fait bizarre mais bon ça fait parfaitement le taf .

Par contre FanFan et Sylvanu, je constate que vous faites parties des plus actifs et que vous possédez des compétences hors normes.

Est-ce un abus si je vous demande de m'aider à décrypter vos programmes car certaines fonctions utilisées sont pour moi inconnu (surtout dans la proposition de Fanfan).

La programmation de Sylvanu m'est un peu plus familière par rapport aux quelques programmes que j'ai en cours de développement (il y en a pas des masses, mais petit à petit j'apprend et on me sollicite de plus en plus pour développer des fichiers Excel quand j'ai du temps pour m'y consacrer).

Merci encore à vous deux.

Cordialement
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
En prime une V3 avec :
1- Un peu de commentaire dans le code
2- J'ai viré toutes ces listes déroulantes (1300) qui trainaient dans toutes les feuilles en colonne B
3- J'ai aligné la colonne B en centrée ( il y avait un peu de tout comme alignement )
 

Pièces jointes

  • Feuille de pointage-TEST 2023 (V3).xlsm
    314.2 KB · Affichages: 18

M.Ben

XLDnaute Junior
Bonjour Sylvanu,

Vos propositions sont géniales grand merci, et les commentaires vont bien m'aider pour mes projets en cours et futurs.
3- J'ai aligné la colonne B en centrée ( il y avait un peu de tout comme alignement )
Oui je comptais m'en occuper une fois l'histoire des listes déroulantes réglées.

Je doit reprendre toutes les semaines, car de mémoires j'avais décelé des problèmes dans les formules etc.

Faut que je remette un peu d'ordre dedans, car au file des années que le fichier est utilisé, certains déprotègent la feuille.
Font leurs modifications sans ce préoccuper des répercussions et d'autres ne connaissent pas forcement Excel.

Encore une fois merci
 

M.Ben

XLDnaute Junior
Le mot de passe est un grand débat, je proposerai de nouveau l'idée (c'est-on jamais).

En fonction des évolutions, je ferai vivre le module "SuppressionToutesListesDéroulantes".

Merci
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Le mot de passe est un grand débat, je proposerai de nouveau l'idée
J'ai toujours adopté la philosophie suivante en accord avec ma direction :

Je suis responsable de cet outil donc je le protège, et en assume la responsabilité.
Si quelqu'un n'est pas d'accord je lui livre une version non protégée. MAIS je ne connaitrais pas cette version, je n'en ferais ni la maintenance, ni les évolutions, et encore moins les corrections.
Cette version sera assumée uniquement pas le demandeur.

Vu le nombre de conneries qu'on peut faire sur un fichier XL et leurs conséquences, c'est un argument qui a toujours porté.
( évidemment ne marche que si vous êtes soutenu par votre hiérarchie. )
 

M.Ben

XLDnaute Junior
J'aime bien cette philosophie, je la présenterai comme tel, je verrai bien les réactions
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…