Tri ou Filtre avec conditions

Bonjour,

Sur un tableau je dois filtrer et trier des données avec 2 criteres.

Le premier un millesime année et la seconde un montant > 50000€. Comment mettre ca dans une macro.

En fait je veux filtrer mes operations comme ci/ si une operation a un EJ > 50000€ dans l'année je la selectionne et toutes les operations libellés 2010, 2110.( les 2 colonnes en jaune)

Suite au filtre je souhaiterais les classer par Departements (colone B) / Attributaires (colonne C) / Immeubles (colone D) en 2 sections . la 1ere les EJ de + de 50000€ et la 2ème section ceux de - de 50000€.

24exporttemp.rar (32.62 Ko)

Bonsoir

Tu as oublié de joindre le fichier

Cordialement

Bonjour à tous,

Il serait bon d'ajouter 3 ou 4 lignes en haut (pour emplacement critères et bouton)

La colonne "G" est-elle disponible ? (c'est pour faciliter le critère année)

je te propose deux feuilles d'extraction

1) supérieure à 500 000

2) inférieure ou égal à 500 000

chaque feuille étant triée

dis-nous si Ok,

à te relire

Amicalement

Claude

-- Jeu Sep 02, 2010 12:22 pm --

re,

en attendant, ici j'utilise la colonne "G"

les feuilles "<500Ke" et ">500Ke" doivent être placées en 1er

les valeurs à zéro ne sont pas extraites

Sub ExtraitFiltres()
Dim i As Byte
    Application.ScreenUpdating = False
'Macro par Claude Dubois pour "pilotebien" Excel-Pratique le 02 Sept 2010
'--- filtres ---(les feuilles "<500Ke" et ">500Ke" doivent être placées en 1er) ---

    With Sheets("ExportTemp")
            .Range("g2:g" & .[b65000].End(xlUp).Row) = "=Left(f2,4)*1" 'formule année

        For i = 1 To 2
            If i = 1 Then .Range("ad2") = "=and(g2>2009,g2<2111,i2>0,i2<=500000)" 'critères
            If i = 2 Then .Range("ad2") = "=and(g2>2009,g2<2111,i2>500000)" 'critères
            .Range("b1:z" & .[b65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
            .Range("ad1:ad2"), CopyToRange:=Sheets(i).Range("b1:z1"), Unique:=False

                '--- tris ---
            With Sheets(i)
                .Range("b1:z" & .[b65000].End(xlUp).Row).Sort Key1:= _
                .Range("b1"), Order1:=xlAscending, Key2:= _
                .Range("c1"), Order2:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:= _
                    False, Orientation:=xlTopToBottom

                .Range("b1:z" & .[b65000].End(xlUp).Row).Sort Key1:= _
                .Range("d1"), Order1:=xlAscending, Key2:= _
                .Range("i1"), Order2:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:= _
                    False, Orientation:=xlTopToBottom
            End With
        Next i
            .Range("g2:g" & .[b65000].End(xlUp).Row).ClearContents
            .Range("ad2").ClearContents
    End With
End Sub

Amicalement

Claude

Merci et bonsoir pour le coup de main

C'est ce que je cherchais . Le soucis il faut que j'affine car je n'ai pas toutes mes operations. J'ai du oubier quelque chose dans mon ennocé. Je travaille ca ce soir et vous tiens au courant .

Merci

Merci de votre aide. Aprés differents test et mmodifications infructueuses je reviens vers vous.

Dans la formule il faudrait faire apparaitre une condition que j'ai oublié de dire .

Il doit apparaitre obligatoirement les années millesimées 2010 (année en cours). Comment mettre ca en oeuvre. Merci

bonsoir,

Uniquement l'année en cours ?

et toujours la colonne "F" ?

Claude

bonsoir et merci.

Il faut imperativement l'année 2010 et toutes celles qui ont un EJ (colone F) superieur a 50.000€ soient selectionner.

Comment faire pour que le tri par valeur >< 500.000€ soit l'une en dessous l'un de l'autre.

La colone G n'est pas dispo - On peut prendre la colone AB - Je reserve la AA au cas ou. Merci.

Bonsoir,

Envoie la structure réelle de la feuille "ExportTemp"

Simplement la ligne d'en-têtes à la bonne ligne + une ligne anonymisée

je résume,

1) extraction des valeurs inférieures ou égales à 50.000

2) extraction des valeurs supérieures à 50.000

le tout sur la même feuille et pour l'année en cours (2010)

Les 2 extractions séparées par une ligne.

à te relire

Claude

édit: je ne sais pas pourquoi j'étais parti sur 500.000 !

Merci pour votre aide

J'ai fais un fichier reduit .

Quand j'exporte de mon appli l'export Temp je le colle dans l'onglet export OP 2010

De la petite verif perso de quelques données . Puis copie du tableau dans l'onglet No Touch 2010 puis un tri par code PLIMAT. De la je fais a la main la suupression de ces lignes:

toutes OP non millesimés 2010 (2010 c'est mon années de travail) qu'il y ait un EJ de 0 a 10.000.000€

puis toutes operations qui n'a pas un EJ (colone I) le critere de retenu est un montant > 50000€ (2003 a 2009 puis 2011 a 2015 puis 2110, 2111, 3000)

Ensuite copie de cette feuille a la main vers l'onglet OP 2010. C'est a ce moment que je dois classer mes OP avec 2 criteres : OP > 500.000€ et OP < 500.000€ séparées par une ligne et classer par un choix multiples si cela est possible.

Ce que je voudrais en choix :

classement par EJ, classement par code plimat, classement par immeubles, classement par departement aprés si je comprends le raisonneemnt je ferais plus. Je pensais faire un bandeau avec ces differents choix sur le coté ou en haut dans une barre de menu. Merci

22test-appli.rar (64.05 Ko)

re,

Essaye de faire un résumé clair,

là, on y comprend plus rien !

Amicalement

Claude

édit: voici où j'en suis, sur la base du 1er fichier

extractions sur feuille "Extrait" en utilisant la colonne "AB"

Sub ExtraitFiltres2()
Dim Lg%, Lg2%, x%, i As Byte
    Application.ScreenUpdating = False
'Macro par Claude Dubois pour "pilotebien" Excel-Pratique le 06 Sept 2010
'--- filtres les extractions dans feuille "Extrait" ---
        Sheets("Extrait").Range("b1:ab" & [b65000].End(xlUp).Row).Clear
    Lg = 1
    With Sheets("ExportTemp")
            .Range("ab2:ab" & .[b65000].End(xlUp).Row) = "=Left(f2,4)*1" 'formule année
        For i = 1 To 2
            If i = 1 Then .Range("ad2") = "=and(ab2=$a$1,i2>50000)" 'critères
            If i = 2 Then .Range("ad2") = "=and(ab2=$a$1,i2>0,i2<=50000)" 'critères

            .Range("b1:ab" & .[b65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
            .Range("ad1:ad2"), CopyToRange:=Sheets("Extrait").Range("b" & Lg & ":ab" & Lg), Unique:=False

            Lg2 = Sheets("Extrait").Range("b65536").End(xlUp)(2).Row
            If i = 1 Then x = Lg2
                '--- tris ---
            With Sheets("Extrait")
                .Range("b" & Lg & ":z" & Lg2).Sort Key1:= _
                .Range("i" & Lg), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1

                .Range("b" & Lg & ":z" & Lg2).Sort Key1:= _
                .Range("b" & Lg), Order1:=xlAscending, Key2:= _
                .Range("c" & Lg), Order2:=xlAscending, Key3:= _
                .Range("d" & Lg), Order3:=xlAscending, Header:=xlYes, OrderCustom:=1
            End With
                Lg = Lg2
        Next i
            .Range("ab1:ab" & .[b65000].End(xlUp).Row).ClearContents
            .Range("ad2").ClearContents
    End With
        With Sheets("Extrait")
            .Rows(x).Range("ab1").Clear
            .Rows(x).Clear
            .Cells(x, 2) = "Inférieures à 50.000"
            .Activate
        End With
End Sub

Claude

Bonjour,

Je vais tenter de faire simple mais pas facile.

J’extrais de mon application un fichier Excel que je copie dans l’onglet export 2010. Feuille de sauvegarde

Vérification des données et copie vers l’onglet No Touch 2010.

Je fais une suppression des lignes (non traitées ici). Je ne garde que les opérations millésimés 2010 et 2110 et qui ont un EJ supérieur à 50.000€ (donc en conclusion on retrouvera des OP 2007-2008-2009-2011-2012-) les n0 d’OP peut évoluer dans le temps.

Puis je copie ce tableau (environ 75 lignes) vers l’onglet OP 2010.

C’est maintenant que j’ai besoin de vous.

Je voudrais effectuer une division de mon tableau général en 2 tableaux comme ci :

1 tableau avec les OP avec un EJ > 5000.000€ et un tableau avec les OP avec un EJ> 500.000€ sur la même feuille et séparée par une ligne

Et la possibilité d’avoir un tri personnalisé. J’explique : je voudrais que l’utilisateur puisse choisir son tri du tableau :

Tri par n° PLIMAT

Tri par code département

Tri par sigle attributaire

Tri par code immeubles.

Merci.

re,

Puis je copie ce tableau (environ 75 lignes) vers l’onglet OP 2010.

Donc, je ne m'occupe que de cet onglet (tu fais ta soupe avant)

Pour les tris sur commande, il faudrait 2 onglets séparés

1 tableau avec les OP avec un EJ > 5000.000€ et un tableau avec les OP avec un EJ> 500.000€ sur la même feuille et séparée par une ligne

c'est quoi ces chiffres !!

à te relire

Bonjour,

Ces 2 chiffres <ou > 500.000€ me permet de trier les operations importantes vers les moins. 1er test que vous aviez realisé.

Merci

re,

écrit comme çà, c'est déjà mieux !

et pour les tris ?

je ne sais pas faire sur un seul onglet

On peut faire sur 2 onglets aucun soucis.

Merci

re,

Finalement sur un seul onglet "Extrait"

on part de la feuille "Export OP 2010"

vois si le tri te convient

tu sélectionne la colonne à trier en 1ère clé (ligne 1),

la 2ème clé est la valeur en colonne "i"

édit: on ne sort pas les valeurs à zéro, ok ?

Claude

Bonsoir,

Que devient ce poste ?

Je peux le viré de mes archives ?

Amicalement

Claude

Rechercher des sujets similaires à "tri filtre conditions"