Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
XL 2016VBA : Démasquer onglet suite au nom de l'onglet taper dans une cellule.
Un piège.
Comme vous avez appelez vos feuilles 1,2,3,4, le VBA fait la différence entre le nombre 1 et la chaine "1".
Il manquait un Cstr(Nom) pour transformer un nombre en chaine.
Re Bonjour Yücel,
Ce que vous demandez est impossible puisque si l'on clique sur un N° comme 1,2,3,4 il y a déjà une gestion de macro de liens hypertextes qui vous renvoie sur la feuille.
Au dernier post, je vous avais dit de ne pas mélanger les liens hypertextes avec des macros. Tout devient très compliqué à gérer.
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B4:B26")) Is Nothing Then
Application.ScreenUpdating = False
For Each Sh In ActiveWorkbook.Sheets
If Sh.Name <> "Biens" Then
Sheets(Sh.Name).Visible = False
End If
Next Sh
For N = 4 To 28
If Cells(N, 2) <> "" And Cells(N, 2) <> 0 Then
Sheets(CStr(Cells(N, 2))).Visible = True
End If
Next N
End If
Fin:
End Sub
Dear Yücel,
OUPS !!!!
Je vous ai posté un message avec une PJ ( V5 ) ..... que je n'ai pas envoyé. Mille excuses :
Bonjour Yücel,
C'est devenu inextricable, il se mélange les pinceaux entre les liens hypertextes et les macros associées.
J'ai donc tout simplifié. J'ai supprimé tous les liens hypertextes.
Les macros utilisées sont Worksheet_SelectionChange, elles s'activent sur clic d'une cellule.
Le gros avantages est qu'on sait toujours quelle cellule de quelle feuille à été cliquée.
Je me suis débrouillé pour que toutes les macros des feuil soient identiques sans modifications :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("$B$2:$B$10")) Is Nothing Then
If Target = "" Then Exit Sub
Nom = Target
Feuille = ActiveSheet.Name
[A1].Select
Sheets(Nom).Visible = True
Sheets(Nom).Activate
ActiveSheet.Range("$B$3:$E$1000").AutoFilter Field:=1, Criteria1:=Feuille ' Mettre en critère le nom de la feuille.
End If
End Sub
Les macros dans les feuilles Biens et Assurance sont aussi identiques :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("$B$4:$B$100")) Is Nothing Then
If Target = "" Then Exit Sub
Nom = Target
[A1].Select
Sheets(Nom).Visible = True
Sheets(Nom).Activate
Sheets("Biens").Visible = False
Sheets("Assurance").Visible = False
End If
End Sub
De cette façon c'est totalement déterministe.
On peut ajouter autant de feuilles que désirées et autant de feuilles synthèse aussi.
Testez pour voir et remontez moi les problèmes.
Je pense sincèrement qu'il faut abandonner le mélange liens hypertextes et macros associées à celles ci.
Dans l'attente de vous lire.
Un piège.
Comme vous avez appelez vos feuilles 1,2,3,4, le VBA fait la différence entre le nombre 1 et la chaine "1".
Il manquait un Cstr(Nom) pour transformer un nombre en chaine.
Juste encore un petit point, je sais pas si c'est possible mais je tente, pouvez-vous faire en sorte que l'onglet concerné se masque uniquement et non l'onglet "biens" & "assurance" en même temps ?
Je m'explique, lorsque l'onglet "assurance" est déjà démasqué et que je suis dans l'onglet "biens" et que je clique sur le "1", il me masque les deux onglets et non uniquement l'onglet "biens" et vice-versa...
Non ce n'est pas vraiment ce que je voulais dans la (V7).
Mais sur la (V6) j'ai retiré une petite ligne et ça fonction impec !!!!!
Je vous remercie du fond du cœur d'avoir pris le temps de vous être penché à mes problèmes, c'est super cool les solutions que vous apportez. J'avais tellement besoin de toutes ces demande.
Pour info, moi aussi je viens également de solutionner un problème d'un membre et je compte bien en résoudre d'autre.
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.