VBA trier par ordre alphabétique [Résolu]

Signaler
Messages postés
8
Date d'inscription
mercredi 15 janvier 2020
Statut
Membre
Dernière intervention
7 janvier 2021
-
Messages postés
8
Date d'inscription
mercredi 15 janvier 2020
Statut
Membre
Dernière intervention
7 janvier 2021
-
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

Messages postés
15524
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 janvier 2021
1 437
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
Messages postés
8
Date d'inscription
mercredi 15 janvier 2020
Statut
Membre
Dernière intervention
7 janvier 2021

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.
Messages postés
15524
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 janvier 2021
1 437
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
Messages postés
8
Date d'inscription
mercredi 15 janvier 2020
Statut
Membre
Dernière intervention
7 janvier 2021

Merci beaucoup!!!
C'est réglé