Filtre dans Excel sous VBA et cases vides

Résolu/Fermé
GrifOli Messages postés 2111 Date d'inscription samedi 28 juin 2008 Statut Membre Dernière intervention 26 mars 2020 - Modifié par GrifOli le 26/08/2011 à 18:06
GrifOli Messages postés 2111 Date d'inscription samedi 28 juin 2008 Statut Membre Dernière intervention 26 mars 2020 - 24 sept. 2011 à 19:53
Bonjour,

J'utilise une macro pour faire un filtre sur les cellules A4 à AD23 (je veux mettre en ordre alphabétique la colonne B5:B23). J'ai utilisé une macro d'enregistrement car je ne connais pas vraiment le VBA. Lorsque je le fais manuellement, les noms sont placés en ordre alphabétique, alors que les cases vides sont en dessous des noms.

Cependant, lorsque j'attribue ma macro à un bouton (présent sur une autre feuille excel), la macro met les cases vides en haut de la liste, puis les noms suivent en ordre alphabétique en-dessous.

Y a-t-il moyen de forcer la macro dans VBA pour que les cases vides soient placées après les noms que je filtre?

Voici mon code:

Sub alphab() 

'Mettre en ordre alphabétique les feuilles "p1" à "p30" 
    ActiveWorkbook.Worksheets("p1").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("p1").Sort.SortFields.Add Key:=Range("B5:B23"), _ 
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    With ActiveWorkbook.Worksheets("p1").Sort 
        .SetRange Range("A4:AD23") 
        .Header = xlYes 
        .MatchCase = False 
        .Orientation = xlTopToBottom 
        .SortMethod = xlPinYin 
        .Apply 
    End With 
    Sheets("p1").Select 
    Range("A1").Select 

    Sheets("Saison").Select 
    Range("A1").Select 
End Sub 


Merci,
Olivier

A voir également:

3 réponses

GrifOli Messages postés 2111 Date d'inscription samedi 28 juin 2008 Statut Membre Dernière intervention 26 mars 2020 591
26 août 2011 à 18:19
Ok je crois savoir le problème.

C'est que mes cellules vides font référence à une autre cellule qui est vide. Et je lui ai mis une fonction;

=SI(Liste!B5="";"";Liste!B5)

Et puisque la case est vide, il ne marque rien. Mais je crois que Excel voit cette cellule comme étant une cellule qui contient des lettres. Serait-ce possible?
0
Kaname63 Messages postés 6 Date d'inscription mardi 13 septembre 2011 Statut Membre Dernière intervention 20 octobre 2011 2
13 sept. 2011 à 16:20
Une question avant d'aller plus loin...

Quand cela te met les cellules vides au début, l'ordre alphabétique en dessous ne serait il pas inversé lui aussi... De Z vers A ?

Cordialement

Kaname63

0
GrifOli Messages postés 2111 Date d'inscription samedi 28 juin 2008 Statut Membre Dernière intervention 26 mars 2020 591
Modifié par GrifOli le 24/09/2011 à 19:54
Non, après les cellules vides, les cellules sont classées de A vers Z.

J'ai réglé mon problème en nommant toutes mes cellules "zzz" auxquelles mes fonctions font référence, puis en donnant à mes cellules la mise en forme conditionnelle suivante; si la cellule = zzz, alors mettre la couleur du texte en blanc.

Résultat: lorsque Excel met mes cellules en ordre alphabétiques, les cellules nommées "zzz" sont en bas de la liste, et elles semblent vide car le texte est en blanc!
0