Macro pour masque un onglet dans un autre fichier

Fermé
guerando Messages postés 336 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 6 mai 2023 - 29 oct. 2018 à 16:38
guerando Messages postés 336 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 6 mai 2023 - 3 nov. 2018 à 15:10
Bonjour,

serait il possible que depuis un fichier ayant le nom des onglets d'un autre fichier, l'on puisse avoir une macro qui masque l'onglet dont on a sélectionné le nom.

exemple :
fichier 1 :
en a1 : nom de l'onglet 1 du fichier 2 : en b1 : xx1
a2 : nom de l'onglet 2 du fichier 2 : b2 : xx2
a3 : nom de l'onglet 3 du fichier 2 : b3 : xx3


fichier 2 :
il y a trois onglets xx1 xx2 et xx3

j'aimerai me mettre en b1 par exemple et lancer la macro et l'onglet xx1 se masquerait

Comment faire ? avez vous des idées ?

bonne soirée,

A voir également:

1 réponse

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 30 oct. 2018 à 10:55
Bonjour,

Voici un exemple, à adapter le nom du classeur de destination. Se déclenche au double clic dans les cellules B1,B2 et B3

Faire Alt F11 sur la feuille concernée où se trouve les cellules B1, B2 et B3 et coller ce code:

Option Explicit
'se déclenche au double clic en B1, B2, B3
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim dest As Workbook
Set dest = Workbooks.Open(Filename:=ThisWorkbook.Path & "\essai.xlsx") 'a adapter le chemin et le nom du classeur de destination
If Not Application.Intersect(Target, Range("B1:B3")) Is Nothing Then
Select Case Target.Value
Case "xx1"
 dest.Sheets(Target.Value).Visible = False
 dest.Sheets("xx2").Visible = True
dest.Sheets("xx3").Visible = True
 Case "xx2"
  dest.Sheets(Target.Value).Visible = False
 dest.Sheets("xx1").Visible = True
dest.Sheets("xx3").Visible = True
 Case "xx3"
  dest.Sheets(Target.Value).Visible = False
 dest.Sheets("xx1").Visible = True
dest.Sheets("xx2").Visible = True
 End Select
 dest.Close 'ferme le classeur destination
 End If
End Sub


les 2 classeurs sont dans le même dossier

Voilà

0
guerando Messages postés 336 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 6 mai 2023 6
30 oct. 2018 à 12:36
merci beaucoup Le Pivert j'y regarde en début d'aprés midi :)
0
guerando Messages postés 336 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 6 mai 2023 6
30 oct. 2018 à 14:33
Rebonjour Le Pivert :)
Effectivement c'est super !
Cependant, je me suis mal exprimée, les onglets qui sont fermés doivent rester fermer.
Pour le code dois je : enlever les lignes concernant les autres onglets ?

Case "xx1"
dest.Sheets(Target.Value).Visible = False
Case "xx2"
dest.Sheets(Target.Value).Visible = False
...

sachant que mon tableau d'origine peu avoir 200 onglets je dois rentrer le code 200 fois (copier / coller et changer le nom) ?

De plus l'endroit où je dois cliquer c'est une fusion de cellule, est ce que ca pose problème ? voici des fichiers qui devrient etre plus clair. J'ai mis ton code dessus.

Merci beaucoup de ton aide

https://www.cjoint.com/c/HJEnHa4VE0l
https://www.cjoint.com/c/HJEnHAsnyRl
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 30 oct. 2018 à 15:48
Il ne faut pas de cellules fusionnées.

Pour le code il suffit de mettre simplement cela

Déprotéger la feuille avant (tu auras le code avec l'enregistreur de macro)

dest.Sheets(Target.Value).Visible = False


la protéger ensuite (tu auras le code avec l'enregistreur de macro)

Il faut qu'il reste une feuille visible dans le classeur!

Je ne peux pas faire fonctionner ton classeur tab-de-synthese car il est en liaision avec celui-ci:

C:\Users\Moi\OneDrive\Documents\Actions à comptabiliser pour stock.xlsm

Voilà
0
guerando Messages postés 336 Date d'inscription mercredi 31 mars 2010 Statut Membre Dernière intervention 6 mai 2023 6
31 oct. 2018 à 10:28
meci le Pivert :) je vais y travailler ! à bientot
bonne journée
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
31 oct. 2018 à 10:52
Une première approche en défusionnant les cellules:

Option Explicit
'se déclenche au double clic
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim dest As Workbook
If Not Application.Intersect(Target, Range("N:N")) Is Nothing Then
If Target.Value = "" Then Exit Sub
Set dest = Workbooks.Open(Filename:=ThisWorkbook.Path & "\Action.xlsx") 'a adapter le chemin et le nom du classeur de destination
 dest.Sheets(Target.Value).Unprotect 'déprotège la feuille
 dest.Sheets(Target.Value).Visible = False
 dest.Sheets(Target.Value).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 'protège la feuille
 dest.Close 'ferme le classeur destination
 End If
End Sub

tu écris

les onglets qui sont fermés doivent rester fermer.

mais je ne comprends pas cette manière de masquer seulement. Il va bien falloir les afficher à un moment donné!

voilà

@+ Le Pivert
0