Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro de tri pour plusieurs plages

  • Initiateur de la discussion Initiateur de la discussion Goose
  • 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 !

Goose

XLDnaute Occasionnel
Bonjour à tous,

Voilà, j'ai une macro (ci-joint) que j'aimerai modifier pour quelle puisse me permettre de trier n'importe quel tableau sur une feuille active.
Pour cela, j'ai pris la position du bouton de commande pour selectionner les plages concernées
mais sachant que les lignes des ces tableaux sont variables en fonction des pays médaillés, comment insérer, dans le code, une variable qui me selectionne la plage respective (entre le nombre 1 et la position du bouton) ??
voir fichier exemple:
Bye
Code:
Sub Insertion()
Dim derlig As Long
derligne = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
Application.ScreenUpdating = False
Range("K" & derligne - 1 & ":O" & derligne - 5).Select
    Selection.Sort Key1:=Range("L1"), Order1:=xlDescending, Key2:=Range("M1") _
        , Order2:=xlDescending, Key3:=Range("N1"), Order3:=xlDescending, Header _
        :=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Application.ScreenUpdating = True
End Sub
 

Pièces jointes

Re : Macro de tri pour plusieurs plages

Bonjour Goose,

Voici une solution avec une procédure unique et des paramètres de lignes définis dans les boutons de commande.

Nota : j'ai remplacé tes boutons issus de la barre d'outils Formulaires par des boutons ActiveX (barre d'outils Contrôles), beaucoup plus maniables en VBA.

Espérant avoir répondu.

Cordialement.
 

Pièces jointes

Dernière édition:
Re : Macro de tri pour plusieurs plages

Salut Goose et le forum
Je sais que c'est nul, mais si tu t'obligeais à déclarer toutes variables, ça n'arriverait pas !
Code:
Sub Insertion()
Dim [COLOR=red]derlig[/COLOR] As Long
[COLOR=red]derligne[/COLOR] = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
Macro
Code:
Sub Insertion()
Dim DerLig As Long, PremLig As Long
DerLig = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row - 1
'PremLig = DerLig - Range("J" & DerLig )
For PremLig = DerLig To 1 Step -1
    If Range("j" & PremLig) = 1 Then Exit For
Next PremLig

Range("K" & PremLig & ":O" & DerLig).Sort Key1:=Range("L" & PremLig), Order1:=xlDescending, _
                                               Key2:=Range("M" & PremLig), Order2:=xlDescending, _
                                               Key3:=Range("N" & PremLig), Order3:=xlDescending, _
        Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
        xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
        DataOption3:=xlSortNormal
End Sub
Ce que j'ai laissé en commentaire me semblait évident jusqu'à ,ce que je teste "CHAMPIONNAT DU MONDE DE BASKETBALL 2010", qui à 6 à la ligne au-dessus du bouton, et 5 lignes de remplies !

Pour éviter les erreurs de frappe :
- je mets une majuscule en début du nom de la variable => quand je valide la ligne de code entrée en minuscule, si la majuscule n'apparaît pas, c'est pas bon !
- J'ai mis déclaration des variables obligatoires, et je les déclare dans le type voulu.

Le nombre d'heures économisé en recherche de bug est impressionnant. Mais il est vrai que je suis mauvais...
A+
 
- 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
2
Affichages
816
Réponses
4
Affichages
1 K
Réponses
0
Affichages
1 K
Réponses
3
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…