VBA - Trier sur une feuille non active

Bonjour,

Dans le fichier ci-joint, lorsque j'active la feuille ''Huitièmes'', une macro est lancée. A un certain moment, je place des chiffres aléatoires sur une autre feuille et je voudrais trier des données de cette autre feuille sur la base des chiffres aléatoires mis en place.

J'ai laissé deux essais avortés dans ma macro afin de démonter au mieux ce que je souhaite réaliser, mais comme leur nom l'indique, ces deux essais ne fonctionnent pas.

Pouvez-vous m'aider, s'il-vous-plait ?

Cordialement.

Bonsoir,

On ne peut pas faire de tri sans que la feuille soit activée, me semble-t-il.
Mise en place d'une variable "douvient" afin de mettre en mémoire quelle feuille on vient de quitter.

Lorsque la feuille huitièmes est lancée, alors le code correspondant masque la mise à jour de l'écran et stop la surveillance événementielle, il est alors possible d'activer la feuille d'où l'on vient afin d'y appliquer le tri voulu, et on revient sur la feuille huitièmes et enfin on réactive la surveillance événementielle puis on met en route la mise à jour de l'écran.

Je ne sais si cela va dans votre sens pour résoudre le problème, mais cela peut vous orienter vers une façon de faire pour gérer la chose.

Le fichier :

@ bientôt

LouReeD

bonsoir Yvouille

les deux options fonctionnent après légères corrections.

Option Explicit
Public Drapeau_Match_4_à_8èmes As Boolean, Drapeau_Match_4_à_Quarts As Boolean, Drapeau_Match_4_à_Demies As Boolean
Public Drapeau_Déroulement_normal As Boolean

Sub Passer_aux_8èmes_de_finale()
    Dim i As Integer, j As Byte, Feuille_de_base As String, Première_ligne As Byte, Dernière_ligne As Byte

    With Sheets("Match 5")

        Première_ligne = 19
        Dernière_ligne = 20

        If Première_ligne <> Dernière_ligne Then ' S'il y a vraiment des ex æquo

            For i = Première_ligne To Dernière_ligne
                .Range("P" & i) = Application.WorksheetFunction.RandBetween(1, 999999)
            Next i

'            ESSAI AVORTE 1 'manquait : dans la définition de la plage
           .Range("M" & Première_ligne & ":P" & Dernière_ligne).Sort Key1:=.Range("P" & Première_ligne), Order1:=xlDescending, Header:=xlNo

            ' ESSAI AVORTE 2

           ' .Range("M" & Première_ligne & ":P" & Dernière_ligne).Select <- supprimer cette ligne pour que les instructions ci-dessous fonctionnent
'            .Sort.SortFields.Clear
'            .Sort.SortFields.Add2 Key:=.Range("P" & Première_ligne & ":P" & Dernière_ligne), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
'            With .Sort
'                .SetRange Range("M" & Première_ligne & ":P" & Dernière_ligne)
'                .Apply
'            End With

        End If
    End With

    ActiveSheet.Protect , UserInterfaceOnly:=True

End Sub

Bonjour

Moi qui pensais qu'il fallait que la feuille soit active...

@ bientôt

LouReeD

Bonjour et merci à tous deux d'avoir apporté de l'eau à mon moulin

Un merci particulier à toi h2so4 pour avoir découvert mon erreur dans le premier ''essai'' et me permettre ainsi d'utiliser une instruction simple pour ne pas dire simpliste

Bon dimanche à vous tous.

Rechercher des sujets similaires à "vba trier feuille active"