Macro Trier 9 plages de cellule dans une feuille

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

  • Testbroch002.xlsx
    65.3 KB · Affichages: 46
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
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
 

Broch002

XLDnaute Occasionnel
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

  • Testbroch002.xlsm
    97.7 KB · Affichages: 39

pierrejean

XLDnaute Barbatruc
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 !!!
 

Broch002

XLDnaute Occasionnel
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
 

Discussions similaires

Réponses
12
Affichages
247

Statistiques des forums

Discussions
312 273
Messages
2 086 701
Membres
103 374
dernier inscrit
damned42