Code VBA pour retour à la dernière feuille active

de Rauglaudre

XLDnaute Nouveau
Bonjour,

Je suis face à un problème que je ne peux résoudre. J'ai regrdé ça et là mais les solutions ne correspondent pas à mon cas spécifique.

Je ne peux malheureusement pour l'instant pas envoyer de fichier test mais si besoin, je trouverais un moyen.

Voici la trame de mon fichier :

- Feuille 1 : 2 boutons. Le premier envoi feuille 2, le 2nd envoi feuille 3
- Feuille 2 : 1 bouton. Il envoi Feuille 4
- Feuille 3 : 1 bouton. Il envoi également feuille 4

Sur ma feuille 4, je souhaite pouvoir utiliser un bouton "précédent" qui enverrait vers la page précédente. Vu que mes boutons feuille 2 et 3 renvoient tous les 2 vers la feuille 4, je souhaite que mon bouton précédent sache s'il faut me renvoyer sur la feuille E ou la feuille 3.

Avez vous une solution?

D'avance merci pour votre aide.

PS : j'ai testé des trucs type
bouton()
Last ActiveSheet.Select ou encore previous sheet.select...

mais ça ne fonctionne pas (je suis nul et certainement trop simpliste)
 

Claudy

XLDnaute Accro
Bonjour,

Je suis face à un problème que je ne peux résoudre. J'ai regrdé ça et là mais les solutions ne correspondent pas à mon cas spécifique.

Je ne peux malheureusement pour l'instant pas envoyer de fichier test mais si besoin, je trouverais un moyen.

Voici la trame de mon fichier :

- Feuille 1 : 2 boutons. Le premier envoi feuille 2, le 2nd envoi feuille 3
- Feuille 2 : 1 bouton. Il envoi Feuille 4
- Feuille 3 : 1 bouton. Il envoi également feuille 4

Sur ma feuille 4, je souhaite pouvoir utiliser un bouton "précédent" qui enverrait vers la page précédente. Vu que mes boutons feuille 2 et 3 renvoient tous les 2 vers la feuille 4, je souhaite que mon bouton précédent sache s'il faut me renvoyer sur la feuille E ou la feuille 3.

Avez vous une solution?

D'avance merci pour votre aide.

PS : j'ai testé des trucs type
bouton()
Last ActiveSheet.Select ou encore previous sheet.select...

mais ça ne fonctionne pas (je suis nul et certainement trop simpliste)
Bonjour...
et avec ça?

Sub VersFeuille4()
'
' VersFeuille4 Macro
'

feuil = ActiveSheet.Name
Sheets("Feuil 4").Select
Range("A1") = feuil
End Sub

Sub VersPrecedent()
'
' VersFeuille4 Macro
'

'feuil = ActiveSheet.Name
Sheets((Range("A1").Text)).Activate
Range("A1").Select
End Sub

A+ Claudy
 

de Rauglaudre

XLDnaute Nouveau
Merci pour ton rapide retour. J'ai également quelques fonctions type toutes les autres feuilles disparaissent.

Voici par exemple comment on passe de ma feuille 1 à la suivante (ici, feuille 3) :

Sub Q1oui()
Feuil = ActiveSheet.Name
Sheets("Q3").Visible = True
Sheets("Q3").Select
Range("A1") = Feuil
Sheets("Q1").Visible = False
End Sub

J'ai ainsi sur la feuille 3 en A1 suite à tes conseils le nom de la page précédente (Feuil1).

Alors quand j'essaye Last.ActiveSheets. Ca ne fonctionne pas. J'ai commencé par

upload_2018-9-19_14-52-8.png


Mais celà ne fonctionne pas non plus. As tu une solution ou pour que ce code fonctionne, il faut que les feuilles soient visibles?
 

de Rauglaudre

XLDnaute Nouveau
Salut,

Pour illustrer, j'ai pu créer un petit fichier. Le but est que seule la page sur laquelle se trouve l'user soit visible. Donc ça commence par la page 1 où il a 3 choix. Fonction de son choix il va page 2, 3 ou 4. Sur chacune de ces pages il a un bouton qui le mene à P5.

Sur P5, j'ai voulu appliquer ta proposition qui permet de revenir vers P2, P3 ou P4 fonction du choix effectué mais il faut d'abord rendre ladite page visible. Je test ce qui me semble logique mais ça ne fonctionne pas. As tu une sollution?
 

Pièces jointes

  • Test prévious.xlsm
    45.7 KB · Affichages: 20

Claudy

XLDnaute Accro
Bonjour,
comme tes feuilles sont cachées , tu dois les rendre visibles...
Sub Bouton3_Cliquer()
Feuil = ActiveSheet.Name
' ici à modifier dans tes macros:
Sheets("P2").Visible = True
Sheets("P2").Select
Range("A1").Select
Range("A1") = Feuil
Sheets("Feuil1").Visible = False
End Sub

A+
Claudy
 

de Rauglaudre

XLDnaute Nouveau
J'ai en effet zappé le visible. Voici quand je corrige avec ce que je comprends du code. Si je résonne basiquement (vu que je suis gros débutant), j'essaye de rendre la feuille désignée en A1 visible avant de la sélectionner. Je n'y parviens pas. Voici l'exemple

Pour ce qui est dans le module 2 Vgendron, je ne vois pas comment l'adapter. C'est le code pour mon bouton de retour? (Bouton 2, pas prévious)
 

Pièces jointes

  • Test prévious.xlsm
    45.8 KB · Affichages: 13

vgendron

XLDnaute Barbatruc
je ne vois pas comment l'adapter.
adapter à quoi?
à priori, il n'y a rien à adapter
tu peux supprimer les macros du module 1

voir PJ
j'ai aussi ajouté un formulaire avec des Options Bouton.
suffit de cliquer sur celui de la feuille souhaitée..
selon ton besoin, on peut rendre indisponible certains boutons dans certaines conditions..
 

Pièces jointes

  • Test prévious Rev2.xlsm
    43.7 KB · Affichages: 19

Modeste geedee

XLDnaute Barbatruc
Bonsour®
B
Sur ma feuille 4, je souhaite pouvoir utiliser un bouton "précédent" qui enverrait vers la page précédente.
je souhaite que mon bouton précédent sache s'il faut me renvoyer sur la feuille E ou la feuille 3.

dans un module standard :
VB:
Option Explicit
Public LastActiveSheet As String, CurrentSheet As String
Sub PrecActiveSheet()
Application.MacroOptions Macro:="PrecActiveSheet", Description:="", ShortcutKey:="P"
ThisWorkbook.Sheets(LastActiveSheet).Select
End Sub
dans le module Thisworkbook :
VB:
Option Explicit
Private Sub Workbook_Open()
LastActiveSheet = Feuil1.Name
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
LastActiveSheet = CurrentSheet
CurrentSheet = ActiveSheet.Name
' dans la barre de status en bas à gauche 
' rappel précédente feuille active feuille active actuelle
Application.StatusBar = "Précédente : " & LastActiveSheet & " | Actuelle :  " & CurrentSheet
End Sub
dans le code de votre bouton précédent :
Call PrecActiveSheet
le retour à la feuille active précédente est possible à tout moment
par le raccourci : Ctrl + Maj +P
 

de Rauglaudre

XLDnaute Nouveau
Merci pour vos retours. J'ai quelque chose qui tient la route.

Il me reste une action à demander. En effet, dans mon cas, sur le pages l'utilisateur fera des choix avec des coches (et non des boutons). Aussi, la page précédente étant potentiellement P2 ou P3 ou P4 avec un nombre de cases à cocher différent, comment puis-je adapter le code suivant :

Sheets(Previous).Shapes("Case à Cocher 1").ControlFormat.Value = False

pour ne pas avoir à définir précisément les cases car c'est impossible vu que ça dépend de la page précéde. l'idéal serait de pouvoir utiliser

("Case à Cocher toutes")

mais je ne sais pas comment se représente "toutes".

Ca devient balour de faire un nouvel exemple mais si nécessaire, je ferais.
 

Discussions similaires

Réponses
22
Affichages
689
Réponses
5
Affichages
156

Statistiques des forums

Discussions
311 720
Messages
2 081 912
Membres
101 837
dernier inscrit
Ugo