Note: The other languages of the website are Google-translated. Back to English

Comment trier automatiquement la colonne par valeur dans Excel?

Par exemple, vous avez un tableau d'achat comme illustré ci-dessous. Maintenant, vous voulez que la colonne Prix soit triée automatiquement lorsque vous entrez de nouveaux nombres/prix dans cette colonne, comment pourriez-vous résoudre ce problème ? Ici, j'introduis une macro VBA pour vous aider à trier automatiquement une colonne spécifique par valeur dans Excel.

Colonne de tri automatique par valeur avec VBA


Colonne de tri automatique par valeur avec VBA

Cette macro VBA triera automatiquement toutes les données dans une colonne spécifique dès que vous entrez de nouvelles données ou que vous modifiez la valeur dans la colonne dans Excel.

1. Cliquez avec le bouton droit sur le nom de la feuille actuelle dans le Barre d'onglets de la feuille, puis cliquez sur le Voir le code dans le menu contextuel.

2. Dans la boîte de dialogue d'ouverture de Microsoft Visual Basic pour Application, collez le code de macro VBA suivant dans la fenêtre d'ouverture.

VBA: Colonne de tri automatique dans Excel

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("B:B")) Is Nothing Then
Range("B1").Sort Key1:=Range("B2"), _
Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
End If
End Sub

Notes:
1) Dans le code vba ci-dessus, B: B signifie qu'il triera automatiquement la colonne B, B1 est la première cellule de la colonne B, B2 est la deuxième cellule de la colonne B, et vous pouvez les modifier en fonction de vos besoins.
2) L'extrait En-tête :=xlOui dans la 5e ligne indique à Excel que la plage que vous allez trier a un en-tête, de sorte que la première ligne de la plage ne sera pas incluse lors du tri. S'il n'y a pas d'en-tête, veuillez le remplacer par En-tête :=xlNon; et changer Clé1 :=Plage("B2") au 4ème rang pour Clé1 :=Plage("B1").

3. Revenez ensuite à la feuille de calcul, lorsque vous entrez un nouveau nombre dans la colonne Prix ou que vous modifiez des prix existants, la colonne Prix sera automatiquement triée par ordre croissant.

Notes: Lorsque vous entrez un nouveau nombre dans la colonne Prix, vous devez entrer le nombre dans la première cellule vide sous les nombres d'origine. S'il y a des cellules vides entre le nouveau numéro saisi et les numéros d'origine ainsi que des cellules vides entre les numéros d'origine, cette colonne ne sera pas triée automatiquement.


Démo: tri automatique des colonnes par valeur avec VBA dans Excel


Kutools pour Excel comprend plus de 300 outils pratiques pour Excel, gratuits à essayer sans limitation en 30 jours. Téléchargez et essayez gratuitement maintenant!

Triez facilement par fréquence d'occurrences dans Excel

Kutools pour Excel Tri avancé L'utilitaire prend en charge le tri rapide des données par longueur de texte, nom de famille, valeur absolue, fréquence, etc. dans Excel. Essai gratuit complet de 30 jours!
annonce trier par fréquence 2


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtréeplus
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammesplus
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellulesplus
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDFplus
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
bas de cabine
Commentaires (36)
Noté 5 hors 5 · évaluations 1
Ce commentaire a été minimisé par le modérateur sur le site
Magnifique, magnifique, magnifique, merci beaucoup. Je n'aurais jamais été capable de comprendre cela par moi-même et j'apprécie vraiment que vous partagiez cela !!!
Ce commentaire a été minimisé par le modérateur sur le site
Je recherche le même tri automatique lors de la saisie de données pour mon graphique Excel. Vous avez du mal à comprendre les détails de ce que vous avez saisi ici à titre d'exemple. J'apprécierais vraiment que quelqu'un ici qui a fait l'exemple ci-dessus puisse m'aider à trier ma feuille pour qu'elle fasse de même. J'ai un tableau F1 qui montre les gagnants et les points, et je voudrais que lorsque les points sont entrés à côté du nom du pilote pour une course spécifique, le total sur le côté droit de la feuille soit dans l'ordre numérique, SANS MÉLANGER LE RÉSULTAT contre d'autres pilotes. Il semble que je ne puisse pas placer sur ce message une pièce jointe de mon tableau, donc si vous êtes en mesure de modifier mon tableau pour moi, cela se produira, j'aimerais avoir de vos nouvelles. Je peux vous l'envoyer par e-mail. Si vous pouvez m'aider, veuillez m'envoyer un e-mail à lordmarshall2013@gmail.com et dans la ligne OBJET, veuillez écrire F1 Excel help et répondra avec le tableau ci-joint pour vous. Merci d'avance pour toute aide que vous pouvez fournir.
Ce commentaire a été minimisé par le modérateur sur le site
C'est bien. Cela a été d'une grande aide.
Ce commentaire a été minimisé par le modérateur sur le site
Supposons que j'ai besoin de trier automatiquement la colonne "C" et la colonne "D". Comment modifier le code pour trier les deux colonnes ?
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour. Excellente astuce, merci beaucoup. Dans mon fichier, j'ai des informations importantes que je dois voir dans les cellules A1 et A2. Par conséquent, j'ai stabilisé toutes les cellules et mes valeurs vont de A3 à A500. Lorsque j'exécute ce vba, mes informations dans la cellule A2 vont dans la cellule 501. Comment puis-je le faire commencer à partir de la cellule A3? Merci d'avance!
Ce commentaire a été minimisé par le modérateur sur le site
La première ligne est exclue du tri
Ce commentaire a été minimisé par le modérateur sur le site
J'ai eu le même problème et j'ai trouvé pourquoi. Allez à la ligne 5, (Order1 :=xlAscending, Header :=xlYes, _). Le script indique à Excel que la première cellule est un en-tête et qu'il l'ignorera donc lors du tri. Si vous souhaitez inclure la première ligne, remplacez-la par la ligne suivante :


Order1 :=xlAscending, Header :=xlNo, _
Ce commentaire a été minimisé par le modérateur sur le site
Copié le code exactement dans ma feuille en VBA. Mais rien ne se passe, est-ce que j'ai loupé quelque chose ? A fait exactement ce que vous avez fait.
Ce commentaire a été minimisé par le modérateur sur le site
MERCI!!!
Ce commentaire a été minimisé par le modérateur sur le site
Merci pour le code et la logique. La logique ci-dessus ne fonctionne pas lorsque nous examinons une plus grande plage de cellules comme Intersect(Target, Range("B:B,C:C,D:D")). Je veux que s'il y a un changement dans une cellule de la colonne (B, C ou D), le tri doit être fait.
Ce commentaire a été minimisé par le modérateur sur le site
Quelqu'un sait comment définir un numéro de série automatique. pour une feuille de travail excel. Le nombre doit exclure tous les titres et sous-titres, et doit être réorganisé automatiquement après l'ajout ou la suppression d'une ligne.
Ce commentaire a été minimisé par le modérateur sur le site
Hi,
Kutools for Excel fournit une fonction Insérer un numéro de séquence, qui peut insérer des valeurs uniques et consécutives, quel que soit le nombre de fois que vous insérez.
Par exemple, la première fois que vous insérez 1,2,3,4 ;
La deuxième fois, cette fonctionnalité insérera 5,6,7,8,9,10
La troisième fois, cette fonctionnalité insèrera 11,12,…
Ce commentaire a été minimisé par le modérateur sur le site
Bien qu'il s'agisse d'un code fantastique, j'aimerais savoir si quelqu'un pourrait m'aider à le faire passer de l'ascendant à l'ascendant ? En d'autres termes, je recherche que ce soit le plus grand nombre en haut avec le plus petit nombre en bas
Ce commentaire a été minimisé par le modérateur sur le site
Remplacer (Order1 :=xlAscending, Header :=xlYes, ) par (Order1 :=xlDescending, Header :=xlYes, )
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, je suis un utilisateur intermédiaire d'Excel. Je me demande si quelqu'un pourrait m'aider à me diriger pour ce que j'essaie d'accomplir. Voici ce que j'essaie de faire : Tri automatique avec commande personnalisée.

Un peu sur mes feuilles de calcul : j'ai une feuille (nommée : Feuille1) qui répertorie 16 colonnes (A à P) et actuellement 19 lignes (ce nombre augmentera au fur et à mesure que de nouvelles données seront saisies). Dans la dernière colonne (colonne P), toutes les cellules ont un menu déroulant d'options (situé et extrait de la feuille deux (nommée "BackEnd"). Les sélections déroulantes sont codées par couleur (en utilisant des règles de mise en forme conditionnelle).

Ce que j'espère faire : Lorsqu'un utilisateur entre des données dans une nouvelle ligne, dès qu'il a fini de sélectionner une option dans le menu déroulant de la colonne P, Excel trie automatiquement la nouvelle ligne dans un ordre spécifique. J'ai pu créer un code VBA pour le tri automatique dans l'ordre croissant et décroissant, mais je n'ai pas pu créer de code pour le tri automatique des données dans un ordre spécifique. L'ordre dans lequel je souhaite que les données soient triées est :

Ne répond pas
Pas intéressé
Intéressé
Présélectionné non qualifié :
Qualifié présélectionné
Demande en attente
Demande approuvée
Évaluation initiale:
Étendue des travaux:
Réparations domiciliaires en cours
En attente:
Complété
Autres:

Est-ce possible? Toute aide est appréciée! Merci!
Ce commentaire a été minimisé par le modérateur sur le site
Hi,

Comment puis-je faire démarrer cette macro après avoir rempli toutes les données de la colonne spécifique ?
Je veux que la macro de liste commence après avoir rempli les cases vides. Parce que quand j'utilise ça, ça change de place d'un coup.
Je dois démarrer cette macro après avoir rempli les dernières données de cette colonne (20 données pour être exact)
Ce commentaire a été minimisé par le modérateur sur le site
Puis-je demander s'il existe un moyen d'utiliser ce code VBA s'il existe une formule dans la colonne que vous souhaitez utiliser comme tri principal.

c'est-à-dire si A2 = la somme de f2 + g2+ h2 et la colonne A doit être triée sur la somme totale ? (Je n'arrive pas à faire fonctionner VBA si la formule dans les cellules)

Toute aide serait appréciée car nous espérons l'utiliser pour les courses de classement lorsque le vainqueur est celui qui a le total de trois courses.

Merci
Ce commentaire a été minimisé par le modérateur sur le site
Je veux aussi connaître la solution au problème de Paula. Partagez s'il vous plait
Ce commentaire a été minimisé par le modérateur sur le site
Pour moi, cela a fonctionné pour changer cette ligne
Si ce n'est pas l'intersection (cible, plage ("B: B")) n'est rien alors
Je pense que la clé est de définir la plage cible sur les champs qui changent et de conserver le tri sur les données avec les résultats additionnés.
Ce commentaire a été minimisé par le modérateur sur le site
Cela fonctionne pour moi quand il y a une formule dans la cellule:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range("B1").Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:= xlHautVersBas
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Cela a été très utile mais j'ai 2 lignes d'en-têtes (lignes 1 et 2) et lorsque j'exécute le VBA, il prend la deuxième ligne au bas des dates
comment puis-je arrêter cela?
Ce commentaire a été minimisé par le modérateur sur le site
Salut kerry,

Il y a un VBA qui triera automatiquement les cellules dans la colonne en faisant attention aux deux premières cellules d'en-tête.

Private Sub Worksheet_Change (Cible ByVal en tant que plage)
Dim xIntRC en tant qu'entier
Dim xURg As Range
On Error Resume Next
Si ce n'est pas l'intersection (cible, plage ("B: B")) n'est rien alors
Si ce n'est pas l'intersection (cible, plage ("B1: B2")) n'est rien, alors quittez le sous-marin
Définir xURg = ActiveSheet.UsedRange
xIntRC = xURg.Rows.count
Plage("B2:B" & xIntRC).Clé de tri1 :=Plage("B3"), _
Order1 :=xlAscending, Header :=xlYes, _
OrderCustom :=1, MatchCase :=False, _
Orientation :=xlHautVersBas
Si fin
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, je n'ai pas de chance avec le code directement au-dessus de "kellytte" pour trier les cellules dans la colonne en ignorant les deux premières cellules d'en-tête. Quelqu'un peut-il m'aider? Merci.
Ce commentaire a été minimisé par le modérateur sur le site
Hithis code résout mon problème. mais j'ai besoin de trier la colonne B & avec cela Changez simplement la colonne A, pas tout. aidez moi svp
Ce commentaire a été minimisé par le modérateur sur le site
Salut, il arrange la ligne entière mais j'ai un lien sur les cellules dans un dossier spécifique qui est laissé après le tri.
Ce commentaire a été minimisé par le modérateur sur le site
Cela semble donc fonctionner lorsque les données sont saisies manuellement, mais ne fonctionne pas lorsqu'il s'agit d'une table qui se repeuple à partir d'un autre fichier... y a-t-il un moyen de le faire ?
Ce commentaire a été minimisé par le modérateur sur le site
Incroyable merci !!!
Ce commentaire a été minimisé par le modérateur sur le site
Hi,
Ceci est extrêmement utile.
Existe-t-il un moyen d'étendre la formule pour couvrir plusieurs colonnes ? Par exemple, pour trier les données en fonction des valeurs d'abord, la colonne B, puis la colonne C ? J'apprécierais vraiment toutes les solutions !
Ce commentaire a été minimisé par le modérateur sur le site
Hi,
Ceci est extrêmement utile.
Existe-t-il un moyen d'étendre la formule pour couvrir plusieurs colonnes ? Par exemple, pour trier les données en fonction des valeurs d'abord, la colonne B, puis la colonne C ?
J'apprécierais vraiment toutes les solutions!
Il n'y a pas encore de commentaires postés ici
TÉLÉCHARGER PLUS
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0   Personnages
Emplacements suggérés