Trier des cellules non vide (avec une maro)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

gagnonpeter

XLDnaute Junior
Bonjour!
J'ai crée des boutons dans lequel est rattaché une macro qui me permet de faire des tris. Mon problème est que quand ma macro fait son tri, souvent je me ramasse avec des lignes blanche en haut de ma plage de tri. Je crois que cela est causé par le fait que le tri est en ordre croissant et que comme j'ai parfois des lignes vides, elles sont pris en compte comme un 0 donc elles remontent dans le haut de ma plage de tri. Comment remédier à ca? Un code VBA?

Merci de votre aide!
 
Re : Trier des cellules non vide (avec une maro)

Bonjour gagnonpeter,
je suggère de compléter la ou les macro qui font le tri par la suppression des lignes blanches.
sans fichier exemple anonymisé, il est difficile de se faire une meilleure idée du souci.
Bonne journée
 
Re : Trier des cellules non vide (avec une maro)

Bonjour gagnonpeter, Jacou,

Les lignes "vides" contiennent certainement des textes vides "" ou des espaces.

Pour que ces lignes soient placées en bas appeler cette macro à la fin de la macro de tri :

Code:
Sub LignesVidesEnBas()
Application.ScreenUpdating = False
With ActiveSheet.UsedRange
  With .Resize(, .Columns.Count + 1)
    With .Columns(.Columns.Count)
      .FormulaR1C1 = "=SIGN(SUMPRODUCT(N(TRIM(RC1:RC[-1])<>"""")))"
      .Value = .Value 'supprime les formules pour accélérer
    End With
    .Sort .Columns(.Columns.Count), xlDescending 'tri décroissant
    .Columns(.Columns.Count).ClearContents 'vide la colonne auxiliaire
  End With
End With
End Sub
A+
 
Re : Trier des cellules non vide (avec une maro)

Ca ne fonctionne pas. Je vous joint un fichier pour mieux comprendre. Si vous cliquez sur les bouton a droite, vous verrez que parfois mes données affichent dans le bas de ma page. Comment faire pour qu'elle restent toujours dans le haut de ma page?
 

Pièces jointes

Re : Trier des cellules non vide (avec une maro)

Re,

Ca ne fonctionne pas.

Bah vous devez être bien au courant puisque vous avez masqué les valeurs zéros.

En effet dans les options d'affichage de la feuille la case "Afficher un zéro dans les cellules qui ont une valeur nulle" a été décochée.

Il n'est donc pas question de textes vides mais de valeurs nulles.

Et il ne faut pas compter la colonne A.

Alors modifions la macro précédente :

Code:
Sub LignesNullesEnBas()
Application.ScreenUpdating = False
With ActiveSheet.UsedRange
  With .Resize(, .Columns.Count + 1)
    With .Columns(.Columns.Count)
      .FormulaR1C1 = "=SIGN(SUMPRODUCT(N(RC2:RC[-1]<>0)))"
      .Value = .Value 'supprime les formules pour accélérer
    End With
    .Sort .Columns(.Columns.Count), xlDescending 'tri décroissant
    .Columns(.Columns.Count).ClearContents 'vide la colonne auxiliaire
  End With
End With
End Sub
A+
 
Re : Trier des cellules non vide (avec une maro)

Je n'ai pas réussis à bien faire fonctionner la macro. J'ai refait celles qui étaient déjà sur le fichier (c'était un vieux fichier que j'ai repris) et il ne reste qu'à y ajouter la votre. Croyez vous que vous pouvez regarder à ca?
 

Pièces jointes

Re : Trier des cellules non vide (avec une maro)

Bonjour gagnonpeter,

Bon maintenant vous avez mis des textes en dehors du tableau, en colonne P...

Alors il ne faut pas utiliser ActiveSheet.UsedRange mais [A1].CurrentRegion.

Fichier joint.

Edit : attention vos boutons sont doubles ! Il faut affecter une macro à chacun !

A+
 

Pièces jointes

Dernière édition:
Re : Trier des cellules non vide (avec une maro)

Re,

Un truc un peu difficile à comprendre.

On peut n'affecter qu'une seule macro à chacun des boutons de tri et à son double :

Code:
Sub Tri()
If IsError(Application.Caller) Then Exit Sub 'sécurité
Dim nobjet, ncol, i, ordre
nobjet = Array(5, 6, 2, 3, 8, 9, 11, 12, 15, 16) 'numéros dans les noms des objets
ncol = Array(8, 8, 5, 5, 6, 6, 2, 2, 9, 9) 'numéros des colonnes de tri
i = Application.Match(Val(Split(Application.Caller)(1)), nobjet, 0)
ordre = IIf(ncol(i - 1) = 5, xlDescending, xlAscending)
Application.ScreenUpdating = False
[A1].CurrentRegion.Sort Columns(ncol(i - 1)), ordre, Header:=xlYes
LignesNullesEnBas
End Sub
Fichier (2).

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour