VBA trier par ordre alphabétique

Résolu
GustavoSRP Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
GustavoSRP Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -
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

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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
GustavoSRP Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
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
GustavoSRP Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup!!!
C'est réglé
0