Tri en évitant les zeros

  • Initiateur de la discussion Initiateur de la discussion eduraiss
  • Date de début Date de début

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 !

eduraiss

XLDnaute Accro
Bonjour le forum
juste un petit souci pour effectuer un trie

Voici l'exemple en colonne A j'ai
0
a
c
b
0
d

je voudrais avoir
a
b
c
d
0
0
j'ai essayé avec le tri croissant ou descroissant, mais cela ne fonctionne pas

Merci de votre aide
Cordialement
 
Re : Tri en évitant les zeros

Bonjour Eduraiss, le forum,

Réponse rapide si tu veux également ne pas voir les "0".
tu fais un filtre automatique
puis tu vas dans filtre personnalisé: Différent de: 0
Ensuite tu tries en ordre croissant.

JHA
 
Re : Tri en évitant les zeros

Bonjour,

J'ai compris que vous vouliez trier les données avec les Alphas placés avant les Numerics et qu'il pouvait y avoir d'autres nombres que le 0 (zéro)
Si c'est bien cela alors voici une piste, en VBA, avec la démarche suivante :

Copiez le code suivant dans un module Standard
Code:
'### Constante de l'ordre de tri (à adapter) ###
Const ORDER As Integer = 1  '  1=Ascending  2=Descending
'###############################################
 
Sub TriAlphaVersusNumeric()
Dim S As Worksheet
Dim S1 As Worksheet
Dim R As Range
Dim R1 As Range
Dim R2 As Range
Dim var
Dim i&
On Error GoTo Erreur
Application.ScreenUpdating = False
Set S = ActiveSheet
Set R = Selection.CurrentRegion
R.Sort key1:=R.Cells(1, 1), order1:=ORDER
var = R
For i& = 1 To R.Rows.Count
  If Not IsNumeric(R.Cells(i&, 1)) Then
    Set R1 = Range(R.Cells(i&, 1), R.Cells(R.Rows.Count, R.Columns.Count))
    Set R2 = Range(R.Cells(1, 1), R.Cells(i& - 1, R.Columns.Count))
    Set S1 = Sheets.Add
    R1.Copy
    S1.Range(S1.Cells(1, 1), S1.Cells(1, 1)).PasteSpecial xlPasteAll
    R2.Copy
    S1.Range(S1.Cells(R.Rows.Count - i& + 2, 1), S1.Cells(R.Rows.Count - i& + 2, 1)).PasteSpecial xlPasteAll
    S1.[a1].CurrentRegion.Copy
    S.Range(R.Address).PasteSpecial xlPasteAll
    Application.DisplayAlerts = False
    S1.Delete
    S.Activate
    Exit For
  End If
Next i&
Erreur:
With Application
  .CutCopyMode = False
  .DisplayAlerts = True
  .ScreenUpdating = True
End With
End Sub

FONCTIONNEMENT
Sélectionnez une cellule de votre plage de données et lancez la macro TriAlphaVersusNumeric.
Les données seront triées sur la base de la 1ère colonne de la plage en obtenant d'abord les Alphas et ensuite les Numerics.
Le tri s'effectue de manière ascendante mais, en modifiant la constante ORDER cernées par des ###, vous pouvez faire un tri descendant.

Cordialement.

PMO
Patrick Morange
 
- 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

Réponses
5
Affichages
318
Retour