Advancedfilter sur une variable tableau et pas range

Bonjour à tous

sur un projet en cours pour quelqu'un du forum

j'aurais besoin de faire un filtre avancer pour faire une extraction sans doublons comme dans le fichier joint.

normalement advencedfilter ce fait sur un range... mais est-il possible de faire la même chose sur une variable tableau 2D ??? car pour l'instant j'ai une erreur de compilation ... avec :

    TbC = Range(Cells(dep, "G"), Cells(fin, "L")).Value
    TbC().AdvancedFilter Action:=xlFilterCopy, CopyToRange:=tbSD(), Unique:=True

ou avez vous dans vos archives un codes qui permet de le faire l'équivalent sur des tableaux ???

merci

Fred

bonjour à tous

faute de solution je me suis rabattu sur la création d'une feuille temporaire pour les filtres avances....

Fred

Bonsoir,

Tu extrais le résultat du filtre sur une plage, tu récupères la plage dans ton tableau, et tu élimines la plage.

Cordialement.

Bonsoir Mferrand...

c'est ce que j'ai fini par faire.... et sur une feuille temporaire....

c'est dommage que l'on ne puise pas le faire directement à partir de variable...

je ferrais avec...

bonne soirée

Fred

Les feuilles sont assez grandes pour que tu puisses le faire dans une zone inutilisée, on ne verra rien et cela ne laisse pas de trace si tu supprimes ensuite...

Sinon tu as toujours la ressource d'affecter ta plage source à un tableau et de sélectionner les lignes dont tu as besoin pour les placer dans ton autre tableau...

Cordialement.

Bonjour,

C'est une simple transformation d'Array()

Sub Filtre()
  Set d = CreateObject("Scripting.Dictionary")
  TblE = Range("B2:N13")                                   ' Table entrée
  Dim TblS(): ReDim TblS(1 To UBound(TblE), 1 To 4)        ' Table sortie
  For i = LBound(TblE) To UBound(TblE)
    clé = TblE(i, 6) & "|" & TblE(i, 7)
    If Not d.exists(clé) Then
       d(clé) = "": lig = d.Count: TblS(lig, 1) = TblE(i, 6): TblS(lig, 2) = TblE(i, 7) ' Nouvelle clé
       For c = 3 To UBound(TblS, 2): TblS(lig, c) = TblE(i, c + 7): Next c   ' recopie des autres colonnes
    End If
  Next i
  [G16].Resize(d.Count, UBound(TblS, 2)) = TblS
End Sub

Ceuzin

Bonjour Ceuzin

les dictionnaires c'est pas encore mon truc...pourtant j'ai déjà consulté ton site à plusieurs reprises.... un jour je me pencherais vraiment dessus... en attendant je vais étudier ton code...

merci

Fred

Rechercher des sujets similaires à "advancedfilter variable tableau pas range"