ListBox qui ne veux pas se remplir
Bonjour,
Mon ami Google et les nombreux forums d'aide ayant prouver leurs limites face à mon problème, je me retourne vers votre grande sagesse avant de balancer mon PC portable par la fenêtre (ce qui serait fortement dommage, étant donné qu'il ne m'appartient même pas
Voici mon problème
Afin de faciliter l'usage de mon fichier excel aux trop nombreux onglets, j'ai décidé de masquer l'ensemble des onglets en dehors de l'onglet sommaire. Le principe est simple: à chaque activation de l'onglet sommaire tous les autres onglets se masquent. A l'ouverture du fichier, j’atterris automatiquement sur l'onglet sommaire (fermant automatiquement tout autre onglet laissé ouvert au moment du dernier enregistrement). Quant l'on clique sur un lien de l'onglet sommaire, on est automatiquement redirigé vers l'onglet correspondant devenu visible. La barre d'onglet présente alors deux onglets: l'onglet sur lequel on travail et l'onglet sommaire.
Ce fonctionnement ne permet donc de travailler que sur un onglet à la fois: un utilisateur lambda peut ainsi rentrée des données (des onglets biens précis) et affiché les analyses près-conçus correspondant (d'autres onglets).
Là où cela se corse, c'est si l'on veut créer de nouvelle analyses. Il est nécessaire pour ce faire d'avoir plusieurs onglets ouverts. Il existe bien sur l'outil prévu par Microsoft pour afficher les onglets masqués, mais il faut le connaitre et savoir le trouver. Partant du principe qu'un utilisateur lambda ne le connais pas, j'ai donc entrepris la tâche de recréer cet outil avec un bouton bien en évidence sur ma page d'accueil. Le principe: je clique sur le bouton, un userform s'ouvre avec la liste de tout mes onglets, je sélectionne le ou les onglets qui m'intéresse, je clique sur ok et, ho miracle, mes onglets réapparaisse.
C'est là où j'ai besoin de votre science. Pour réaliser la tâche que je me suis attribué, j'ai bricoler des codes trouvé par ci par là sur le net pour créer une ListBox remplie avec l'ensemble de mes onglets et qui fonctionnait 8) . Malheureusement, le verbe est conjugué au passé
Voici mon code:
Private Sub UserForm1_Initialize()
Dim i As Integer
Dim onglet As Integer
onglet = ActiveWorkbook.Worksheets.Count
With ListBox1
For i = 2 To onglet
.AddItem Worksheets(i).Name
Next i
End With
ListBox1.MultiSelect = 2
End SubMerci par avance pour votre aide
Bonjour
Essaie plutôt ceci :
Private Sub UserForm_Initialize()
Dim i As Integer
With Listbox1
For i = 2 To ThisWorkbook.Worksheets.Count
.AddItem Worksheets(i).Name
Next i
.MultiSelect = 2
End with
End SubSi ok, clique sur le V vert à coté du bouton EDITER lors de ta réponse afin de clôturer le fil
Crdlt
Bonjour Sycor,
1)
Il faudrait joindre si possible ton fichier avec
- tous les onglets (vidés de leur contenu si besoin)
- le code du formulaire
2)
peut tu faire tourner cette macro:
Sub debugage()
For Each feuille In ThisWorkbook.Sheets
Debug.Print feuille.Name
Debug.Print feuille.Index
Next feuille
End Subet faire un copier/coller ici de ce qui apparaît dans la console de débogage (pour la faire apparaître: controle + G)
Avant d'aller beaucoup plus loin, tu parles de
Est-il envisageable de faire "simplement" un formulaire qui te permette de créer une nouvelle analyse? Je n'ai aucune idée du type d'analyse à créer, mais un formulaire bien codé et il n'y a plus besoin de faire apparaître AUCUN onglet sauf le sommaire.Sycor a écrit :Là où cela se corse, c'est si l'on veut créer de nouvelle analyses.
Toutes les actions d'ajout, de tri, de recherche seraient alors via ton formulaire, qui serait une méthode fiable et robuste de saisir et rechercher tes données.
bonjour,
n'aurais-tu pas plusieurs classeurs ouverts ? et le classeur actif n'est pas celui pour lequel tu veux sélectionner les onglets.
Bonjour,
Merci Dan, ta proposition fonctionne très bien même si je ne comprends pas l'origine du problème ...
Pour UserForm_Initialize1() qui devient UserForm_Initialize(), j'avais initialement rajouté le 1 car je ne pouvais plus lancer l'userform (erreur d'éxécution 404: objet requis).
Avec un peu de réflexion, j'arrive simplement à la conclusion que tout mes problèmes viendraient donc initialement du .MultiSelect = 2 qui était extérieur à la fonction with.
Pourriez vous éclairer ma lanterne?
Merci pour toutes vos réponse et vos conseil.
Quand je parle d'analyse, je parle également de tableaux croisé dynamique, donc je ne sais pas si ta solution est également possible d3d9x
Ahh alors non le formulaire ne servira pas à grand chose!
Je fais plus référence aux utilisateurs qui souhaitent ajouter des données dans une base de données, et les récupérer/trier/afficher. Cet ajout est source d'erreur, d'où l'utilisation de formulaires pour éviter toute erreur, et toute manipulation "manuelle" de la base de données.