Commande vba excel

Résolu
Bonjour,

Voici ma commande :

Private Sub Worksheet_Activate()
Range("A1:c800").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Key2:=Range _
("c1"), Order2:=xlDescending, Key3:=Range _
("b1"), Order3:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _
:=False, Orientation:=xlTopToBottom
Range("A9").Select
End Sub

Le seul problème est que ma feuille n'est jamais activée alors je pourrais changer Private Sub Worksheet_Activate() par quoi ?

8 réponses

  1. Eh bien dans ton code tu rajoutes ces deux lignes, ce qui donne :

    Private Sub Workbook_Open() 
    
    Application.ScreenUpdating = False
    Worksheets("Base de données").Activate
    Range("A1:c800").Select 
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Key2:=Range _ 
    ("c1"), Order2:=xlDescending, Key3:=Range _ 
    ("b1"), Order3:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _ 
    :=False, Orientation:=xlTopToBottom 
    
    End Sub 
    0
    1. Probablement excellent le seul problème je commence dans le domaine alors pourrais tu m'expliquer comment je doit l'inscrire svp.
      0
      1. Salut,
        Pourquoi ne pas insérer un petit
        Worksheets("Base de données").Activate
        dans la macro s'exécutant à l'ouverture du classeur ?

        Edit : Je viens de voir une réponse de eljojo_e sur un autre sujet :
        Après si tu veux pas voir l'autre feuille, tu peux mettre
        Application.ScreenUpdating = False
        Peut-etre est-ce ce que tu cherches ?
        (Pour que ça fonctionne il faut bien sûr mettre le rafraîchissement avant l'activate)
        0
        1. Éric le problème est que la feuille ne sera jamais activé.
          0
          1. Contributeur
            Bon, si tu ne veux pas tout lire...
            Abandon du suivi
            0
          2. J'ai bien lu ce que tu dis mais cette worksheet ne sera jamais activé!
            0
        2. Private Sub Workbook_Open()
          Worksheets("Base de donnée")
          Range("A1:c800").Select
          Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Key2:=Range _
          ("c1"), Order2:=xlDescending, Key3:=Range _
          ("b1"), Order3:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _
          :=False, Orientation:=xlTopToBottom
          Range("A9").Select
          End Sub

          Dans le fond c'est quelque chose comme ça que je veux mais il doit manquer un petit quelque chose
          -1
          1. Contributeur
            Ce que j'ai écris au-dessus ne t'interesse pas du tout ?
            eric
            0
        3. Contributeur
          Bonjour,

          ta feuille sera activée si tu en sélectionnes une autre et que tu la re-sélectionne.

          Sinon tu as d'autres évèments utilisables : change, selectionChange et voire même ajouter un bouton.

          Tout dépend quand et comment tu désires rafraichir ton tri.

          Par exemple avec :
          Private Sub Worksheet_SelectionChange(ByVal Target As Range)
              If Target = [A1] Then
                  'ton code
              End If
          End Sub
          ton tri se fera si tu sélectionnes A1.

          eric
          0
          1. Quelque chose comme :

            Private Sub Workbook_Open()
            Range("A1:c800").Select
            Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Key2:=Range _
            ("c1"), Order2:=xlDescending, Key3:=Range _
            ("b1"), Order3:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _
            :=False, Orientation:=xlTopToBottom
            Range("A9").Select
            End Sub

            mais il me manque la partie ou j'identifie la feuille "Base de donnée"
            0