VBA trier par ordre alphabétique

Résolu
Bonjour à tous,

Je veux trier par ordre alphabétique les données dans la colonne B mais seulement à partir de la cellule B3. Ensuite, toutes les données des colonnes adjacentes (c, d, e, f, etc.) doivent suivre le triage en respectant la ligne correspondante.
La colonne A ne doit pas être affectée par le triage.

Comment faire?

Voici ce que j'ai tenté mais ça ne fonctionne pas car le triage se fait à partir de la cellule B2 et il affecte aussi à la colonne A.

Private Sub Worksheet_Change(ByVal Target As Range)

On Error Resume Next
    Range("B1").Sort Key1:=Range("B3"), _
      Order1:=xlAscending, Header:=xlYes, _
      OrderCustom:=1, MatchCase:=False, _
      Orientation:=xlTopToBottom

End Sub


Des suggestions?
Merci d'avance à tout le monde
EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

Merci d'y penser dans tes prochains messages.

3 réponses

  1. Bonjour,

    Avec enregistreur de macro (ai seulement modifie B1 par B2), a adapter:

    Sub Macro2()
    '
    ' Macro2 Macro
    '
    
    '
        Columns("B:D").Select
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("B2:B21") _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Feuil1").Sort
            .SetRange Range("B2:D21")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub
    0
    1. Bonjour f894009,

      Pour activer ton code j'ai besoin d'ajouter un bouton je suppose?
      Mon code je l'ai intégré directement dans la feuille, comme â il s'active automatiquement quand j'ajoute quelque chose dans la colonne B. Pas besoin de passer par un bouton.
      Est-ce que je peux aussi intégrer ton code directement dans la feuille?

      Merci pour ton aide.
      0
      1. Bonjour,
        besoin d'ajouter un bouton je suppose
        Non, il suffit de modifier le code dans Worksheet_Change pour appeler la procédure ou mettre ce code dans votre procedure avec les modifier ci-dessous

        Est-ce que je peux aussi intégrer ton code
        Non, il faut faire un recherche de la dernière cellule non vide colonne B pour les deux
        Range("B2:B21")

        qui devient:
        Range("B2:B" & derlig) derlig
        étant la ligne dernière cellule non vide colonne B

        quand j'ajoute quelque chose dans la colonne B
        Il faut modifier votre code pour ne tenir compte que des modifs des cellules colonne B vu qu'actuellement peut importe la cellule de quelque colonne que ce soit vous faite executer le code
        0
    2. Merci beaucoup!!!
      C'est réglé
      0