Trier un tableau en fonction d'une plage de cellule externe

Bonjour à tous !

Je vous explique mon souhait (et problème).

L'idée est de trier des clients pour un commercial en fonction des codes postaux qui lui sont attribués

Dans un onglet, j'ai une liste de clients par département (nom, activité, adresse, CP, ville, et téléphone), environs 800 clients (plage :clients)

Dans mon second onglet, j'ai la liste des codes postaux, environs 20 codes postaux.(plage:CP)

Dans le dernier onglet, le résultat du tri ....

Je cherche donc une façon (formule ou VBA) de faire ce tri automatiquement, sachant que les plages clients et CP sont modifiables (copier coller à partir d'autres fichiers, mais avec la même mise en forme).

Merci à vous pour le coup de pouce !

Il n'y a personne qui possède la solution ?

Bonjour avec un fichier ce serait mieux...

mais si j'ai bien compris un filtre élaboré devrait t'aider... ou un tcd

Enfin sans voir c'est difficile de t'orienter.

teten1

Merci de la réponse.

Je mets un exemple rapidement.

ci-joint le fichier exemple, dans la réalité, il y a environs 800 prospects et 50 cp max

Bonjour,

L'idée est de trier des clients pour un commercial en fonction des codes postaux qui lui sont attribués

Ils sont où les commerciaux et les CP associés ?

Cdlt;

Je me suis certainement mal exprimé.

J'importe d'Annucapt un fichier prospect pour un département (ex:22)

Sur ce département, il peut y avoir 2-3 commerciaux, dont la liste des CP est effectué par la direction.

Aujourd'hui, je prends mon fichier prospect, et à l'aide du filtre (sur la colonne CP) je saisie manuellement les CP, puis sélectionne et copie/colle les cellules dans un nouveau fichier ... le faire une fois ça va, mais à force, c'est long....

Je me demandais donc s'il n'y a pas moyen d'automatiser ce tri, via une formule, fonctionnalité d'excel, voir du VBA.

J'ajoute, que le fichier prospect n'est jamais le même, ni ceux des CP (mais je les remplacerai en copiant/collant les données.

Merci à vous

Re,

Dialogue de sourds !...

Cdlt.

re, je ne comprends pas ta remarque ...

Dans le fichier que j'ai transmis, il y a l'onglet "Liste prospects", que je change en fonction du secteur géographique.

L'onglet "CP attribués", que je change en fonction du secteur du commercial.

Et l'onglet "Fichier trié", ou j'aimerai que mon tableau apparaisse

'Dans "Fichier trié", copier les cellules de "Liste prospects" si la valeur de "CP attribué$A1" apparait dans "Liste prospects$D1", ne pas faire apparaître si la valeur n'est pas présente.

Merci

Bonsoir à tous,

Si j'ai bien compris :

Option Explicit
Sub test()
Dim rngCrit As Range, r As Range, vCrit, dico As Object
    Set dico = CreateObject("scripting.dictionary")
    dico.CompareMode = 1
    Application.ScreenUpdating = False
    With Sheets(2)    'la feuille où se situe la liste des codes postaux
        Set rngCrit = .Range("a2:a" & .Range("a" & .Rows.Count).End(xlUp).Row)
        For Each r In rngCrit
            dico(CStr(r.Value)) = Empty
        Next
    End With
    vCrit = dico.keys
    With Sheets(1).Cells(1).CurrentRegion 'la feuille source
        .Parent.AutoFilterMode = False
        .AutoFilter 4, vCrit, 7
        .Offset(1).Resize(.Rows.Count - 1).Copy
        Sheets(3).Cells(2, 1).PasteSpecial Paste:=xlPasteAll  'la feuille cible
        .AutoFilter
    End With
    Set dico = Nothing
    Application.ScreenUpdating = True
End Sub

C'est mieux ainsi

Option Explicit
Sub test()
Dim vCrit, rng As Range
    Application.ScreenUpdating = False
    With Sheets(2)    'la feuille où se situe la liste des codes postaux
        vCrit = .Range("A2:A" & .Range("A" & .Rows.Count).End(xlUp).Row).Value
    End With
    With Sheets(1).Cells(1).CurrentRegion    'la feuille source
        .Parent.AutoFilterMode = False
        .AutoFilter 4, Application.Transpose(vCrit), 7
        On Error Resume Next
        Set rng = .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
        On Error GoTo 0
        If Not rng Is Nothing Then
            rng.Copy
            Sheets(3).Cells(2, 1).PasteSpecial Paste:=xlPasteAll    'la feuille cible
        End If
        .AutoFilter
    End With
    Application.ScreenUpdating = True
End Sub

klin89

Super !

Je teste cela, dois-je modifier quelque chose (range ou autre) ?

Encore merci

Edit :Cela fonctionne superbement bien !

Par contre j'ai voulu créer un bouton d'action (mis sur la feuille 1 "Liste Prospects", je lui ai bien attribué la macro, mais j'ai cette erreur :

"impossible d'exécuter la macro"Fichier trie prospects.xlsm!trie . Il est possible qu'elle ne soit pas disponible dans ce classeur ou que toute les macros soient désactivées."

Or quand je clic sur F5, la macro s'exécute sans soucis, et j'ai bien accepté toute les macros dans les options ... une idée ?

Sincèrement, encore merci !

Je viens de trouver, j'ai placé le bouton sur la feuille contenant les codes postaux, et cela fonctionne très très bien.

J'ai fais le test avec 900 prospects et 25 CP, résultats en quelques secondes, sans erreur (je l'avais fait manuellement).

Merci Klin89 !!!!

Rechercher des sujets similaires à "trier tableau fonction plage externe"