Tri alphabétique en vba

Fermé
89ric Messages postés 10 Date d'inscription lundi 5 septembre 2011 Statut Membre Dernière intervention 10 septembre 2011 - 8 sept. 2011 à 21:53
89ric Messages postés 10 Date d'inscription lundi 5 septembre 2011 Statut Membre Dernière intervention 10 septembre 2011 - 10 sept. 2011 à 10:47
Bonjour,

je me tourne de nouveau vers vous pour m'aider à programmer un code me permettant de faire un tri alphabétique par exemple sur la feuil4 dans une plage déterminée (a5:s36) selon une colonne B mais uniquement sur les lignes non vides. J'ai bien essayé sans macro mais comme il y a des formules dans les cellules vides, il me m'est en premier les cellules vides.
Pouvez-vous m'aider?
Merci.


4 réponses

cousinhub29 Messages postés 583 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 26 septembre 2022 314
9 sept. 2011 à 11:02
Bonjour,

Peux-tu nous mettre la formule insérée dans les cellules de la colonne B?

Bonne journée
0
89ric Messages postés 10 Date d'inscription lundi 5 septembre 2011 Statut Membre Dernière intervention 10 septembre 2011 1
9 sept. 2011 à 11:57
Bonjour, la formule dans la cellule B5 est : =MAJUSCULE(Saisie!B33)
Merci!
0
89ric Messages postés 10 Date d'inscription lundi 5 septembre 2011 Statut Membre Dernière intervention 10 septembre 2011 1
9 sept. 2011 à 23:39
Personne pour m'aider? SVP
0
89ric Messages postés 10 Date d'inscription lundi 5 septembre 2011 Statut Membre Dernière intervention 10 septembre 2011 1
10 sept. 2011 à 10:47
Bonjour,

Je viens d'essayer une macro que j'ai trouvé et modifié. Je l'ai essayé sur une feuille (1° trimestre) mais elle m'indique une erreur et surtout elle me place toujours les cellules vides en premier.

Sub Trialphabétique()
Dim ShtS As Worksheet
' Définir le nom de la feuille de saisie
Set ShtS = Sheets("1° Trimestre")
' En Cas d'erreur on continue
On Error Resume Next
' Selectionne la première cellule du tableau
Range("b5").Select
' Boucle tant que pas vide
nbligne = 0
Do While Not (IsEmpty(ActiveCell))
nbligne = nbligne + 1
Selection.Offset(5, 0).Select
Loop

nbligne = Range(Cells(2, 5), Cells(2, 5).End(xlDown)).Rows.Count

Range(Cells(2, 5), Cells(18, nbligne)).Select


Range("b5:s5").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort Key1:=Range("b5"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

End Sub

Merci pour votre aide.
0