Macro en quittant un onglet
Résolu
fadmaam
Messages postés
35
Statut
Membre
-
fadmaam Messages postés 35 Statut Membre -
fadmaam Messages postés 35 Statut Membre -
Bonjour,
Je souhaiterais faire tourner une macro lorsque je quitte un onglet. Actuellement la macro tourne dès que je modifie une cellule et ça prend donc bcp de temps.
Voici le code que j'ai actuellement:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Then Exit Sub
Valeur = Target
If Application.Intersect(Columns("A:C"), Target) Is Nothing Then Exit Sub 'si le changement a lieu ailleurs que dans les colonnes A, B ou C, sort de la procédure
Range("A2:AZ500").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("C2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
Set c = Columns("A:AZ").Find(Valeur, LookIn:=xlValues)
c.Select
End Sub
J'ai essayé avec la fonction "deactivate" (en gardant juste la partie "Range... -> normal") mais ça ne fonctionne pas. Je présume que c'est parce qu'il faut préciser dans quel onglet il faut sélectionner les données à trier mais je ne sais pas comment faire...
Merci d'avance pour votre aide...
Cordialement,
FadY
Je souhaiterais faire tourner une macro lorsque je quitte un onglet. Actuellement la macro tourne dès que je modifie une cellule et ça prend donc bcp de temps.
Voici le code que j'ai actuellement:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Then Exit Sub
Valeur = Target
If Application.Intersect(Columns("A:C"), Target) Is Nothing Then Exit Sub 'si le changement a lieu ailleurs que dans les colonnes A, B ou C, sort de la procédure
Range("A2:AZ500").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("C2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
Set c = Columns("A:AZ").Find(Valeur, LookIn:=xlValues)
c.Select
End Sub
J'ai essayé avec la fonction "deactivate" (en gardant juste la partie "Range... -> normal") mais ça ne fonctionne pas. Je présume que c'est parce qu'il faut préciser dans quel onglet il faut sélectionner les données à trier mais je ne sais pas comment faire...
Merci d'avance pour votre aide...
Cordialement,
FadY
A voir également:
- Macro en quittant un onglet
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Rouvrir onglet fermé chrome - Guide
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Excel récupérer couleur cellule sans macro ✓ - Forum Bureautique
2 réponses
Bonjour,
Le code avec Deactivate devrait marcher mais effectivement, il faut alors préciser dans quel onglet on l'exécute. Donc je procéderais comme cela :
Cordialement.
Le code avec Deactivate devrait marcher mais effectivement, il faut alors préciser dans quel onglet on l'exécute. Donc je procéderais comme cela :
Private Sub Worksheet_Deactivate() Dim Valeur As String 'Valeur = Target : il va falloir changer cette donnée car en quittant l'onglet, il est évident que la 'target' ne sera pas la bonne cellule. 'pour pallier à ce problème, je vous propose ce code : Valeur = InputBox("Tapez le nom de la valeur à rechercher :") If InputBox = "" Then MsgBox("Aucune saisie.") Exit Sub End If Sheets("le nom de votre feuille").Range("A2:AZ500").Select Selection.Sort Key1:=Sheets("le nom de votre feuille").Range("A2"), Order1:=xlAscending, Key2:=Sheets(le nom de votre feuille").Range("C2") _ , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _ False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _ :=xlSortNormal Set c = Sheets("le nom de votre feuille").Columns("A:AZ").Find(Valeur, LookIn:=xlValues) Sheets("le nom de votre feuille").c.Select End Sub
Cordialement.
Merci pour votre réponse.
J'ai corrigé le code et voici ce que ça donne :
J'ai enlevé le reste car en fait ça ne sert plus à grand chose si on quitte l'onglet...
Par contre, j'ai un message d'erreur :"Select method of Range clas failed".
Désolé, je ne suis vraiment pas doué :-(
FadY
Blacklist
Je suis navré mais il n'y avait rien d'autre sur mon écran que la réponse de Kuartz lorsque j'ai répondu tout à l'heure. J'étais occupé à essayer sa solution et n'ai sans doute pas rafraichi la page avant de répondre.
FadY
J'espère que vous n'êtes pas en colère contre moi...
fadmaam, vous auriez dû prêter attention à la réponse de michel_m.
Ce qui plante sur le code, c'est la ligne :
Et pour cause, vous sélectionnez des cellules d'une feuille où vous n'êtes pas.
Le code modifié et fonctionnel :
Cordialement.
Ca fonctionne nickel ;-)
Cordialement,
FadY