XL 2010 trier une liste pour la validation de données

fb62840

XLDnaute Impliqué
Bonjour à toutes et tous,

J'ai créé une liste de données dont le contenu correspond au contenu de la ligne 2 sur la feuille 1
Pour cela j'ai nommée la plage de cellule de toute la ligne 1 de la colonne B à la colonne XFD, le nom est MALISTE1

Dans les cellule de B à XFD, certaines cellules sont vides

Cela a pour conséquence que si j'utilise cette source pour créer une validation de données sur une cellule que la liste déroulante présente des "vides" entre les valeurs sélectionnables dans la liste.

Ma question est la suivante :

Est-il possible d'obtenir que la liste déroulante ne présente pas les "vides" et que les valeurs se suivent les unes sous les autres en "zappant" les vides ?

Merci pour votre aide
 

Dugenou

XLDnaute Barbatruc
Supporter XLD
Bonjour,
1) as tu vraiment besoin d'aller jusqu'à XFD ? ça fait vraiment beaucoup de valeurs (16384 ) tu pourrais peut être limiter à 500 ou 1000 ce qui est déjà conséquent
2) pour avoir une liste déroulante sans vides, tu va devoir passer par une zone intermédiaire où tu "calculeras" la liste avec une formule matricielle. L'intérêt est qu'on pourra ainsi n'afficher que les valeurs et sans doublons si besoin et que le clic sur la flèche t'affichera la première valeur de la liste

Cordialement

Salut Chris !
 

Fichiers joints

Chris401

XLDnaute Accro
Bonjour

Tu peux également passer par un code (à placer dans la feuille qui a les validations de données)
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Set d = CreateObject("Scripting.Dictionary")
        For Each c In Sheets("Feuil1").Range("B1:XFD1")  ' A Modifier - Nom Feuille et plage des cellules de la liste
            If c.Value <> "" Then d(c.Value) = ""
        Next c
       
        If Not Intersect(Target, Range("E1:E10,G1:G10")) Is Nothing And Target.Count = 1 Then  'A Modifier - Cellules ayant la validation de données
            Target.Validation.Delete
            Target.Validation.Add xlValidateList, Formula1:=Join(d.keys, ",")
        End If
End Sub
 

fb62840

XLDnaute Impliqué
Bonjour,

Merci pour vos messages.



J'en passe par un 2nd onglet afin de transposer les valeurs qui étaient en colonnes sur le premier onglet, et les déposer en lignes sur le second onglet.

Avec la formule proposée dans ton exemple, on obtient effectivement la disparition des vides
=SIERREUR(INDEX($A$7:$SF$7;PETITE.VALEUR(SI($A$7:$SF$7<>"";COLONNE($A$7:$SF$7));NBVAL($B$10:B10)));"-")

Pourrait-on obtenir un résultat équivalent avec une transposition ?

Merci
 

fb62840

XLDnaute Impliqué
Bonjour Chris,

Merci pour cette suggestion.
Se pourrait-il que la macro VBA produise la création des listes déroulantes
afin que pour chaque colonne la portion

Code:
For Each c In Sheets("Feuil1").Range("B1:XFD1")  ' A Modifier - Nom Feuille et plage des cellules de la liste
           If c.Value <> "" Then d(c.Value) = ""
       Next c
S'ajuste afin, que les listes déroulantes en colonne A fassent référence aux contenu de la ligne 1 de B à XFD
en colonne B fassent référence à la ligne 2 de B à XFD
et ainsi de suite...

Merci
 

Chris401

XLDnaute Accro
Je lis, je relis, mais ....

De ce que je comprends, sur la feuille NOMS tu veux, dans chaque lignes à partir de la colonne B une liste déroulante de tous les mots inscrits sur la même ligne. Si c'est bien cela, peux-tu m'en dire la finalité ?
 

fb62840

XLDnaute Impliqué
A chaque nom doit être attribuée une série d'items sur la feuille NOMS (chacun ayant "droit" à x items
Sur la feuille 2 j'ai besoin de créer les éléments qui me serviront à créer des zones nommées à partir des listes d'items attribués à chacun
Ces zones nommées devront contenir la liste des items sans "vide"
Ces noms serviront ensuite à créer une validation de données sur une autre feuille encore
où cette fois on aura, les noms en lignes, et l'attribution des items jour par jour à l'aide d'une liste déroulante

Voilà, je ne peux pas être beaucoup plus clair... navré
 

Dugenou

XLDnaute Barbatruc
Supporter XLD
Bonjour,
La formule que j'ai donnée peut très bien travailler sur des colonnes au lieu de lignes si c'est la question. Cependant, à lire ton explication, il me semble qu'à raison d'une zone nommée par nom, ça va vite devenir ingérable par formules : mieux vaut passer par une macro comme proposé par Chris401

Cordialement
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas