VBA - Trier colonne

Bonjour

J'ai un onglet qui contient 2 tableaux (non définis comme tableau pour éviter les noms), et 4 graphiques.

Les 2 premiers graphiques se construisent via le premier tableau, et les 2 suivants via la second.

Le second tableau n'est qu'un copier/coller du premier avec un tri du plus grand au plus petit sur la première colonne.

Le problème est le suivant :

Le code ci-dessous fonctionne très bien. Il est renseigné dans un module. Il fonctionne sur l'onglet "Courbe V1". Je souhaite pouvoir créer si j'en ai besoin plusieurs onglets de ce type, "Courbe V2", "Courbe V3"... Comment adapter la syntaxe de ce module pour qu'il reste applicable dans chacun des onglets contenant le bouton déclencheur ?

Sub MAJ_Graphique()

    Application.ScreenUpdating = False

    Range("C4:H368").Copy

    Range("J4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

    Application.CutCopyMode = False

    Range("J3:O3").AutoFilter 'Active le filtre

    ActiveWorkbook.Worksheets("Courbe V1").AutoFilter.Sort.SortFields.Clear

    ActiveWorkbook.Worksheets("Courbe V1").AutoFilter.Sort.SortFields.Add Key:= _
        Range("J3"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal

    With ActiveWorkbook.Worksheets("Courbe V1").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

    Selection.AutoFilter 'Désactive le filtre

    Range("A1").Select

End Sub

bonjour,

essaie ceci

Sub MAJ_Graphique()
    With ActiveSheet

        Application.ScreenUpdating = False

        .Range("C4:H368").Copy

        .Range("J4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                                                           :=False, Transpose:=False

        Application.CutCopyMode = False

        .Range("J3:O3").AutoFilter    'Active le filtre
        With .AutoFilter.Sort
            .SortFields.Clear
            .SortFields.Add Key:= _
                            .Range("J3"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
                            xlSortNormal
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With

        Selection.AutoFilter    'Désactive le filtre

        .Range("A1").Select
    End With
End Sub

Bonjour h2so4,

J'obtiens erreur 438 avec ce code surligné :

            .SortFields.Add Key:= _
                            .Range("J3"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
                            xlSortNormal

Résolu en remplaçant :

            .SortFields.Add Key:= _
                            .Range("J3"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
                            xlSortNormal

Par :

            .SortFields.Add Key:=Range("J3"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
                            xlSortNormal

Merci encore une fois h2so4

Rechercher des sujets similaires à "vba trier colonne"