Filtre dans Excel sous VBA et cases vides

Résolu
GrifOli Messages postés 2223 Statut Membre -  
GrifOli Messages postés 2223 Statut Membre -
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 2223 Statut Membre 591
 
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 9 Statut Membre 2
 
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 2223 Statut Membre 591
 
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