IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Tri personnalisé VBA [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 37
    Par défaut Tri personnalisé VBA
    Bonjour,

    J'ai une série de 23 codes qui ont des montants annuels (de 2005 à 2016).
    Mes données sont réparties de la sorte:

    Code	Annee	Tr1	Tr2	Total 
    CAD	2005	979,00	405,00	1 384,00   
    CAD	2006	0	63,00	63,00
    ...   
    CAD	2016	979,00	72,00	1 051,00  
     
    AED	2005	792,12	65,00	857,12  
    ... 
    AED	2016	792,12	65,00	857,12
       
    X01	2005	367,54	0	367,54  
    .. 
    X01	2016	367,54	0	367,54 
    ...
    Je veux trier mon tableau par une liste personnalisée:
    An    Code	 Tr1 	 Tr2 	 Total 
    2005	X01	 ***   ***    ***		
    	KWD	 ***   ***    ***
    	GBP	 ***   ***    ***
    	ESP			
    	X25			
    2006	X01			
    	KWD			
    	GBP			
    	ESP			
    	X25			
    ....
    2016 X01			
    	KWD			
    	GBP			
    	ESP			
    	X25	
    J'ai essayé (aprés permutation manuelle des colonnes):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub TriTAB()
    SortTable ThisWorkbook.Worksheets("Feuil1"), SortList:="-2"
    SortTable Worksheets("Feuil1").Range("C2"), CustomList:="X01;KWD;GBP;ESP;X25"
    End Sub
    Avec Année à la colonne 2 et code à la colonne 3.
    ==>Erreur de compilation!!
    Idées??

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    en utilisant l'enregistreur de macro on trouve ceci (que j'ai corrige/optimise le cas echeant)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    'les donnees sont dans les colonnes A a E dans ton ordre a toi (Code / Annee / Tr1 Tr2 Total)
    Columns("A:E").Select
        ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B2:B13") _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A2:A13") _
            , SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Sheet1").Sort
            .SetRange Range("A1:E13")
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    si tu veux qu'une fois ce tri est fait, permuter tes colonnes, tu peux le faire
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre averti
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 37
    Par défaut
    Merci beaucoup pour cette réponse rapide.
    très bon travail!!
    sauf que je cherche à trier mes données selon les 5 plus importants codes mentionnés(X01;KWD;GBP;ESP;X25) et par l'ordre indiqué, pour chaque année.
    Et non pas en ordre descendant.
    Autrement dit, je dois avoir ces 5 codes en premier ordonnées: X01 puis KWD,...et cela pour chaque année, les autres codes peu importe leurs ordres.
    j’espère que tu me comprends.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    OK,

    pas de soucis non plus,

    - etape 1 la liste de tri souhaitee
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.AddCustomList ListArray:=Array("X01", "KWD", "GBP", "ESP", "X25")
    qui prendra le nom automatique de "X01,KWD,GBP,ESP,X25"
    - etape 2 la liste de tri souhaitee
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A2:A6"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
            "X01,KWD,GBP,ESP,X25", DataOption:=xlSortNormal
    a adapter au reste deja donne plus tot ce jour.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre averti
    Femme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 37
    Par défaut
    Parfait!! Merci énormément!!

    Je vais aller trop loin si vous me le permettez!!
    y a t il une possibilité de diviser mon tableau en colonnes çàd: classer chaque répartition des codes par année, l'une prés de l'autre
    comme suit:

    2005 Tr1 Tr2 Tot 2006 Tr1 Tr2 Tot....2016 codes Tr1 Tr2 Tot
    X01 *** ***
    KWD
    GBP
    ....

    C est optionnel mais c'est beaucoup plus commode de gérer des colonnes que des lignes!!

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Oui ca reste possible, mais la il faut chercher un peu par soi meme =]
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Tri personnalisé des résultats d'une requête MySQL
    Par Tibimac dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 25/09/2010, 14h09
  2. Tri personnalisé qui se lance tout seul
    Par zert84 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 01/09/2008, 12h35
  3. tri sql/vba dans formulaire ACCESS
    Par seb_thiery dans le forum Requêtes et SQL.
    Réponses: 13
    Dernier message: 13/08/2008, 13h30
  4. Tri en VBA
    Par riny8669 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/08/2007, 12h07
  5. [VBA-E] tri sur VBA pour Excel
    Par mariedrouin dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 21/05/2006, 13h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo