(une autre) Liste déroulante conditionnelle

  • Initiateur de la discussion Initiateur de la discussion Jara
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Jara

XLDnaute Nouveau
Bonsoir le Forum,

Les listes déroulantes conditionnelles sont un sujet récurant ici et j'ai bien pris soin de faire des recherches approfondies avant de venir chercher vos lumières.

Je souhaiterais donc faire une liste déroulante conditionnelle.
Cette liste doit proposer les éléments de la colonne A dont la cellule adjacente de la colonne B est vide.
De plus, la plage contenant ces données s'enrichie chaque jour.

Plus d'infos dans le fichier joint.

Merci beaucoup pour votre aide. Je suis en train de me prendre la tête et je suis certain de trouver ici une super solution!!

A vous lire,

Jara
 

Pièces jointes

Re : (une autre) Liste déroulante conditionnelle

Bonjour Jocelyn et merci de réponse rapide 🙂

Le résultat est exactement celui que je souhaite! C'est super!!

J'aurais cependant préféré ne pas avoir à créer un autre onglet. D'autant que le "liste conditionnelle" doit forcément se trouver positionner au même endroit que la liste initiale (LIGNE() de la formule matricielle) il me semble...

Dois-je forcément utiliser la formule matricielle pour pré-créer ma liste? Ne peut-on pas imbriquer la fonction SI() à la fonction DECALER() de la plage nommée "liste"?

En me lisant, je me dis que c'est stupide puisque la formule SI() est matricielle... mais peut-être cette demande peut-elle amener à une solution alternative...

Merci d'avance 😉

Jara
 
Re : (une autre) Liste déroulante conditionnelle

Bonsoir le fil, bonsoir le forum,

En pièce jointe ton fichier modifié avec la macro événemetielle Change ci-dessous. Le liste s'actualise chaque fois que tu sélectionnes la cellule D1.
Le code :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim lst As String 'déclare la variable lst (LiSTe de validation de données)

If Target.Address <> "$D$1" Then Exit Sub 'si la cellule sélectionnée n'est pas D1, sort de la procédure
dl = Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 1 (=A)
Set pl = Range("A2:A" & dl) 'définit la plage pl
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    'si la cellule à coté (colonne B) est vide, définit la liste lst
    If cel.Offset(0, 1).Value = "" Then lst = IIf(lst = "", cel.Value, lst & "," & cel.Value)
Next cel 'prochaine cellule de la boucle
With Target.Validation 'prend en compte la validation de données de la cellule D1
    .Delete 'efface la validation de données existante
    .Add (xlValidateList), Formula1:=lst 'ajoute la liste lst comme nouvelle validation de données
End With 'fin de la prise en compte de la validation de données
End Sub
Le fichier :
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
754
Retour