De l'aide avec un zone liste deroulant

D

Ducati

Guest
Bonjour,

voila pour un CE pour gerer les activité et le personnel j'ai creer un fichier excel .

Sur la 1e page c'est l'index de tous les noms et ensuite il y a une page par salarié (environ 200 donc 200 pages)

Donc je voudrais une zone deroulante pour aller directement au salarié selectionnée

Ma question etait comment faire pour mettre une zone deroulante dans la feuille index ?Une zone deroulante par lettre m'irait bien parce que je suis pas le seul a l'utiliser donc je veux simplifier au maximum pour les autres qui l'utiliseront






J'y connait rien en VBA
 
@

@+Thierry

Guest
=> DEMO ListBox de Sheets-Navigation avec Génération Auto de 100 Feuilles

Bonjour Ducati, le Forum

Tiens, j'ai eu une Ducati 900 SS, modèle Darma, il y a bien longtemps

Bon il y a plusieurs solutions, moi je suis VBA, mais on peut voir ceci avec une liste de validation je pense, mais la Séléction d'un feuille se fera toujour par du VBA, les formule ne pouvant pas faire d'action de sélection de feuille...

Un code tout simple serait de faire ceci :

Application.CommandBars("Workbook tabs").ShowPopup

En l'affectant à un Bouton on aura un Pop-Up avec la liste des feuilles contenues dans la Classeur.

Sinon avec une ListBox, pour laquelle on fait tourner ce Code :
Sub TheListBoxBuilder()
Dim WS As Worksheet

   With Sheets("Interface").ListBox1
     .Clear
       For Each WS In Worksheets
         .AddItem WS.Name
        Next
   End With
End Sub

Et ensuite dans le Private Module de La Feuille "Interface" on met simplement ce code :

Private Sub ListBox1_Click()
Worksheets(CStr(Me.ListBox1)).Activate
End Sub


Cà a l'air très compliqué pour un débutant, mais çà ne l'est pas vraiment...

Si joint une démo qui va générer automatiquement 100 feuilles avec une ListBox de navigation, pour te permettre de mieux comprendre.

Bon Courage et Bon Samedi
@+Thierry
 

Pièces jointes

  • XLD_ListBox_Sheets-Navigator.zip
    48.9 KB · Affichages: 67
  • XLD_ListBox_Sheets-Navigator.zip
    48.9 KB · Affichages: 70
  • XLD_ListBox_Sheets-Navigator.zip
    48.9 KB · Affichages: 68
S

salim

Guest
Bonjour Ducati, @+Thierry et le Forum

@+Thierry est-ce que je peux abuser de ta science et de ta patience pour savoir quelle est l'utilité de CStr ça sert sert à convertir la variable en type String mais j'ai pas réussi à trouver dans quels cas de figure l'utiliser. Alors si tu repasse par ce Fil et si ça t'ennui pas trop je suis à l'écoute .

Merci

@+ Salim
 
@

@+Thierry

Guest
Bonjour Salim, re Ducati, le Forum

Et bien c'est simple, dans ma Démo, enlève le Cstr et tu verras ... Ici c'est primordial, la TextBox.value doit être convertie en String pour que ceci fonctionne :

Worksheets(Me.ListBox1).Activate il faut :

Soit passer pas une Variable :
Dim TheSheet as String
TheSheet = Me.ListBox1

Worksheets(TheSheet).Activate

Soit faire comme j'ai fait dans la démo :
Worksheets(CStr(Me.ListBox1)).Activate


Bon Samedi
@+Thierry
 
S

salim

Guest
Re bonjour @+Thierry, Ducati, le Forum

J'ai réaliser la petite expérience, impossible de sélectionner la feuille le MsgBox "Cette feuille n'existe plus, apparaît" j'en déduit donc que cela sert à faire prendre "conscience" à la ListBox que l'index de l'élément sélectionné correspond à la propriété "name" de la feuille et qu'il lui faut sélectionner la feuille portant la même chaine de caractère que l'élement choisi qui est lui aussi du coût chaîne de caractère par "CStr" et non "index". je ne sais pas si mon discour est intelligible mais bon je pense avoir compris le principe ma mémoire et ma compréhension étant très visuelle l'écrit n'est pas mon point fort.

PS: toutes mes excuse à Ducati pour avoir squater son fil mais bon ces indications lui serviront aussi j'en suis sur.

Merci @+Thierry

@+ Salim
 
M

Minick

Guest
Salut Ducati, @+Thierry, Salim,

Une autre solution:
A coté des onglets tu as les fleches de navigation entre les differents onglets.
Faits un clique droit dessus et tu verras une liste des onglets apparaitre, en cliquant sur Plus de feuilles tu auras une liste complete des feuilles de ton classeur
Pour accelerer la recherche parmi tes 200 feuilles, en tapant la 1ere lettre du nom recherché il va se positionner sur la 1ere feuille commencant par cette lettre, si tu retape la lettre la 2de feuille et ainsi de suite.

@+ Minick
 
@

@Christophe@

Guest
Bonsoir à tous,

Bonsoir mon ami @+Thierry,

J'ai fait qq test, curiosité comme Salim.

Le code d'origine qui selctionne la feuille:
Worksheets(CStr(Me.ListBox1)).Activate

En supprimant le CStr, cela ne marche plus

Mais si j'ajoute . Value, la cela marche:
Worksheets(Me.ListBox1.Value).Activate


En testant les divers possibilité dans un Msgbox, j'obtient identiquement le même resultat pour les trois possibilité suivante (nombre de caractère Len() identique aussi)

MsgBox CStr(Me.ListBox1)
MsgBox Len(CStr(Me.ListBox1))

MsgBox Me.ListBox1.Value
MsgBox Len(Me.ListBox1.Value)

MsgBox Me.ListBox1
MsgBox Len(Me.ListBox1)

VBA nous étonnera toujours, lol

Bonne soirée à vous tous

@Christophe@
 
@

@+Thierry

Guest
Bonjour @Xtof@, Salim, Minick, Ducati (Forza Ducati !), le Forum

Pour Ducati, je suis vraiment désolé que tu ne comprennes rien, par conséquent j'ai pensé (grace à toi) de faire un utilitaire d'installation d'un programme de navigation au sein de n'importe quel calsseur, tout ceci sans aucune manipulation de VBA, car c'est 100% automatique. Je pense que là tu devrais t'en sortir...

Pour Minick, oui cette solution est on ne peut plus simple et si tu avais regardé ma démo plus haut, je l'utilise dedans, j'en parle aussi dans mon post, c'est le moyen le plus simple :

Sub TheWorkbookTabs ()
Application.CommandBars("Workbook tabs").ShowPopup
End Sub

Par contre oui comme tu le dis très justement on peut y accéder sans mettre de bouton par un click droit sur les flèches de navigation des onglets (faut-il encore que les utilisateurs le sachent !! lol)

Pour Salim et mon copain @Xtof@, oui c'est un peu zarbi, cette histoire du retour de ce que contient la valeur d'une ListBox, mais donc dans ce cas de figure précis il faut une conversion en string. Le fait de préciser la Propriété ".Value", est ok aussi comme nouys le fait remarqué @Xtof@ et je pense qu'on pourraiyt aussi utiliser la Propriété ".Text" doit passer aussi... en fait je pense que chacun finit par prendre ses habitudes de programmation. Mais en tout cas merci à toi @Xtof@ pour tes test complémentaires...

Bon maintenant que tout est dit...

Lien supprimé

Pour une réponse à cette demande récurrente de feuille index de navigation dans les classeurs volumineux...

Bon Dimanche
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 396
Membres
103 534
dernier inscrit
Kalamymustapha