Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Code VBA pour retour à la dernière feuille active

  • Initiateur de la discussion Initiateur de la discussion de Rauglaudre
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

de Rauglaudre

Guest
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)
 
Mince, j'avoue que j'ai moins bien compris la philosophie du code. Notamment les couleurs.

Cette partie là ne fait pas partie du code si ?

Public LastActiveSheet As String, CurrentSheet As String

Si oui, tu peux m'expliquer un peu le principe ? Que j'arrive à l'intégrer à mon outil.
 
Bonjour de Rauglaudre, Claudy, vgendron, Modeste geedee,

Je prends le train en marche, voyez ce code dans ThisWorkbook :
Code:
Dim LastSheet As String 'mémorise la variable

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
LastSheet = Sh.Name
If Sh.Name <> "P1" Then Sh.Visible = xlSheetHidden
End Sub

Sub VersP()
If IsError(Application.Caller) Then Exit Sub 'sécurité
Dim o As Object
Set o = ActiveSheet.DrawingObjects(Application.Caller)
If TypeName(o) = "CheckBox" Then o.Value = False
With Sheets(Trim(Replace(o.Text, "Goto", "")))
    .Visible = xlSheetVisible
    .Activate
End With
End Sub

Sub Prec()
If LastSheet = "" Then Exit Sub
With Sheets(LastSheet)
    .Visible = xlSheetVisible
    .Activate
End With
End Sub
Les macros VersP ou Prec sont affectées aux boutons ou aux cases à cocher.

Fichier joint.

A+
 

Pièces jointes

Salut,

Merci pour ton retour. Je suis en train d'essayer de comprendre l'idée.

En revanche, quand je test, seule la case cochée ayant mené à la page de retour est effacée. Moi je souhaite tout effacer pour permettre à l'user de repatrir de 0 sur cette page (vu qu'il n'a qu'un choix vu que dès qu'il clic il passe à la page suivante).

Mon blocage était de ne pas pouvoir nommer les coches vu que dépendant de la coche précédente.
 
Et point subsidiaire : quand je rend visible P2, la case est d'office décochée.

En fait, mon souhait est un questionnaire de satisfaction avec des questions dépendantes des réponses précédentes. Selon les choix de l'utilisateur, certaines pages s'activent (et désactivent les précédentes). En revanche, si l'user souhaite revenir en arrière, j'ai envie qu'il puisse suivre le chemin exactement inverse (à lui de voir jusqu'où il veut revenir) et repartir sur des pages de choix vierges. En revanche, s'il ne revient pas, la coche doit rester comme ça, une fois arrivé chez moi, je visualise toute les pages et vois les choix effectués.

Garder les coches est important car dans certain cas, 2 chemins différents peuvent se retrouver sur une même question à mi-chemin.

Avec ma dernière trame, je ne suis pas loin mais pas tout à fait.

Question complémentaire (s'il fallait démontrer mon niveau) : quelle est la différence entre un modul et thisWorkbook?
 
Bonjour de Rauglaudre,
Voyez ce fichier (2), il suffit de faire une boucle :
Code:
Sub VersP()
If IsError(Application.Caller) Then Exit Sub 'sécurité
Dim o As Object
For Each o In ActiveSheet.DrawingObjects
    If TypeName(o) = "CheckBox" Then o.Value = False
Next
With Sheets(Trim(Replace(ActiveSheet.DrawingObjects(Application.Caller).Text, "Goto", "")))
    .Visible = xlSheetVisible
    .Activate
End With
End Sub
Si l'utilisateur ne peut faire qu'un choix pourquoi ne pas utiliser des Cases d'option ?

A+
 

Pièces jointes

La première réponse qui me vienne, c'est que je connaissais pas 😉 Sinon, j'ai pas bien perçu la différence entre coche et puce. La coche était suffisante car après coche BIM! pas le choix, il passe à la age suivante. Le problème étant de revenir à la page précédente car décocher donne exactement le même BIM! passage à lae suivante...
 
Je comprends pas du tout le pricipe de ce code. Comment ça défini la page vu qu'aucune n'est cité? En fait, le nom de la page cible doit avoir le nom du choix proposé à l'utilisateur? (ex : si à la question "comment va?" il a le choix entre "plutôt bien" et "plutôt mal", les 3 pages cible possibles doivent s'appeler "plutôt bien" et "plutôt mal" ?
 
En fait, vu que j'ai avancé dans cette direction, l'idéal serait de rester sur le concepte de la page qui précédente qui laisse son nom en "A1" et qu'en cas de précédent, on va pointer sur la page par conséquent renseignée en "A1". et une fois sur cette page, décocher avec du format value = false mais sans nommer les checkbox spécifiquement ?
 
Sub P4_Bouton1_Cliquer()
NomToHide = ActiveSheet.Name
Previous = ActiveSheet.Range("A1")
Sheets(Previous).Visible = True
Sheets(Previous).Select
'une fois ici, à la place d'identifier "case à Cocher 1" j'aimerais pouvoir avoir
' "case à cocher toutes" ou un truc dans ce gout là
ActiveSheet.CheckBoxes.Value = False
End Sub


voir #15
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
32
Affichages
1 K
Réponses
3
Affichages
465
Réponses
6
Affichages
542
Réponses
3
Affichages
400
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…