Filtre d'un tableau multi-colonne

  • Initiateur de la discussion Initiateur de la discussion apt
  • 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 !

apt

XLDnaute Impliqué
Bonsoir à tous,

Depuis un tableau (A2😀11) de données, comment pourrais-je filtrer le contenu multi-colonnes pour avoir une liste en colonne G de tous les noms de matières contenues dans le tableau.

Merci.
 

Pièces jointes

Re : Filtre d'un tableau multi-colonne

Bonsoir Apt, bonsoir le forum,

Je sais pas faire avec des filtres mais peut-ête le code ci-dessous conviendra-t-il :
Code:
Sub Macro1()
'methode Dictionary tirée du site de Jacques BOISGONTIER : [url=http://boisgontierjacques.free.fr/]Formation Excel VBA JB[/url]

Dim dico As Object 'déclare la variable dico (DICtiOnnaire)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim temp As Variant 'déclare la variable temp (TEMPoraire)

Set dico = CreateObject("Scripting.Dictionary") 'définit le dictionnaire dico
Set pl = Sheets("Feuil1").Range("A1").CurrentRegion 'définit la plage pl
Set pl = pl.Offset(1, 0).Resize(pl.Rows.Count - 1) 'redéfinit la plage pl (sans la première ligne)
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    dico(cel.Value) = "" 'alimente le dictionaire dico
Next cel 'prochaine cellule cel de la boucle
temp = dico.keys 'récupère la liste sans doublons dans le tableau temporaire temp
Sheets("Feuil1").Range("G2").Resize(UBound(temp) + 1) = Application.Transpose(temp) 'transpose en G2 la vliste sans doublons
End Sub
Le fichier :
 

Pièces jointes

Re : Filtre d'un tableau multi-colonne

Bonsoir Robert,

Ca marche très bien avec l'idée de dictionnaire.

Je travaillais sur une solution de collection est ça marche aussi :

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cell As Range
    Dim Coll As Collection
    Dim i&

    Application.ScreenUpdating = False
    If Target.Count > 1 Then Exit Sub
    Set Coll = New Collection
    If Not Intersect(Target, [Liste]) Is Nothing Then
        For Each Cell In [Liste]
            On Error Resume Next
            Coll.Add Cell, CStr(Cell)
        Next Cell
        [G2:G1000].ClearContents
        For i = 1 To Coll.Count
            Range("G" & i + 1).Value = Coll.Item(i)
        Next i
        Range("G2:G" & [G65000].End(xlUp).Row).Sort Key1:=[G2], Order1:=xlAscending
        Range("G2:G" & [G65000].End(xlUp).Row).Name = "ListeMatieres"
    End If
End Sub

Liste est plage nommée
 

Pièces jointes

Re : Filtre d'un tableau multi-colonne

Salut @ tous,
Bonsoir Rachid,
C'est vraiment génial tes formules magiques.
Re,
Celleci n'est pas la mienne, moi de ma part je ne sais pas la faire, je vais essayer de la décortiquer ...
N'aie pas peur des formules complexes elles ont un bon gout elles sont tres delicieuses.
Amicalement
 
- 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
6
Affichages
249
Retour