Tri complexe de données

Bonjour et merci pour ce super forum.

J'ai été amené à effectuer une requête et je souhaite trier les résultats de celle-ci.

Pour schématiser, disons que je dois cibler toutes les factures comprenant un article précis, par exemple une télévision, avec tous les articles compris dans cette même facture. Les autres factures ne m'intéressent pas.

Dans une de mes colonnes, j'ai la liste de tous les articles vendus, et dans une deuxième colonne j'ai le numéro de facture. Je souhaite cibler toutes les télévisions et les articles vendus avec ces télévisions sur la même facture, et exclure toutes les autres factures. Il est facile de trier toutes les télévisions, mais je veux les télévisions ET les articles qui figurent sur la même facture, et c'est là que ça se complique.

J'ai cherché une solution mais je n'ai pas trouvé. Quelqu'un saurait-il m'aider ?

Merci d'avance !

Bonjour Anaximandros,

Pour mieux pouvoir t'aider et comprendre ce que tu veux.

Sans données confidentielles.

A+

Bonjour

sans voir comment il est structuré ton fichier, on ne pourrait pas t'aider.


Salut l'ami mdo,

désolé pour la collision

j'ai commencé à écrire et j'ai reçu un appel.

Bonjour,

Salut mdo100, Rashid ! inutile que je réitère votre injonction commune... !

Cela me paraît devoir donner lieu à un recueil des numéros de factures comportant des téléviseurs, suivi d'un filtrage de ces numéros... Une petite procédure VBA devrait être la solution... après examen du fichier.

Cordialement.

bonjour Mferrand

ah..... vous voyez ça comme ça sous les tropiques ?!

cordialement

Bonsoir et merci de vos réponses.

J'ai composé un fichier lambda car ma requête contient énormément de données confidentielles. J'espère que le fichier joint suffira, car l'idée est la même.

26factures.xlsx (8.21 Ko)

Bonjour,

avec un simple filtre élaboré

P.

ps: il ne s'agit pas d'un TRI mais d'un filtre, c'est différent

30factures.xlsx (17.98 Ko)

Je ne suis pas certain de bien comprendre la logique de ce filtre ?


Je précise que ma requête contient plusieurs dizaines de milliers de lignes.

re,

le tableau de gauche est ta base de "données"

le tableau au haut à droite est la zone de critère de recherche, on y recherche "téléviseur ET facture n° 146681" ou (en dessous) tout ce qui concerne le ,n° 146681 en plus de ce téléviseur

la 3e partie (avec 3 données) est le résultat.

NB: TOUS les titres de colonnes doivent être rigoureusement exact

On accède à ça par le menu données/filtre avancé.

ça convient ?

P.

Bonsoir @ tous,

voir PJ

21anaximandros.xlsx (9.83 Ko)

@ + +


Anaximandros a écrit :

Je précise que ma requête contient plusieurs dizaines de milliers de lignes.

Pas vu..

oublie la solution que j'ai proposée

@ + +

Bonsoir,

Une proposition sans macro pour commencer

16classeur1.xlsx (44.42 Ko)

Bonsoir,

Version filtrage macro :

Sub FiltrerTV()
    Dim Fact, n%, i%
    With ActiveSheet
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        For i = 2 To n
            If .Cells(i, 1) = "Téléviseur" Then Fact = Fact & ";" & .Cells(i, 2)
        Next i
        If Fact = "" Then Exit Sub
        Fact = Replace(Fact, ";", "", 1, 1)
        If InStr(Fact, ";") > 0 Then Fact = Split(Fact, ";")
        .Range("B1").AutoFilter 2, Fact, xlFilterValues
    End With
End Sub

Cordialement.

patrick1957 a écrit :

re,

le tableau de gauche est ta base de "données"

le tableau au haut à droite est la zone de critère de recherche, on y recherche "téléviseur ET facture n° 146681" ou (en dessous) tout ce qui concerne le ,n° 146681 en plus de ce téléviseur

la 3e partie (avec 3 données) est le résultat.

NB: TOUS les titres de colonnes doivent être rigoureusement exact

On accède à ça par le menu données/filtre avancé.

ça convient ?

P.

Merci pour la réponse. Je pense que cette solution est compliquée à mettre en oeuvre sachant que ma requête contient environ 20.000 entrées.


Merci pour vos réponses. Je vais tester sur mon fichier pour voir ce que ça donne !

Anaximandros a écrit :

Merci pour la réponse. Je pense que cette solution est compliquée à mettre en oeuvre sachant que ma requête contient environ 20.000 entrées.


Merci pour vos réponses. Je vais tester sur mon fichier pour voir ce que ça donne !

SI ça c'est compliqué bin... essaye le vba !

MA réponse prends 30 secondes à copier les titres en 2 exemplaire comme indiqué, puis mettre les critères et les 20000 lignes seront traitées en 2 secondes, je ne suis pas certain que tu aie essayé !

Compliqué ça , c'est un truc de base des tableurs depuis plus de 25 ans ....

Bonjour,

La macro fonctionne et je vous en remercie.

Je l'ai juste modifiée pour cibler ce qui m'intéresse. En revanche, elle ne fait pas le tri par numéro de facture mais par type d'article, je suis donc obligé de refaire un tri manuel sur le numéro de facture.

Bonjour,

Tri par numéro de facture non demandé !

Voilà :

Sub FiltrerTV()
    Dim Fact, n%, i%
    With ActiveSheet
        If .AutoFilterMode Then
            If .FilterMode Then .ShowAllData
        End If
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("A1:D" & n).Sort key1:=.Range("B1"), order1:=xlAscending, Header:=xlYes
        For i = 2 To n
            If .Cells(i, 1) = "Téléviseur" Then Fact = Fact & ";" & .Cells(i, 2)
        Next i
        If Fact = "" Then Exit Sub
        Fact = Replace(Fact, ";", "", 1, 1)
        If InStr(Fact, ";") > 0 Then Fact = Split(Fact, ";")
        .Range("B1").AutoFilter 2, Fact, xlFilterValues
    End With
End Sub

Cordialement.

Rechercher des sujets similaires à "tri complexe donnees"