Associer les valeurs des lignes lors du tri d'une colonne par marco

cookies

XLDnaute Occasionnel
Bonjour à tous,

Mon idée de base était de pouvoir trier, grâce à une macro, les valeurs contenues d’une colonne par ordre alphabétique. Grace à votre forum, j’ai cette macro qui me permet de trier correctement ma colonne B par ordre alphabétique.(voir la macro ci-dessous).

Mon problème est que les informations des lignes qui sont associées à ma colonne B (de la colonne C à M) ne se réorganisent et ne suivent pas avec le tri par ordre alphabétique de la colonne B.

Puisqu’un exemple est toujours plus parlant, je vous propose de visionner mon souci :

Imaginons mes données de départ :
colonne B colonne C ....
2 -------> ;)
3 -------> :(
1 -------> :D

après le tri de ma macro j'ai :
colonne B colonne C ....
1 -------> ;)
2 -------> :(
3 -------> :D

Or je souhaiterais :
colonne B colonne C ....
1 -------> :D
2 -------> ;)
3 -------> :(

Voilà un super exemple (fictif bien sur)
Je vous remercie d’avance pour votre aide

VOICI LA MACRO POUR LE TRI PAR ORDRE ALPHABETIQUE :

Sub trier()
Range("B22:B110").Select
Selection.Sort Key1:=Range("B22"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub

Merci encore !
 

Modeste

XLDnaute Barbatruc
Re : Associer les valeurs des lignes lors du tri d'une colonne par marco

Bonjour cookies,

Que ce soit par macro ou non, j'aurais tendance à dire qu'il vaut mieux éviter de sélectionner une seule colonne, pour faire un tri dans une liste de données.

Dans ton code, cette sélection un peu malvenue est faite par l'instruction "Range("B22:B110").Select". Donc si ta liste s'étend de B22 à M110 et que cette plage est fixe, la modification à apporter ne me semble pas trop difficile à trouver.

Si la plage est de taille variable, tu pourrais, me semble-t-il tenter "Range("B22").CurrentRegion.Select"

... Et comme on conseille, généralement d'éviter les "Select" quand c'est possible, tu peux sans doute aussi écrire directement: "Range("B22").CurrentRegion.Sort Key1:=Range("B22"), Order1:= ... etc."
 

cookies

XLDnaute Occasionnel
Re : Associer les valeurs des lignes lors du tri d'une colonne par marco

Bonjour Modeste,

Merci de m'avoir répondu.

En effet ma plage est fixe, mais même si la mofif semble simple je ne sais pas trop comment faire.
Du coup j'ai tenté de changer Range("B22:B110").Select par Range("B22:M110").Select mais ça ne marche pas. Est de cela dont tu parlais pour la modif simple.

Pour l'autre solution dont tu parles : "Range("B22").CurrentRegion.Sort Key1:=Range("B22"), Order1:= ... etc." je ne l'ai pas bien comprise non plus.

Merci encore pour ton aide.
 

Modeste

XLDnaute Barbatruc
Re : Associer les valeurs des lignes lors du tri d'une colonne par marco

Re-bonjour cookies,

cookies à dit:
mais ça ne marche pas
Voilà une des raisons pour lesquelles on demande régulièrement qu'un petit bout de fichier exemple soit joint à la demande (des données représentatives de la structure réelle du fichier, mais sans données confidentielles). Cet exemple permettra de s'assurer qu'il n'y ait pas de lignes vides, de vérifier s'il y a -ou non- des titres de colonnes, de déterminer si certaines données pourraient être responsables d'un dysfonctionnement quelconque, etc.

D'autre part le même
cookies à dit:
mais ça ne marche pas
... n'aide pas beaucoup :confused: Qu'est-ce qui ne marche pas? La plage n'est pas triée comme tu l'aurais voulu? Un message d'erreur s'affiche? Rien ne semble se passer? De la fumée noire sort de la tour? La voisine du dessous se plaint du bruit? etc.

Si on essayait avec un fichier?
 

Fo_rum

XLDnaute Accro
Re : Associer les valeurs des lignes lors du tri d'une colonne par marco

Bonsoir,

à tester
Code:
Sub trier()
   Range("B22:M110").Sort Range("B22"), xlAscending
End Sub

bien entendu elle peut ne pas donner les résultats espérés s'il y a des formules mais comme le dit Modeste :D, on a rien sans rien !
 

cookies

XLDnaute Occasionnel
Re : Associer les valeurs des lignes lors du tri d'une colonne par marco

Bonjour,

En effet je suis pas très explicite. Désolé.
Je vous transmets le fichier mais pour répondre à vous questions :

oui en effet j'ai des cellules vides. Lorsque j'exécute la macr, on me met "erreur 400"
Faut-il du coup intégrer dans la plage de données les en-têtes des colones ?

ci joint le fichier
J'ai adapté le fichier et c'est la colonne des noms permettre de trier les lignes. (colonne C)
Merci pour votre aide
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Associer les valeurs des lignes lors du tri d'une colonne par marco

Bonjour cookies,

Tu peux, sans problème, trier une liste de données qui contiendrait des cellules vides (ce qui poserait problème, ce serait d'avoir une ligne -ou une colonne- entière qui serait vide)

Par contre, dans ton fichier, ce sont toutes les cellules fusionnées qui sont une véritable source d'infection. Pour t'en convaincre, essaie de trier, sans passer par une macro: Excel affichera un message!
Seule solution à ma connaissance: oublier les cellules fusionnées!
 

cookies

XLDnaute Occasionnel
Re : Associer les valeurs des lignes lors du tri d'une colonne par marco

Bonjour,

Merci pour vos réponses.
En effet, j'entends ce que vous dites. Je vais tenter de structurer mes données différemment afin de pouvoir effectuer ce tri.

Merci à vous et à bientôt !
 

Discussions similaires

Statistiques des forums

Discussions
312 159
Messages
2 085 836
Membres
102 998
dernier inscrit
billABDELL