Menu déroulant qui affiche/masque un onglet
Bonjour à tous :)
J’ai besoin de votre aide pour la création d’un fichier Excel :)
Je souhaiterai avoir sur mon tableur le premier onglet avec un menu déroulant (affichant 1,2,3,4) et que lorsque je sélectionne par exemple « 2 », l’onglet nommé « 2 » s’affiche et que l’autre qui était ouvert ,par exemple le « 4 », se masque automatiquement.
Je souhaiterai également avoir un bouton qui ajoute un nouvel onglet a chaque fois à la suite des chiffres du menu déroulant et par la même occasion que le nom de cet onglet soit incorporé dans le menu déroulant pour pouvoir être sélectionné ensuite.
J’ai eu plusieurs pistes mais aucunes n’étaient concluantes…
En espérant que vous compreniez mon exemple
Je vous remercie
Bonjour,
En lisant ta demande, je me suis dis du VBA. Mais sachant pas bien codé VBA je ne suis pas d'une grande aide. Mais avec une feuille maitresse avec la liste en A1. En A2:
=SI(A1=1;1;SI(A1=2;2;SI(A1=3;3;SI(A1=4;4))))VBA;
Sub affiche()
Dim feuille As Worksheet
Set feuille = Sheets("Feuille")
Dim c As Byte
c = Range("A2").Value
If c = 1 Then
Woksheets("1").Visible = True
Woksheets("2").Visible = False
Woksheets("3").Visible = False
Woksheets("4").Visible = False
Else
If c = 2 Then
Woksheets("1").Visible = False
Woksheets("2").Visible = True
Woksheets("3").Visible = False
Woksheets("4").Visible = False
Else
If c = 3 Then
Woksheets("1").Visible = False
Woksheets("2").Visible = False
Woksheets("3").Visible = True
Woksheets("4").Visible = False
Else
If c = 4 Then
Woksheets("1").Visible = False
Woksheets("2").Visible = False
Woksheets("3").Visible = False
Woksheets("4").Visible = True
End If
End If
End If
End If
End SubBonne Journée
Je te remercie ImoKa c’est déjà un bon début :)
Ça fonctionne nickel et je vais pouvoir déjà avancer un peu avec ça :) par contre si j’ajoute un bouton qui me crée automatiquement un nouvel onglet a la suite des autres (donc là ce sera 5) incrémenter la liste automatiquement se sera simple mais pour le code je suis obligé de le changer à chaque fois car parfois j’aurai un fichier qui aura besoin d’aller que jusqu’à 4 mais parfois jusqu’à 48.
C’est quand même une grande avancée pour moi et je vais créer un fichier allant jusqu’à 48 en attendant de trouver une solution plus simple 😁
Bonjour,
Un nouveau code pour nombre de feuille illimité arrive.
Voila le code, décidément aujourd'hui j'apprends le VBA et déjà un code.
Sub affiche()
Dim feuille As Worksheet
Set feuille = Sheets("Feuille")
Dim c As Byte
c = Range("A2").Value
Dim t As String
t = "Feuille"
Dim nom As String
nom = t+c
For Each feuille In Sheets
If feuille.Name <> nom Then feuille.Visible = xlSheetVeryHidden
Next Feuille
End Sub
Sub newFeuille()
Dim feuille As Worksheet
Set feuille = Sheets("Feuille")
Dim c As Byte
c = Range("A3").Value
Dim nom As String
nom = "Feuille"+c+1
Sheets.Add
Activesheet.name=nom
End SubAvec en A3 dans la feuille maitresse
=FEUILLES()Dis-moi si tu veux une méthode avec un nom personnalisé pour chaque feuille.
PS: newFeuille est la fonction pour le bouton.
Bonsoir…
Une nouvel exemple pour créer des onglets, les nommer et mettre à jour leur liste qui permet de s’envoler de l’un à l’autre.
Merci de vous penchez sur mon problème cela fait plaisir de se sentir aidé :)
Quand j’ai vu ton code ImoKa je me suis dit c’est bon ça va marcher (j’arrive toujours à comprendre les VBA mais jamais à les écrire) mais malheureusement quand je la lance cela m’écrit « incompatibilité de type » et je n’arrive pas à voir d’où cela provient :/
Ordonc bonjour :) j’attend de rentrer chez moi pour voir ton fichier car au boulot lorsque l’on télécharge un Excel avec macro, par sécurité les macros sont effacés…
Bonjour,
A m...., j’ai pas excel en gros je peux pas testé.
Mais je pense avoir trouvé l’erreur.
Sub affiche()
Dim feuille As Worksheet
Set feuille = Sheets("Feuille")
Dim c As Byte
c = Range("A2").Value
Dim t As String
t = "Feuille"
Dim nom As String
nom = t+c
For Each feuille In Sheets
If feuille.Name <> nom Then feuille.Visible = xlSheetVeryHidden
Next Feuille
End SubJ’ai enlever newFeuille parce que sa bugé sur le type. J’avais tenté de mettre un nombre avec du texte comme en javascript.
J’ai une erreur de compilation : Next sans For
Je me suis également posé la question ne faut-il pas un end if? Quand j’ajoute end if j’ai « incompatibilité de type » en erreur :/
J’ai rebossé dessus
Sub affiche()
Dim feuille As Worksheet
Set feuille = Sheets("Feuille")
Dim c As Byte
c = Range("A2").Value
Dim d As Byte
d = Range("A3").Value
Dim t()
t(0) = "Feuille"
t(1) = c
Dim nom As String
nom = Join(t,"")
Dim i As Integer
For i = 0 To d
If woksheets(i) <> feuille Then
Woksheets(i).Visible = True
Else
If woksheets(i) = nom Then
Woksheets(i).Visible = True
Else
Woksheets(i).Visible = False
End If
End If
Next
End SubAvec en A3
=FEUILLES()Merci Imoka d'avoir réfléchi sur mon projet mais malheureusement cela ne fonctionne pas.
Par contre Ordonc ton fichier est nickel c'est ce que je voulais :D
J'en demande peut être un peu trop mais est-il possible de faire exactement pareil mais avec 6 onglets à la fois? Genre quand je clique sur 1 j'ai les onglets 1A, 1B, 1C, 1D, 1E et 1F qui apparaissent, pareil avec le 2 les onglets 2A, 2B, 2C, 2D, 2E et 2F apparaissent et ainsi de suite... Et si possible quand je double clique pour ajouter non plus 1 mais 6 onglets du coup, que les onglets créés reprennent les valeurs des onglets précédents, du genre 3A reprenne les données de 2A, 3B celle de 2B, 3C celle de 2C et ainsi de suite
Après si c'est pas possible y a pas de soucis c'est que du bonus que je demande, un grand merci déjà pour ce que tu m'a fourni (j'ai essayé de comprendre le code mais par contre là je suis à l'ouest, je comprend rien mdr)