VBA trier par ordre alphabétique

Résolu
GustavoSRP Messages postés 8 Statut Membre -  
GustavoSRP Messages postés 8 Statut Membre -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  2. GustavoSRP Messages postés 8 Statut Membre
     
    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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      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
  3. GustavoSRP Messages postés 8 Statut Membre
     
    Merci beaucoup!!!
    C'est réglé
    0