none
Changer formule RRS feed

  • Question

  • Bonsoir.

    J'aimerais pouvoir changer le format d'accès aux cellules.

    Je m'explique, si j'ai comme dans la macro qui est incluse, Range ("D3:D13").select, je ne peux utiliser cette macro que pour les lignes D3 a D13. Alors je change ça pour Range (cells(x,4),cells(y,4)).select. Ça fonctionne bien sauf pour la ligne ou l'on trouve Key:=Range qui n'accepte pas Range(cells(x,4)).

    Alors comment convertir le format D3 en cells(3,4) et inversement cells(3,4) en D3.

    Ici x et y sont utilisé pour signifier que ce sont des variables, la même chose s'applique pour les colonnes.

    Encore merci pour votre précieuse aide

    Range("D3:D13").Select
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("D3"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Feuil1").Sort
            .SetRange Range("D3:D13")
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With

    mercredi 18 novembre 2015 01:51

Réponses

  • PS. Explication :

    cells(x, 4) représente une cellule. La syntaxe de "Range" est :

    Range(cellule_de_début, cellule_de_fin)

    Il faudrait donc que tu mettes :

    Range(Cells(x, 4), Cells(x, 4))

    Ce qui fonctionne mais est plus lourd.

    Daniel

    mercredi 18 novembre 2015 09:27

Toutes les réponses

  • Bonjour,

    Mets :

    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Cells(x, 4), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

    Cordialement.

    Daniel

    mercredi 18 novembre 2015 09:21
  • PS. Explication :

    cells(x, 4) représente une cellule. La syntaxe de "Range" est :

    Range(cellule_de_début, cellule_de_fin)

    Il faudrait donc que tu mettes :

    Range(Cells(x, 4), Cells(x, 4))

    Ce qui fonctionne mais est plus lourd.

    Daniel

    mercredi 18 novembre 2015 09:27
  • Bonjour.

    Merci. Ça fonctionne, mais si je peux me permettre dans la procédure seul la première partie de Range est incluse, ce n'est donc pas évident de savoir que si on utilise la forme cells on doit inclure les 2 parties de Range.

    J'inclus donc la macro complète au cas ou quelqu'un voudrait l'utiliser

    Dim Debut, Fin, Colonne As Integer
    Debut = Selection(1).Row
    Fin = (Selection.Rows.Count + Debut) - 1
    Colonne = ActiveCell.Column
    Range(Cells(Debut, Colonne), Cells(Fin, Colonne)).Select
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range(Cells(Debut, Colonne), Cells(Fin, Colonne)), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Feuil1").Sort
            .SetRange Range(Cells(Debut, Colonne), Cells(Fin, Colonne))
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With

    Encore Merci.

    Piierre

    mercredi 18 novembre 2015 13:05