Tri sur 2 colonnes en vba

  • Initiateur de la discussion Initiateur de la discussion apt
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Re : Tri sur 2 colonnes en vba

Bonjour apt,

Si tu utilises l'enregistreur de macro, pour générer le code de ton tri sur 2 clés, ton erreur devrait t'apparaître: tu ne peux pas dire que le tri se fait en fonction de la plage de cellules "D6:B6"!?
 
Re : Tri sur 2 colonnes en vba

Bonjour Modeste.

Oui, tu as raison ...

J'ai ajouter une condition et ça marche.

S'il y a une optimisation du code à apporter, merci de me le faire savoir.

🙂
 

Pièces jointes

Dernière édition:
Re : Tri sur 2 colonnes en vba

Bonsoir apt, le forum,

Avec tes modifications, ça devrait effectivement aller mieux 🙂
Au passage, il me semble que tu pourrais t'affranchir du
Code:
Range("A6:D65536").Select
et utiliser, pour les deux tris:
Code:
Range("A6").CurrentRegion.Sort etc...
En ce qui me concerne, j'utiliserais même A5 comme point de départ et renseignerais l'argument Header:=XlYes

Tu es certain, dans ton événement CommandButton2_Click de la syntaxe de "Unload.UserForm1"?

Tant qu'on y est, pourquoi la gestion des couleurs par macro, plutôt que par Mise en Forme Conditionnelle? D'autant que tu as, dans cette procédure, quelques ".Select" qui font que ton code risque d'être plus lent que la MFC.

Tout ceci n'étant qu'un avis ... s'il y en avait d'autres, ce serait bien aussi!
 
Re : Tri sur 2 colonnes en vba

Bonsoir,

J'ai effectué quelques changements ...

Pour le : Unload.UserForm1 il est utilisé pour décharger la forme de la mémoire mais je ne sais pas s'il fonctionne comme UserForm1.Hide

Pour le MFC je ne sais si je pourrais l'appliquer à une plage de plus 40000 lignes 😱
 
Re : Tri sur 2 colonnes en vba

Re,
Unload.UserForm1 est utilisé pour décharger la forme de la mémoire
Ma question portait sur la syntaxe de l'instruction: faut-il écrire "Unload.UserForm1"
ou "Unload UserForm1" (sans le point, mais avec un espace)

Pour le MFC je ne sais si je pourrais l'appliquer à une plage de plus 40000 lignes 😱
Pour autant que je sache, ce ne serait pas pire qu'une macro exécutée sur 40000 lignes ... et qui serait un peu "surchargée" 🙄
... A toi de voir!
 
Re : Tri sur 2 colonnes en vba

Re,
Ma question portait sur la syntaxe de l'instruction: faut-il écrire "Unload.UserForm1"
ou "Unload UserForm1" (sans le point, mais avec un espace)

Comme le débogueur ne me signaler aucune erreur je ne lui prêtait pas attention ...

Pour autant que je sache, ce ne serait pas pire qu'une macro exécutée sur 40000 lignes ... et qui serait un peu "surchargée" 🙄
... A toi de voir!

Les données s'élargissent au fur et à mesure des saisies des lignes... et chaque fois il faut tout sélectionner pour appliquer la mfc.

N'y a-t-il pas une solution pour faciliter cette manœuvre ?

Merci.
 
Re : Tri sur 2 colonnes en vba

Bonsoir apt,

Pour les couleurs, je ne sais pas trop ce que tu entends par "les données s'élargissent"!

Par contre, comme ton fichier était un ".xls", le déclic ne s'est pas fait, chez moi (je suis un peu lent à la détente 😱) mais sous Excel 2007, les styles de tableaux permettent (notamment) de gérer les couleurs différentes 1 ligne sur 2. Tu peux même ajouter ton propre style de tableau, si ceux proposés ne te conviennent pas.
Le tableau de départ se redimensionne dès lors au fur et à mesure des données que tu insères, reproduisant, au passage les mises en forme, les formules éventuelles et même les contrôles de validation ... Pourquoi bouder son plaisir?
Si tu veux tester, sélectionne tes données (titres compris), supprime les couleurs de remplissage, puis dans Insertion, choisis Tableau. Dans la boîte de dialogue, la plage de cellules sélectionnée au départ est renseignée et l'option ma plage compore des en-têtes est cochée (si pas, la cocher) ... Ensuite, dans l'onglet "Outils de tableaux", les styles doivent être disponibles.

... à toi de voir, une fois de plus!
 
Re : Tri sur 2 colonnes en vba

Comme je voudrais que mon exemple fonctionne sur Excel 2003, j'évite d'utiliser les nouveautés d'Excel 2007.

Bon pour la mfc, j'ai réussi à en ajouter d'une façon que la forme des lignes ne change que si la première cellule et non vide.
Code:
=ET(MOD(LIGNE();2)=0;$A6<>"")
(Pour les ligne paires)

Code:
=ET(MOD(LIGNE();2)=1;$A6<>"")
(Pour les ligne impaires)

Comme ça, j'évite de sélectionner à chaque fois la plage de données pour élargir la mfc aux nouvelles lignes saisies 😎
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
313
Réponses
1
Affichages
286
W
Réponses
4
Affichages
182
Réponses
4
Affichages
266
Réponses
14
Affichages
495
Retour