Macro classement ligne par ordre alphabétique.

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
dyscus
Membre fidèle
Membre fidèle
Messages : 317
Inscrit le : 22 août 2014
Version d'Excel : Excel 2013

Message par dyscus » 22 septembre 2014, 10:57

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.
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 8'604
Appréciations reçues : 296
Inscrit le : 16 juin 2013
Version d'Excel : 2013 UK Windows 10

Message par h2so4 » 22 septembre 2014, 11:09

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
Avatar du membre
dyscus
Membre fidèle
Membre fidèle
Messages : 317
Inscrit le : 22 août 2014
Version d'Excel : Excel 2013

Message par dyscus » 22 septembre 2014, 11:41

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.
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 8'604
Appréciations reçues : 296
Inscrit le : 16 juin 2013
Version d'Excel : 2013 UK Windows 10

Message par h2so4 » 22 septembre 2014, 11:48

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 ?
Avatar du membre
dyscus
Membre fidèle
Membre fidèle
Messages : 317
Inscrit le : 22 août 2014
Version d'Excel : Excel 2013

Message par dyscus » 22 septembre 2014, 11:52

Oui, voici.

Merci bien.
Modifié en dernier par dyscus le 6 février 2015, 12:35, modifié 1 fois.
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 8'604
Appréciations reçues : 296
Inscrit le : 16 juin 2013
Version d'Excel : 2013 UK Windows 10

Message par h2so4 » 22 septembre 2014, 12:56

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
Avatar du membre
dyscus
Membre fidèle
Membre fidèle
Messages : 317
Inscrit le : 22 août 2014
Version d'Excel : Excel 2013

Message par dyscus » 22 septembre 2014, 13:14

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 ;)
Modifié en dernier par dyscus le 6 février 2015, 12:36, modifié 1 fois.
Avatar du membre
dyscus
Membre fidèle
Membre fidèle
Messages : 317
Inscrit le : 22 août 2014
Version d'Excel : Excel 2013

Message par dyscus » 23 septembre 2014, 17:41

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

Merci par avance.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message