Liste choix multiple et ordre alphabétique filtre

Bonjour,

voici mon fichier en pj.

Je souhaiterais sélectionner plusieurs item (quand cela est possible) et lorsque ceux-ci sont sélectionnés, qu'ils s'affichent par ordre alphabétique comme ça quand je filtre ils apparaissent proprement.

Par ailleurs, la condition est de ne sélectionner qu'une seule fois un item (même si plusieurs choix sont possibles)

Pouvez vous m'aider s'il vous plait!

Un grand merci

H

?

Bonjour

hyam a écrit :

Pouvez vous m'aider

Ce serait avec plaisir si je comprenais ce que tu veux...

Désolé.

Bye !

Bonjour Au temps pour moi, je vais essayer d'être plus claire:

Pour les Colonnes H I L M N O P S T U V

J'aimerais pouvoir choisir une ou deux ou trois ou voire toutes possibilités dès que je clique sur celles-ci et que l'ensemble s'affiche dans la cellule.

En + de cela, j'aurais aimé que mes choix se présentent par ordre alphabétique.

Par exemple pour la colonne H, si je clique sur "Datables" + "Pre-Clinical Trial" + "Clinicat Trial"

L'ensemble s'affiche dans al même cellule mais dans l'ordre suivant: "Clinicat Trial" + "Datables" + "Pre-Clinical Trial"

Merci pour ton aide!

N'hésite pas si tu as besoin de plus d'éléments.

Bonsoir,

Une première solution à tester :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim tx, i%, j%, ntx$
    If Target.Row < 8 Or Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Me.Columns("H:V")) Is Nothing Then
        Select Case Target.Column
            Case 10, 11, 17, 18: Exit Sub
        End Select
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        ntx = Target.Value
        Application.Undo
        tx = Target.Value & Chr(10) & ntx
        tx = Split(tx, Chr(10))
        For i = 0 To UBound(tx) - 1
            For j = i + 1 To UBound(tx)
                If tx(j) < tx(i) Then
                    ntx = tx(j): tx(j) = tx(i): tx(i) = ntx
                End If
            Next j
        Next i
        Target.Value = Join(tx, Chr(10))
        Application.EnableEvents = True
    End If
End Sub

Une autre solution consiste à utiliser une ListBox...

Cordialement.

Bonjour MFerrand merci beaucoup pour ta réponse mais ça ne fonctionne pas.

seuls les 3 mots de mon précédent exemple apparaissent et la formule ne s'applique pas sur les autres cellules (sur aucune d'ailleurs)

quant à ton idée de "listbox", ça parait pas mal mais je n'ai aucun idée de comment faire (j'ai même cherché sur internet mais ça me parait être du chinois!)

Merci encore pour ton aide

bien à toi hyam

Bonjour MFerrand merci beaucoup pour ta réponse mais ça ne fonctionne pas.

seuls les 3 mots de mon précédent exemple apparaissent et la formule ne s'applique pas sur les autres cellules (sur aucune d'ailleurs)

J'adore toujours quand on me dit ça fonctionne pas !

Alors je prend le temps de rouvrir le fichier, tester sur au moins deux cellules par colonne (sauf deux [défectueuses ?] où seule une cellule est sous liste...), en H, I, L, M, N, O, P, S, T, U, V.

Je confirme donc que cela fonctionne comme demandé !

Je ne sais plus quels sont les 3 mots de ton précédent exemple, mais pour faire bonne mesure, j'en ai mis 6 dans une cellule en H, dont un en double ! (puisqu'aucune limitation n'était demandée).

Quant à la formule dont tu parles, j'ignore ce qu'il peut en être , opérant en VBA sans insérer quelque formule que ce soit, cette notation n'a aucun sens !

Pour plus de sûreté, j'ai repris le fichier communiqué dans mon dernier post pour vérifier... Bé il fonctionne !

Il convient donc que tu commences par faire fonctionner ce fichier Excel ! C'est un pré-requis ! Surtout qu'il n'y a rien à faire pour cela ! (sauf activer les macros, mais cela va de soi !)

Cordialement.

Hahaha ! Ton commentaire est drôle!

Désolée, je me doutais bien que le souci venait de chez moi! je pensais que je n'avais pas activé une fonction ou que sais-je!

En tout cas je te remercie énormément d'avoir pris le temps! c'est très gentil

En parlant de "limite"... est ce que tu penses pouvoir ajouter la condition "qu'aucun doublon ne puisse être possible".

En gros si tu choisis un mot dans une cellule, tu ne puisses plus le choisir à nouveau dans cette même cellule .

En tout cas top ce que tu fais!

Version pour bloquer les doublons :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim tx, i%, j%, ntx$
    If Target.Row < 8 Or Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Me.Columns("H:V")) Is Nothing Then
        Select Case Target.Column
            Case 10, 11, 17, 18: Exit Sub
        End Select
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        ntx = Target.Value
        Application.Undo
        tx = Target.Value: tx = Split(tx, Chr(10))
        For i = 0 To UBound(tx)
            If tx(i) = ntx Then ntx = "": Exit For
        Next i
        If ntx <> "" Then
            tx = Join(tx, Chr(10)) & Chr(10) & ntx
            tx = Split(tx, Chr(10))
            For i = 0 To UBound(tx) - 1
                For j = i + 1 To UBound(tx)
                    If tx(j) < tx(i) Then
                        ntx = tx(j): tx(j) = tx(i): tx(i) = ntx
                    End If
                Next j
            Next i
            Target.Value = Join(tx, Chr(10))
        End If
        Application.EnableEvents = True
    End If
End Sub

Un très grand MERCI!!!!!!!!!

Rechercher des sujets similaires à "liste choix multiple ordre alphabetique filtre"