Selectionner et Trier

N

Naim

Guest
Bonjour le Forum,

Je sollicite votre aide pour trier un tableau que je mets a jours regulierement par addition de nouveau elements selon un ordre precis. Les donnees sont Marseille, Paris, Canne, Perpignan et je veux qu'ils soit triee Paris, Perpignan, Marseille canne.
Une autre question, comment selectioner une plage de lignes selon un critere donne.

Remerciements.
 

Pièces jointes

  • Book1Test.zip
    3.1 KB · Affichages: 30
  • Book1Test.zip
    3.1 KB · Affichages: 19
  • Book1Test.zip
    3.1 KB · Affichages: 33
A

Abel

Guest
Bonjour Naim,

Si tu veux trier suivant un ordre personnalisé, il te faut créer une liste personnalisée.

Cette liste peux être créée à l'aide d'une macro. Ca a l'avantage de pouvoir la chargée uniquement pour ton fichier.

Elle peut être créée aussi de manière permanente. C'est le plus simple.

Tu vas dans le menu "Outils/Options", onglet "Liste pers.".
Tu cliques sur "Ajouter" et tu crée ta liste avec des virgules comme séparateur.
Attention, il faut être précis dans la liste puis dans les saisies. Un espace ou un accent change tout.

En espérant que cela te dépanne.

Abel.
 
N

Naim

Guest
Bonjour Abel,

Merci bcp pour votre aimable assitance. La commande marche tres bien.
Je vais essayer d'adapter qqc en macro et vous aviserait.
Vous n'avez pas de tuyau pour la seconde question consistant a selectectionner un nombre de ligne selon un critere.

Remerciements
Naim.
 
A

Abel

Guest
Re Naim, le forum,

Oui, pardon. J'avais mal lu.

Là aussi plusieurs solutions en attente de plus de précisions.

1
Nommer une plage :
- menu "Insertion/Nom/Définir...",
- dans la ligne du haut, définis un nom,
- dans la ligne du bas, définis la zone en la sélectionnant avec la souris.
Inconvénient, la zone est figée.

2
Le filtre automatique, à priori, ce qui correspondrait à ton besoin :
- Sélectionne une cellule (n'importe laquelle) à l'intérieur du tableau,
- Dans le menu "Données/Filtre", sélectionne "Filtre automatique",
Sur chaque entête de champs (entête de colonne) apparait alors ue petite flèche vers le bas.
Lorsque l'on clique sur cette flèche, la liste des enregistrements du champ apparait. Il suffit de sélectionner un élément et le tableau se réduit aux enregistrements sélectionnés dans la liste.
On peut personnaliser ce filtre en sélectionnant "(Personnalisé...)" dans la liste.

3
Sélection d'une zone à l'aide d'une macro :
Là, il nous faut plus d'éléments.


Abel.
 
R

Robert

Guest
Salut Naim, Abel, le forum

Abel tu es trop rapide... Tant pis, j'envoie quand même cette macro qui répondait à la première question de Naim :



Public Sub tri()
'déclare les variables
Dim l As Long
Dim cel As Range

l = Range("A65536").End(xlUp).Row 'définit la variable l
'boucle sur toute les cellules non vides de la colonne A (à partir de A2)
For Each cel In Range("A2:A" & l)
'supprime l'espace après le texte (car des fois il y en a, des fois il n'y en a pas ???)
If Right(cel.Value, 1) = " " Then
cel.Value = Mid(cel.Value, 1, Len(cel.Value) - 1)
End If
'selon le cas, attribue un munéro de classement dans la colonne D
Select Case cel.Value
Case "Kerala"
cel.Offset(0, 3).Value = 1
Case "Tamil Nadu"
cel.Offset(0, 3).Value = 2
Case "Karnataka"
cel.Offset(0, 3).Value = 3
Case "Andhra Pradesh"
cel.Offset(0, 3).Value = 4
Case "Assam"
cel.Offset(0, 3).Value = 5
Case "Bihar"
cel.Offset(0, 3).Value = 6
Case "Delhi"
cel.Offset(0, 3).Value = 7
Case "Goa"
cel.Offset(0, 3).Value = 8
Case "Gujarat"
cel.Offset(0, 3).Value = 9
Case "Harayana"
cel.Offset(0, 3).Value = 10
Case "Haryana"
cel.Offset(0, 3).Value = 11
Case "Madhya Pradesh"
cel.Offset(0, 3).Value = 12
Case "Maharashtra"
cel.Offset(0, 3).Value = 13
Case "West Bengal"
cel.Offset(0, 3).Value = 14
End Select
Next cel
'tri le tableau par rapport à la colonne D
Range("A2:D" & l).Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Columns("D").ClearContents 'efface la colonne D
Range("A2").Select 'sélectionne A2)
End Sub


À plus,

Robert
 
N

Naim

Guest
Salut Abel, Robert, le Forum,

Merci Bcp pour l'aide apportée. Les deux propositons sont geniales.
J'ai appris de nouvelles choses que je ne maitrisais pas avant.

Comme promis a Abel, j'ai cree la macro suivante que j'active pour realiser le tri et ensuite je detruit la liste cree.

Sub Triage()
'
Application.ScreenUpdating = False
Application.AddCustomList ListArray:=Array("Kerala", "Tamil Nadu", _
"Andhra ............. "Assam", "Moghalaya")
Range("A14").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select

Selection.Sort Key1:=Range("A14"), Order1:=xlAscending, Key2:=Range("B14" _
), Order2:=xlAscending, Header:=xlNo, OrderCustom:=6, MatchCase:=False _
, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
xlSortNormal
Application.DeleteCustomList ListNum:=5
Application.ScreenUpdating = True
End Sub

Pour l'idee de Robert, je l'ai aussi teste, et c'est professionnelle, Bravo.
Pardon pour les espaces crees par inadvertance, mais cela m'as permis d'apprendre la macro pour les effacer car avant je faisais cela manuellement.

Je voudrais poser une autre question.

Je filtre une liste, et je vaudrais trier unuiquement les lignes filtrees.

Quelle macro utiliser?.

Merci d'avance.
Naim
 
A

Abel

Guest
Bonjour Naim, le forum,

Pour ta nouvelle question, et si ce n'est pas gènant, fait ton tri avant de filtrer.
Les éléments filtrés seront déjà triés.

C'est ainsi que je procède.

Si tu dois conserver l'ordre de tes données, il y a deux solutions que j'applique :

1
Fais une copie du tableau sur laquelle tu peux ensuite trier puis filter.
Cette copie peut être faite dans le même fichier ou dans un nouveau fichier.

2
Insère une colonne dans laquelle tu mettras un numéro d'enregistrement chronologique sur l'ordre que tu veux conserver.
Fais le tri puis filtre.
Pour revenir à l'ordre de départ, il te suffit de faire un tri sur la colonne précédemment créée.

La première solution a ma préférence. Lorsque je dois travailler sur des données, je ne travaille jamais sur les fichiers de base. Que ce soient des résultats d'export ou des fichiers Excel.
Je les conserve toujours en l'état. Je les considère comme étant la "vérité".
Je travaille sur des copies ou je fais l'équivalent de requêtes qui vont chercher des informations dans ces fichiers de départ.
Inconvénients : possibles lourdeurs, encombrements (poids des fichiers sur les disques)
Avantage (et non des moindres) : conservation au plus juste des informations en cas de plantages, fausses manipulations, etc.

Maintenant, en fouillant sur le forum, il me semble (je n'en suis pas certain) y avoir vu d'autres solutions il y a déjà quelques temps.

En espérant que cela te dépanne.

Abel.
 

Discussions similaires

Statistiques des forums

Discussions
312 153
Messages
2 085 802
Membres
102 981
dernier inscrit
fred02v