Trier plusieurs colonnes

Résolu
mic6259 Messages postés 343 Date d'inscription   Statut Membre Dernière intervention   -  
mic6259 Messages postés 343 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'aimerais trier les colonnes par ordre alphabétique , a partir de B2 et F2 en sachant que B2 et C2 sont ensemble même chose pour F2 et G2 jusqu’à la lignes 51.
En VBA ou en formule.
Merci beaucoup

2 réponses

  1. DjiDji59430 Messages postés 4280 Date d'inscription   Statut Membre Dernière intervention   718
     
    Bonjour,

    Un fichier (test ou non), complété par des explications exhaustives, mis sur https://www.cjoint.com/ permettrait de répondre plus précisément à ta question

    Crdmt
    0
    1. mic6259 Messages postés 343 Date d'inscription   Statut Membre Dernière intervention   1
       
      Bonsoir
      Je reviens vers vous, car c'est vrai, j'ai oublier de mettre une pièce jointe que voici ci dessous.
      Par contre, j'ai rajouté les colonnes en J2 et K2, et il est possible que j'en rajoute d'autres, mais en fonction de la solution que vous pourriez me proposer et que je vais modifier selon mes besoin, si vous le voulez bien.
      Merci beaucoup
      Ps: je sais pas créer du vba, mais je sais les modifier(a force je vais peut-être y arriver)

      https://cjoint.com/c/IKytSLr7mk8
      0
  2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonsoir

    Tu sais qu'il y a une solution pratique prévue par Excel dans ton cas ?
    L'enregistreur de macro
    Dans le ruban tu vas Dans Developpeur - Enregistrer une macro puis tu fais tes 3 manips de tri de tes doubles colonnes avant de stopper l'enregistrement
    Dans l'éditeur VBA dans le module 1 tu obtiens alors :
    Sub Macro1()
    '
    ' Macro1 Macro
    '
    
    '
        Columns("B:C").Select
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add2 Key:=Range("B2:B51") _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Feuil1").Sort
            .SetRange Range("B1:C51")
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Columns("F:G").Select
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add2 Key:=Range("F2:F52") _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Feuil1").Sort
            .SetRange Range("F1:G52")
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Columns("J:K").Select
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add2 Key:=Range("J2:J53") _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Feuil1").Sort
            .SetRange Range("J1:K53")
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub


    Cdlmnt
    Via
    0
    1. mic6259 Messages postés 343 Date d'inscription   Statut Membre Dernière intervention   1
       
      Bonjour Via
      On apprends tous les jour, j'ai essayé ta solution, formidable on peut pratiquement faire ce que l'on veut avec l'enregistreur de macro.
      Merci pour le tuyau
      Cordialement
      0