Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Trier des colonnes à l'aide de VBA

flet le kid

XLDnaute Nouveau
Bonsoir,

j'ai des données (des String) dans les colonnes A, B et C.
Je voudrais trier les données de la colonne A par ordre croissant.
Ensuite celles de la colonne B par ordre croissant en tenant compte du tri de la colonne A.
Enfin, celles de la colonne C par ordre croissant en tant compte des tri effectué dans les colonnes A et B.

Comment faire?

Merci
 

flet le kid

XLDnaute Nouveau
Re : Trier des colonnes à l'aide de VBA

J'ai crié trop vite victoire!

Bon apparemment, j'ai mélangé tous mes fichiers sources. Pas grave. Toujours est il que le résultat que j'obtiens n'est pas satisfaisant.

J'ai trois classeurs ouverts:
1. Celui de l'application: d'ou j'exécute la macro
2. appExcel : qui contient des données que je récupère pour les comparé au contenu d'un fichier texte
3. XLapp: qui est le fichier ou j'enregistre les informations qui m'intéressent

Voici les déclarations:

'Variables du classeur Excel contenant les données à récupérer
Dim appExcel As New Excel.Application 'Application Excel
Dim classeur As New Excel.Workbook 'Classeur Excel
Dim feuille As New Excel.Worksheet 'Feuille Excel


'Variables du classeur contenant les résultats du traitement. C'est lui qui sera enregistré
Dim XLapp As New Excel.Application 'Application Excel

'Préparation du classeur qui contiendra les résultats
XLapp.Workbooks.Add
XLapp.Workbooks(1).Worksheets(2).Delete
XLapp.Workbooks(1).Worksheets(2).Delete
XLapp.Workbooks(1).Worksheets(1).Name = nomfichier
XLapp.Visible = False



Mon soucis maintenant est que je souhaiterais trier les information de mon fichier XLapp par ordre croissant de la colonne A puis B puis C (les données sont des strings).

Je n'arrive pas à m'en sortir avec le SORT malgré l'aide que j'ai lu et les tuto sur developpez.com.

Comment faire?


Voici mes différents essaies donnés pêle mêle:

1.
Worksheets(1).Range("A5:indiceC").Sort Range("A5"), xlAscending, Range("B5"), xlAscending, Range("C5"), xlAscending
XLapp.Visible = TrueXLapp.Workbooks.Close

2.
XLapp.Workbooks(1).Activate
ActiveSheet.Cells.Sort Key1:=[A5], Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

3.
XLapp.Workbooks(1).Activate
ActiveCell.Sort Key1:=[A5], Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

4.
Cells.Sort Key1:=[A5], Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

5.
Cells.Sort Key1:=[A5], Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom


Je ne sais plus quoi essayer!
 

jeanpierre

Nous a quitté
Repose en paix
Re : Trier des colonnes à l'aide de VBA

Bonsoir flet le kid, skoobi,

L'enregistreur de macro permet d'écrire un code représentant une action, par exemple.

Tu le trouves dans Outils/Macro/Nouvelle macro. une boîte te propose Enregistrer une nouvelle macro avec un nom "Macro1", tu peux lui attribuer un nom plus représentatif de ton souhait et, des que validé, tout ce que tu fais est enregistré. Les erreurs et incertitudes aussi.

Donc, avant tu prépares sur papier ta manip. pour éviter des lignes inutiles et tu y vas. A la fin tu cliques sur Arrêter l'enregistrement dans la barre qui s'était ouverte, ou, si tu l'as fermé, toujours dans Outils/Macro/Arrêter l'enregistrement.

Alt F11 pour te rendre sous VBE et au besoin Affichage/Explorateur de projet et là tu trouves à gauche ton classeur. Tu cliques sur module pour l'ouvrir et sur Module1 pour voir apparaître à droite le code de tes actions.

Sur ta feuille tu peux mettre un bouton, un dessin ou ce que tu veux, et par clic droit sur la chose tu auras l'option Affecter une macro. Tu termines en selectionnant ta macro.

Un clic sur ce bouton lancera l'opération enregistrée.

J'espère avoir été le plus clair possible.

Bonne nuit et bonne découverte.

Jean-Pierre
 

flet le kid

XLDnaute Nouveau
Re : Trier des colonnes à l'aide de VBA

J'ai utilisé l'enregisteur de macro qui m'a donné le bon code. Seulement il ne fonctionne pas dans mon travail.
Pourquoi?
Il essaie de trier le classeur actif alors que j'essaie de lui indiquer le classeur ou j'ai enregistré mes données. Mais il ne veut pas ça (ou bien j'indique mal). Vraiment, je ne sais plus quoi faire.

Une question, le classeur ou j'execute la macro est il toujours le classeur actif? J'en ai bien l'impression chez moi et je ne sais pas comment faire comprendre l'inverse à Excel.

Aidez moi svp!
 

skoobi

XLDnaute Barbatruc
Re : Trier des colonnes à l'aide de VBA

Bonjour,

essaye en précisant le classeur et la feuille.
Par exemple:

Code:
[COLOR=Blue][B]Workbooks("toto").Sheets("Feuil1").[/B][/COLOR]Range("A1:AE1685").Sort Key1:=[COLOR=Blue][B]Workbooks("toto").Sheets("Feuil1").[/B][/COLOR]Range("A2"), Order1:=xlAscending, Header:= .........
 

flet le kid

XLDnaute Nouveau
Re : Trier des colonnes à l'aide de VBA

Merci à tous, j'ai enfin pu m'en sortir. Je confondais un peu les notions de classeur et feuille en VBA et ne référençais pas donc les bons workbooks pour le travail. C'est chose réglée maintenant et grâce à tous, je m'en suis sorti.
Merci à tous!
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…