Liste déroulante

J

joice

Guest
Bonjour à tous,

Je cherche à insérer dans une feuille (sommaire) une liste déroulante dont chaque choix conduit vers un onglet.

J'ai cherché sur le forum, il y a des explications mais je n'arrive pas à reproduire ce qui est expliqué . J'ai toujours le même "bug" comme définie ci-dessous.
Si quelqu'un peut m'aider ? D'avance merci


Dans ma liste déroulante j'ai :
Pierre
Paul
Jacques

Quand je déroule j'ai bien mes trois noms

Sur le premier nom , Pierre, je mets un lien hypertexte qui mène sur l'onglet Pierre

Mais quand je veux faire la même chose pour les autres prénoms, il ne tient compte que du lien hypertexte Pierre et l'attribue a tous les choix de la liste.
Ce qui me donne, en cliquant sur Paul l'accès à l'onglet Pierre et en cliquant sur Jacques l'accès à l'onglet Pierre aussi :-( et ce n'est pas ce que je veux évidemment.
Je voudrais que Paul mène à l'onglet Paul etc...

Précisions, je suis sous excel XP mais j'aimerais que cela fonctionne aussi sous excel 97 (pour le boulot).
 
J

joice

Guest
Merci Eric, c'est tout à fait ce qu'il me faut.

Le problème c'est que , comme dans les exemples qui ont déjà été posté sur ce forum et que j'ai téléchargé pour essayer de les comprendre, là encore dans ton exemple je ne sais pas comment faire pour modifier cette liste et faire en sorte qu'elle fonctionne avec d'autres noms d'onglets.

Quand je change les noms sur la feuille ainsi que les onglets et bien forcément ça ne marche plus. J'ai déjà passé des heures à essayer de comprendre et je sens bien que je suis un peu limitée. ;-) Je ne connais pas du tout le VBA c'est peut être de là que vient le problème ?

Merci
 
E

EricS

Guest
re

Explications
1/
la plage d'entrée est définie sur la feuil1 en F2 à F4
tu peux modifier les noms pour les mettre en accord avec les noms d'onglets de ton fichier (fais l'essai sur le mien d'abord)

Si tu as + d'onglets, écrit les noms à la suite dans la colonne F puis tu vas sur la liste, clique droit, format de contrôle, contrôle,

plage d'entrée, tu tapes ou tu éclaires la portion de la colonne F qui t'intéresse

en A7 j'ai mis la cible, elle indique la postion de ta sélection dans la liste

2/
Pour le code vba, clic droit sur la liste, affecter une macro modifier, tu verras le code généré mais celui-ci fonctionne quels que soient les noms que tu mettras (dans les limites du 1/)

3/ concernant le vba, la meilleure façon de s'y mettre est d'utiliser l'enregistreur de macro

outils, macros, nouvelle macro
tu exécutes les opérations que tu veux automatiser (exemple de base clique sur la cellule b6)
tu arrêtes l'enregistreur
tu fais outils, macros, macros
tu sélectionne ta macro et tu fais modifier
tu accède au code généré (dans l'exemple : range("B6").select

.......

et quand tu sais pas tu demandes ou tu regardes les initiations sur le forum ou excelabo.net par exemple

Bonne soirée A+, n'hésite pas

Eric
 
J

joice

Guest
J'ai crié victoire un peu vite. Il semblerait que je n'ai pas tout compris :-(

J'ai repris la feuille d'exemple que m'a faite Eric pour y mettre ma propre liste.

Mais j'ai besoin de changer de place la liste déroulante pour la mettre plus à droite dans ma feuille. Et alors là, quand je la bouge ça ne marche plus.

J'ai alors essayé de la garder et de mettre mon travail autour de la liste d'Eric mais là non plus ça ne marche plus.

Je réussie parfaitement à faire ma liste déroulante selon la méthode décrite, mais je n'arrive toujours pas à faire en sorte que chaque élément de cette liste conduise vers l'onglet voulu.



Il ne doit pas me manquer grand chose pour que ça marche, mais quoi ?

D'avance merci
 
J

joice

Guest
Voici le fichier puisque l'email ne semble pas vouloir passer ;-)
Je l'ai légèrement modifier pour conserver la confidentialité mais la structure principale y est.
Les feuilles sont destinées à accueillir des données bien sur.
Et il y a également d'autres onglets prévus. Mais pas dans la liste déroulante.
Pour ceux là, je ferais des liens hypertexte à partir de ma feuille accueil (oufff ça c'est déjà plus simple ;-)

Merci d'avance de te pencher sur mon problème.
joice
 

Pièces jointes

  • joice.zip
    10.7 KB · Affichages: 32
E

EricS

Guest
RE

je ne te renvoie pas le fichier, tu peux le corriger toi-même

dans la macro tu as écrit

Sub Zonecombinée2_QuandChangement()
nom = Range("$b$65").Offset(Range("$a$7").Value, 0)
Sheets(nom).Select
'End Sub

erreur 1
enlever ' avant end sub, qui sinon est considéré comme du commentaire (sans doute lié à erreur de manip...)

erreur 2
tu as déplacé la cellule liée de $a$7 vers $a$65, il faut donc remplacer 7 par 65 dans la ligne

erreur 3
en a65 tu as la position du nom dans la liste, cette position commence par 1 et donc soit on pointe en $b$64 soit on retranche 1 à l'offset

soit la macro finale :

Sub Zonecombinée2_QuandChangement()
nom = Range("$b$65").Offset(Range("$a$65").Value - 1, 0)
Sheets(nom).Select
End Sub

explications pour récupérer le nom de la feuille,

on considère l'origine de la liste : range("b65")

et on applique un offset en ligne correspondant à la position dans la liste que l'on trouve en a65 moins 1, et un offset de 0 en colonne

ce qui donne si on choisit "matériel"
contenu de a65 = 1
nom est le contenu de b, ligne 65 +offset selon a65 - 1 donc b65


Autre solution en pointant sur b64 au lieu de b65

Sub Zonecombinée2_QuandChangement()
nom = Range("$b$64").Offset(Range("$a$65").Value , 0)
Sheets(nom).Select
End Sub

A+
Eric
 
J

joice

Guest
Merci pour tes explications instructives.
Je préfères apprendre grace à tes explications que de me voir macher le travail ;-)
Je vais donc regarder tout ça de très près ce soir pour comprendre et corriger moi-même ce qui ne va pas.
Merci encore.
joice ;-)
 
C

CHti160

Guest
Salut "joice" et "EricS " bonsoir à toutes et à tous
c'est pas toujours" joyce" lol
bon bref , un petit fichier joint qui par le biais d'un ComboBox1 permet aussi ce que tu désires(sélection,ajout de feuilles)
donc à Voir et à améliorer
A+++
Jean Marie
 

Pièces jointes

  • joiceV1.zip
    18.2 KB · Affichages: 44

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T