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é ... Maintenant, mon userform apparaît bien, mais la liste est désespérément vide.

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 Sub

Merci 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 Sub

Si 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
Si la proposition de Dan ne convient pas,

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 Sub

et 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

Sycor a écrit :

Là où cela se corse, c'est si l'on veut créer de nouvelle analyses.

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.

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.

Rechercher des sujets similaires à "listbox qui veux pas remplir"