Macro Trier 9 plages de cellule dans une feuille

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 !

Broch002

XLDnaute Occasionnel
Bonjour,

J'ai cherché sans succès sur le forum, un code pour trier rapidement 9 plages de cellules du plus grand au plus petit.
En fait j'ai 9 colonnes avec un stock par famille, et je cherche à les trier du plus gros stock au plus petit.
Je sais le faire pour un trie classique d'une feuille entière en VBA par une colonne, mais par plage ???

Quelqu'un a t'il un code pour cela?

Merci D'avance.
 

Pièces jointes

Dernière édition:
Re : Macro Trier 9 plages de cellule dans une feuille

Bonjour Broch, bonjour le forum,

Je n'ai vu que 3 plages et non pas 9... Tu adapateras le code ci-dessous :
Code:
Sub Macro1()
Dim col As Byte 'déclare la variable col (COLonne)
Dim pl As Range 'déclare la variable pl (PLage)

For col = 1 To 7 Step 3 'boucle sur les colonnes 1 à 7 par pas de 3
    With Sheets("DISPO") 'prend en compte l'onglet "DISPO"
        Set pl = .Cells(3, col).CurrentRegion 'définit la plage pl
        Set pl = pl.Offset(1, 0).Resize(pl.Rows.Count - 1, pl.Columns.Count) 'redéfinit la plage pl (sans la première ligne)
        pl.Sort Key1:=.Cells(4, col + 1), Order1:=xlAscending, Header:=xlYes 'tri la plage en fonction du stock
    End With 'fin de la prise en compte de l'onglet "DISPO"
Next col 'prochaine colonne de la boucle
End Sub
 
Re : Macro Trier 9 plages de cellule dans une feuille

Bonjour Broch, bonjour le forum,

Je n'ai vu que 3 plages et non pas 9... Tu adapateras le code ci-dessous :
Code:
Sub Macro1()
Dim col As Byte 'déclare la variable col (COLonne)
Dim pl As Range 'déclare la variable pl (PLage)

For col = 1 To 7 Step 3 'boucle sur les colonnes 1 à 7 par pas de 3
    With Sheets("DISPO") 'prend en compte l'onglet "DISPO"
        Set pl = .Cells(3, col).CurrentRegion 'définit la plage pl
        Set pl = pl.Offset(1, 0).Resize(pl.Rows.Count - 1, pl.Columns.Count) 'redéfinit la plage pl (sans la première ligne)
        pl.Sort Key1:=.Cells(4, col + 1), Order1:=xlAscending, Header:=xlYes 'tri la plage en fonction du stock
    End With 'fin de la prise en compte de l'onglet "DISPO"
Next col 'prochaine colonne de la boucle
End Sub

Bonjour, Robert

J'ai installé le code dans mon fichier,(joint) et rien ne se passe.
J'ai complété le nombre de plage à 9.
Merci d'avance.
Broch002
 

Pièces jointes

Re : Macro Trier 9 plages de cellule dans une feuille

Bonjour Broch002

Salut Robert
En l'absence de notre ami voici la macro adaptée

Code:
Sub Macro1()
Dim col As Byte 'déclare la variable col (COLonne)
Dim pl As Range 'déclare la variable pl (PLage)


For col = 1 To 26 Step 3 'boucle sur les colonnes 1 à 7 par pas de 3
    With Sheets("DISPO") 'prend en compte l'onglet "DISPO"
    If col = 10 Then col = 11 ' tient compte du lave vaisselle decalé d'une colonne 
        Set pl = .Cells(4, col).CurrentRegion 'définit la plage pl
        Set pl = pl.Offset(1, 0).Resize(pl.Rows.Count - 1, pl.Columns.Count) 'redéfinit la plage pl (sans la première ligne)
        pl.Sort Key1:=.Cells(5, col + 1), Order1:=xlAscending, Header:=xlYes 'tri la plage en fonction du stock
    End With 'fin de la prise en compte de l'onglet "DISPO"
Next col 'prochaine colonne de la boucle
End Sub

Attention : il ne doit pas y avoir de trous dans les colonnes !!!
 
Re : Macro Trier 9 plages de cellule dans une feuille

Bonjour Broch002

Salut Robert
En l'absence de notre ami voici la macro adaptée

Code:
Sub Macro1()
Dim col As Byte 'déclare la variable col (COLonne)
Dim pl As Range 'déclare la variable pl (PLage)


For col = 1 To 26 Step 3 'boucle sur les colonnes 1 à 7 par pas de 3
    With Sheets("DISPO") 'prend en compte l'onglet "DISPO"
    If col = 10 Then col = 11 ' tient compte du lave vaisselle decalé d'une colonne 
        Set pl = .Cells(4, col).CurrentRegion 'définit la plage pl
        Set pl = pl.Offset(1, 0).Resize(pl.Rows.Count - 1, pl.Columns.Count) 'redéfinit la plage pl (sans la première ligne)
        pl.Sort Key1:=.Cells(5, col + 1), Order1:=xlAscending, Header:=xlYes 'tri la plage en fonction du stock
    End With 'fin de la prise en compte de l'onglet "DISPO"
Next col 'prochaine colonne de la boucle
End Sub

Attention : il ne doit pas y avoir de trous dans les colonnes !!!

Bonjour, Pierre jean.

Bravo c'est exactement ce qu'il faut.

Merci à vous deux et bonne soirée.

Broch002
 
- 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