XL 2013 trier plusieur colonne à la fois

gcannecy

XLDnaute Nouveau
J'ai un tableau de données de plusieurs colonne avec des nombres de lignes différentes

Il me sert à faire plusieurs listes semi automatique déroulantes.

Je rentre régulièrement plusieurs données dans chaque colonne

Afin que mes listes semi automatique déroulante fonctionnent les donnés de chaque colonne doivent être trier par ordre alphabétique (sans laisser de vide et indépendamment des autres colonne )

Est il possible de faire le tri pour l'ensemble des colonnes en une seul fois au lieu que je le fasse colonne par colonne

Cdt
 

chris

XLDnaute Barbatruc
Bonjour

Il faut toujours créer un tableau par source de liste déroulante (sauf listes en cascade) jamais un seul tableau

Donc découpe ton tableau en plusieurs avec une colonne vide entre chaque tableau pour plus de lisibilité
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Gcannecy,
Un ex en PJ en automatique. On recrée des listes trées par formules :
Code:
=SIERREUR(INDEX(INDIRECT("$A$2:$A"&NB.SI(A:A;"*"));EQUIV(PETITE.VALEUR(NB.SI(INDIRECT("$A$2:$A"&NB.SI(A:A;"*"));"<"&INDIRECT("$A$2:$A"&NB.SI(A:A;"*")));LIGNE(1:1));NB.SI(INDIRECT("$A$2:$A"&NB.SI(A:A;"*"));"<"&INDIRECT("$A$2:$A"&NB.SI(A:A;"*")));0));"")
A valider par Ctrl+Maj+Entrée car ce sont des formules matricielles.

Une autre piste serait en VBA si le VBA ne vous rebute pas.
 

Pièces jointes

  • ListeTriée.xlsx
    15.2 KB · Affichages: 16

chris

XLDnaute Barbatruc
RE

Honnêtement n'est-il pas plus logique de partir de bonnes pratiques que d'ajouter du code ou des formules pour compenser une mauvaise pratique ?

En plus j'ai cru comprendre qu'il s'agit d'un tableau structuré auquel cas le VBA ne peut fonctionner

Par ailleurs si on a un seul tableau il faut compliquer en définissant les sources de listes de validation par des formules à base de DECALER :eek:
 

chris

XLDnaute Barbatruc
RE

Eh bien c'est une mauvaise pratique

Les tableaux structurés existent depuis 17 ans et facilitent depuis tout ce temps la mise en place de validations (entre autres avantages...)

Je fais parfois des opérations commando en entreprise où je dois montrer comment optimiser l'utilisation d'Excel pour travailler vite et mieux par rapport au contexte de la personne que je dois aider et les tableaux structurés font presque toujours partie des leviers...
 

chris

XLDnaute Barbatruc
RE

C'est l'équivalent des tables de référence dans les bases de données

Quand on conçoit une bonne base de données on ne se pose pas de questions métaphysiques : on sait que c'est le seul moyen d'assurer la pérennité de la base.

Je me souviens d'une discussion sur le sujet avec des assureurs où j'expliquais que pour Monsieur, Madame et Mademoiselle ou pouvait éventuellement s'en passer.
Ils m'ont répondu "on a du casser notre outil informatique pour ajouter une table des "titres" car on assure des évêques par exemple et c'est Monseigneur et pas Monsieur, les avocats c'est Maître... alors même là..."

En appliquant la même rigueur dans le tableur quand on veut gérer des listes de données, on y gagne vraiment

Devoir trier par du VBA ou du matriciel et définir des noms par DECALER, cela ne simplifie rien

Mais chacun choisit à sa guise...
 

gcannecy

XLDnaute Nouveau
En PJ les deux versions Formules et VBA.
merci
c'est exactement ce que je cherchais la solution VBA avec le bouton tri est exactement ce que je cherchais
je vais peut être abusé pour la solution VBA est il simple de refaire la formule pour 10 colonnes

J ai recopier ton tableau sur le mien et il fonctionne parfaitement pour les 4 premières colonne mais pour l instant j ai 7 colonne dans les quelles je rentre mais données avec 10 je me laisse une marge au cas où.

Merci d'avance

cdt
GC
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Ci joint un essai avec 12 listes; Le nombre de listes à traiter est simple à modifier.
VB:
Sub Trier()
Application.ScreenUpdating = False
For N = 1 To 12 ' 12 car 12 listes à traiter, à modifier selon besoin
    Set Plage1 = Range(Cells(1, N), Cells(1000, N))
    Set Plage2 = Range(Cells(2, N), Cells(1000, N))
    ActiveWorkbook.ActiveSheet.Sort.SortFields.Clear
    ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Plage2, _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.ActiveSheet.Sort
        .SetRange Plage1: .Header = xlYes: .MatchCase = False
        .Orientation = xlTopToBottom: .SortMethod = xlPinYin: .Apply
    End With
Next N
End Sub
 

Pièces jointes

  • ListeTriée2 (2).xlsm
    17.5 KB · Affichages: 7

Discussions similaires

Statistiques des forums

Discussions
312 164
Messages
2 085 877
Membres
103 009
dernier inscrit
dede972