Commande vba excel

Résolu/Fermé
Francis - 12 juil. 2012 à 15:40
Fmoore Messages postés 11 Date d'inscription jeudi 12 juillet 2012 Statut Membre Dernière intervention 24 mars 2023 - 12 juil. 2012 à 17:45
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 ?
A voir également:

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"
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
Modifié par eriiic le 12/07/2012 à 15:52
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
Fmoore Messages postés 11 Date d'inscription jeudi 12 juillet 2012 Statut Membre Dernière intervention 24 mars 2023
12 juil. 2012 à 16:16
Éric le problème est que la feuille ne sera jamais activé.
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
Modifié par eriiic le 12/07/2012 à 16:18
Bon, si tu ne veux pas tout lire...
Abandon du suivi
0
Fmoore Messages postés 11 Date d'inscription jeudi 12 juillet 2012 Statut Membre Dernière intervention 24 mars 2023
12 juil. 2012 à 16:29
J'ai bien lu ce que tu dis mais cette worksheet ne sera jamais activé!
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
Modifié par Morgothal le 12/07/2012 à 16:47
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fmoore Messages postés 11 Date d'inscription jeudi 12 juillet 2012 Statut Membre Dernière intervention 24 mars 2023
12 juil. 2012 à 16:50
Probablement excellent le seul problème je commence dans le domaine alors pourrais tu m'expliquer comment je doit l'inscrire svp.
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
12 juil. 2012 à 16:54
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
Fmoore Messages postés 11 Date d'inscription jeudi 12 juillet 2012 Statut Membre Dernière intervention 24 mars 2023
12 juil. 2012 à 17:45
Parfait merci beaucoup
0
Fmoore Messages postés 11 Date d'inscription jeudi 12 juillet 2012 Statut Membre Dernière intervention 24 mars 2023
12 juil. 2012 à 16:08
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
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
12 juil. 2012 à 16:10
Ce que j'ai écris au-dessus ne t'interesse pas du tout ?
eric
0