Tri d'une collone sous vba

Résolu
Bonjour,

J'ai une colonne sur excel,

Comment dois je faire pour trier la colonne sans utiliser de macro??

Merci d'avance

11 réponses

Résumé de la discussion

La discussion porte sur comment trier une colonne dans Excel sans recourir à une macro, en explorant différentes méthodes et leurs limites pratiques dans ce sujet. Plusieurs réponses évoquent l'usage de scripts VBA et l'ajout éventuel d'un bouton, tandis que d'autres proposent des solutions sans macro comme le filtre automatique ou le tri via les options de données. La plupart des échanges tournent autour d'un tri via VBA, avec des exemples de code utilisant Range et Sort, mais certains participants remarquent qu'il existe des méthodes plus simples sans macro. En outre, des contributions rappellent les distinctions entre Range et Cells et entre références absolues et relatives pour guider les exemples, même si le recours à une macro demeure fréquent.

Bobot (l’IA à votre service)
  1. Salut,

    données/filtre automatique
    ou encore données et tri

    A+
    1
    1. j'ai une liste de donnée, qui avec laquelle j'aimerai organiser un tri croissant, en appuyant sur un bouton
      0
  2. C'est fait:

    Sub Tri()
        Dim bGenreTri As Boolean
        
        Range("A1:A193").Select 'On sélectionne la plage de données
        Selection.Copy          'On copie la sélection
        Range("B1").Select      'On sélectionne le début de la plage de destination
        ActiveSheet.Paste       'On copie
        
        bGenreTri = MsgBox("Désirez vous un tri croissant ?", vbYesNo, "Choix du tri")
        
        If bGenreTri = vbYes Then     'Tri croissant
            Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        Else                    'Tri décroissant
            Selection.Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        End If
        
    End Sub
    

    Maintenant tu crée un bouton et tu lui affecte la macro.
    1
    1. un tres grand merci !
      0
    2. @numbat>N'oublie pas de marquer ton problème comme résolu.
      0
    3. @dandypunkc fé merci,

      Pour mettre que ca soit sur une colonne horizontale, je remplace Range(cells(3,x)).Select

      Pourquoi il ne veut pas fonctionner?
      0
  3. Contributeur
    Bonjour,
    explication ????
    A+
    0
    1. données et tri , pourriez vous m'aider?
      0
      1. Dans ton menu, tu à Données, n'est-il pas?
        Clique. Sur la première ligne, tu a tri.
        0
      2. @dandypunkOui c'est gentil mais je cherche un tri de programmation de VBA

        Mais pas les fonctions toute faite d'excel

        Personne?
        0
    2. Tu veux du tri shell, du tri à bulle ou quelque chose dans ce genre.
      0
      1. C'est quoi tout ca??

        Je vais essayer de reformuler ma question,

        J'ai une liste dans excel de A1 à A193, et j'aimerais avec un code vba, copier cette liste dans une autre colonne mais triee croissante

        vous voyez?
        0
    3. Un code vba est une macro. C'est donc antinomique avec ton POST 1
      0
      1. Je me suis peut etre mal exprimer au départ mais bon !

        Une macro c'est un system de simplification pour faire des tri, selection, .... qui ensuite peut être reprise dans un programme.

        Ce que je recherche c'est de la pur programmation dans visual basic !

        vous savez m'aider?
        0
    4. C'est quand meme ce que l'on appelle une macro vba.
      J'essaye de te créer quelque chose avec le Range("A1:A193") vers le Range("B1:B193")
      Réponse dans une petite heure. (Le temps de faire la mise en forme)
      0
      1. C'est bien gentil,

        Donc pour faire uin tri je suis obliger d'utiliser une macro ou j'enregistre le changement ?
        0
      2. Merci c'est bien gentil
        0
    5. Salut,

      un code macro

      Sub Tri_Croissant()
      Range("A1:A193").Sort Key1:=Range("A1"), Order1:=xlAscending

      ActiveWorkbook.Save 'enregistrement des modifs

      End Sub

      A+
      0
      1. tu saurais me dire ce quez vellent dire tout les therme?
        0
    6. Cells n'est pas approprié à ce niveau.
      Au plus simple:
           Range("C3") correspond à la cellule absolue C3 
           Range("$C$3) correspond à la cellule relative C3
           Range("C4:F12") correspond à la plage C4:F12
          Le tout peut se décliner avec $
      
      0
      1. ceci est une plage
        ce que je veux dire c'est obtenir ceci :
        1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 etc

        jai dejà essayer multiple solution mais je retombre tjourssur une plage !
        0
      2. On va essayer d'améliorer
        Tu va pouvoir sélectionner la cellule de début, la cellule de fin et la cellule de destination
        0
      3. @dandypunkca serait super gentil, c'est dejà super comme ca de pouvoir m'aider !
        0
    7. Pour ton post 23, laisse moi deux ou trois jours, d'autres attendent.
      Pour ton post 21 :
      commence à remplir les 3 premières cellules.
      sélectionne les. en bas à droite, tu as un carré un peu plus gros
      avec ta souris clique dessus et étend ta sélection. (à savoir tire vers le bas (ouvers la droite en fonction de la sélection))
      Cela est valable aussi pour les "pas" constants (e.g.) 2,4,6...; voire pour les dates
      0
      1. ok ok merci
        0
    8. Ton post est résolu donc en cas de problème, cf ton POST 21 ouvre un autre POST.
      Cela permettra un mise à jour plus simple de la "base de résolution" de ce forum.

      Dura lex sed lex.

      Merci d'avoir dit merci.
      0