Macro classement ligne par ordre alphabétique

Bonjour à tous,

J'ai une petite question pour une macro (je débute)

J'ai une ligne avec des noms que je transpose en horizontal sur l'onglet "Planning" d'une autre feuille "Personnels" dont les noms sont en vertical.

Jusque là pas de soucis.

Je souhaiterais créer un bouton (c'est fait) sur "planing" et y coller une macro pour classer cette ligne nom par ordre alphabétique.

Les données de noms sont en B1:AJ1

Merci par avance pour votre aide.

Bien cordialement.

Bonjour,

une proposition

Sub triligne()
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("B1:AJ1"), _
                        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("B1:AJ11")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Hello,

Merci bien pour ton aide.

Je viens de tester ton code, j'ai juste remplacé Sheet1 par Planning

Sub triligne()
    With ActiveWorkbook.Worksheets("Planning").Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("B1:AJ1"), _
                        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("B1:AJ11")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Il me retourne un erreur en jaune à .Apply

Cordialement.

bonjour,

je n'ai pas d'erreur chez moi.

je vois une faute de frappe AJ11 doit être AJ1, mais cela n'explique pas ton problème.

peux-tu mettre ton fichier ?

Oui, voici.

Merci bien.

Bonjour,

comme l'indique le message d'erreur, tu ne peux pas modifier une cellule qui est la cible d'une fonction matricielle.

une solution possible, mais avec l'inconvénient que tu perds ta formule

Sub triligne()
    With ActiveWorkbook.Worksheets("planning")
    .Range("B1:AJ1").Copy
    .Range("B1:AJ1").PasteSpecial Paste:=xlPasteValues 'enlever la formule matricielle, ne garder que le résultat
    With .Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("B1:AJ1"), _
                        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange Range("B1:AJ1")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
    End With
End Sub

Super !

Alors ce que j'ai fais, j'ai suprimé la transposition et j'ai remplacé par des liaisons en dur "basiques", du coup tout fonctionne.

J'ai une dernière question, lorsque je classe par ordre alphabétique, j'ai les cases vides des noms de mon onglet "Personnels" qui s'affichent en "0" sur l'onglet Planning.

Comment supprimer cette valeur "0" pour qu'elles ne se mettent pas avant l'ordre alphabétique et laisser la case vide?

Merci encore pour ton aide

Bonsoir à tous, est ce que quelqu'un aurait une idée pour le petit soucis sur mon message précédent?

Merci par avance.

Rechercher des sujets similaires à "macro classement ligne ordre alphabetique"