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

  • Votes
  • Date
  • Date décroissante
  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 
    1. Probablement excellent le seul problème je commence dans le domaine alors pourrais tu m'expliquer comment je doit l'inscrire svp.
      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)
        1. Éric le problème est que la feuille ne sera jamais activé.
          1. Contributeur
            Bon, si tu ne veux pas tout lire...
            Abandon du suivi
          2. J'ai bien lu ce que tu dis mais cette worksheet ne sera jamais activé!
        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. Contributeur
            Ce que j'ai écris au-dessus ne t'interesse pas du tout ?
            eric
        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
          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"