Commande vba excel
Résolu
Francis
-
Fmoore Messages postés 12 Statut Membre -
Fmoore Messages postés 12 Statut Membre -
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 ?
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
-
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" -
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 Subton tri se fera si tu sélectionnes A1.
eric -
-
Salut,
Pourquoi ne pas insérer un petitWorksheets("Base de données").Activatedans 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 mettreApplication.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) -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Probablement excellent le seul problème je commence dans le domaine alors pourrais tu m'expliquer comment je doit l'inscrire svp.
-
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 -
-
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