Liste déroluante avec liens hypertexte actifs

Bonjour,

Je sais que ce sujet a déjà été traité maintes fois, j'ai bien trouvé un code qui me semble correspondre à ma recherche, mais je n'arrive pas à l'adapter à mes besoins :

1- J'ai le tableau de ma base de données en feuille nommée "8-Liste Alpha", la cellule sur laquelle je désire positionner ma liste déroulante (avec les liens hypertexte actifs) est "R1", dans cette feuille.

2- La liste des liens hypertextes que j'ai définis et qui pointent sur des plages de cellules bien définies de ma base de données et auxquels j'ai donné différents noms : exemple : "ZR Dupond", "ZR Durand", "ZR Martin", etc.

Ils sont tous positionnés sur une feuille différente nommée "2-1Texte", et cette plage est nommée "Zone_Recherche"

3- Le code que j'ai trouvé est le suivant :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ref As String, feuille As String
    If Target.Address = "$D$5" Then
        If Left(Target.Value, 5) = "http:" Then
            ActiveWorkbook.FollowHyperlink Address:=Target.Value, _
            NewWindow:=True
            Exit Sub
        End If

        If InStr(Target.Value, "!") > 0 Then
            feuille = Left(Target.Value, InStr(Target.Value, "!") - 1)
            Sheets(feuille).Select
            ref = Right(Target.Value, Len(Target.Value) - InStr(Target.Value, "!"))
            Sheets(feuille).Range(ref).Select
        Else
            Range(Target.Value).Select
        End If
    End If

End Sub

J'ai bien sur modifié "TargetAdress=$D$5" par "TargetAdress=$R$1", si toutefois la liste apparaît bien les liens hypertexte ne sont pas actifs et quand je clique dessus j'ai un message erreur

"erreur d'exécution 1004 - La méthode Range de l'objet Worksheet a échoué"

Loin de maîtriser le VBA, j'en conclu qu'il doit y avoir des références erronées, ou tout simplement que ce code n'est pas adapté

Merci par avance de votre aide Cordialement à vous

Bonjour,

Voici un exemple d'application de la procédure en utilisant Application.Goto

A+

37orkidoklaste.xlsm (18.89 Ko)

Bonjour,

La recherche de code tout prêt ne donne quasiment jamais de bons résultats ! Et le temps consacré à une telle recherche ne fait faire aucun progrès. Il serait infiniment préférable de le consacrer à apprendre à traduire l'action que l'on veut réaliser en termes de programmation, puis à en écrire le code...

La macro citée est une évènementielle réagissant au changement de valeur dans une cellule. Elle teste la nouvelle valeur de façon à déterminer s'il s'agit d'une adresse web, pouvant constituer une adresse de lien hypertexte, et dans ce cas résoud le lien.

Sinon, la macro considère qu'il s'agit d'une adresse de plage dans le classeur, si cette adresse comporte un nom de feuille, elle dissocie ce nom de l'adresse de la plage (sinon c'est que la plage est sur la feuille active), active la feuille et sélectionne la plage demandée. Il est bien évident à la lecture que cela ne correspond pas à la situation te concernant que tu décris !

Une liste de déroulante ne contiendra pas de liens hypertexte actifs. On ne sait pas si la liste déroulante contient les noms que tu dis avoir donné aux liens ou les adresses... Je suppose qu'il s'agit des noms... il convient donc de traduire ces noms en adresses pour s'y rendre. Dans la mesure où ta sélection dans la liste déroulante n'actionnera pas un lien actif, la transformation du nom en lien hypertexte n'est pas la méthode la plus rapide pour obtenir le résultat cherché. La recherche de l'adresse correspondante, puis le déplacement vers cette adresse paraît plus économique (comme d'ailleurs l'opère la deuxième partie de ta macro citée dans le cas d'une adresse de plage).

Cordialement.

1- Réponse MFerrand :

Lu attentivement tous ces pertinents conseils, et comme je l'ai dis bien que plus que débutant en VBA, je pense en avoir saisi le sens ; particulièrement concernant la différentiation entre "adresses web" et "zones nommées dans le classeur".

Actuellement j'ai donc nommé mes différentes zones à l'intérieur de mon classeur et chacune de ces zones je les ai , elles mêmes, reliées à un bouton différent pour avoir la sélection immédiate de toute la zone (dans mon classeur cette zone peut contenir jusqu'à 250 lignes voire beaucoup plus et cela m'évite à chaque fois de faire une sélection manuelle, quand je dois rechercher une personne dans cette "liste de noms").

Mon but est donc de pouvoir "regrouper", en quelque sorte, tous ces "boutons individuels" au sein du même liste déroulante ; juste une question de place dans l'en tête du tableau, et surtout d'un côté beaucoup plus pratique pour sélectionner l'une ou l'autre des zones.

A priori, je n'ai pas besoin d'avoir de "liens web" dans cette liste déroulante, je n'avais choisis cette VBA, comme on dit "Qui peut le plus, peut le moins" et de pouvoir éventuellement l'appliquer à une autre liste où j'ai effectivement dans ce cas que des liens web.

2- Réponse Frangy :

Merci pour l'exemple donné et pour le code, je ne l'ai pas essayé, car j'ai de suite vu, que la disposition des zones sur l'exemple envoyé ne correspond pas à la réalité de mon tableau.

J'ai donc préparé "rapidement" un tableau similaire mais sommaire pour faire ressortir la disposition exacte des différentes zones telles que présente dans mon tableau, car je pense que cela joue bien évidemment dans le code ?

J'ai omis dans le post de départ de demander s'il est possible d'inclure dans le code l'ouverture à la fin la fonction "CTRL F", afin d'ouvrir au terme de la VBA la petite fenêtre "Rechercher-Remplacer"

Merci de toute votre patiente et de vos réponses Cordialement à vous

La vue de ton fichier m'amène à deux questions :

Donner des noms de plage tel que tu l'as fait, dans une base évolutive, fait peser un risque de perdre la permanence des noms lors d'évolutions de la base ?

Et question primaire : pourquoi sélectionner ?

Nomination des plages :

Je ne connaissais pas effectivement ce risque ; néanmoins, je ne sais si cela peut "parer" à cette déficience, mes plages ainsi nommées sont déterminées par leur deux extrêmes qui eux sont fixes (1ère et dernière cellule de la plage) dans l'exemple donné en pièce jointe effectivement je n'ai pas mis la première ligne "fixe" (sans inscription aucune) qui suit la ligne surlignée en jaune (désolé oubli de ma part). Donc quand j'insère d'autres personnes dans la base, l'insertion se fait toujours entre ces deux lignes, de ce fait en principe la plage évolue en conséquence ; jusque là en procédant de la sorte je n'ai pas rencontré ce problème de "permanence des noms".

Quelle serait la solution que je devrait envisager dans ce cas là ?

Pourquoi sélectionner ? :

Je vais essayer de faire simple pour expliquer.

En prenant le fichier joint, admettons que la "famille Durand" comporte en réalité plus d'une centaine de noms (colonne Q) de conjoints cela peut-être beaucoup plus ; j'ai des familles ayant 200 ou 300 individus ; donc autant de lignes...

Je veux rechercher si l'un des individus de la famille Durand est marié avec une certaine "Oléron Marie", je ne vais pas passer une à une les 100, 200 ou 300 lignes pour rechercher cette éventuelle personne, (au risque, en plus, de ne pas la voir) donc actuellement je clique sur mon bouton qui sélectionne la plage en question, puis CTRL F, je rentre le nom Oléron, et j'ai ma réponse en deux secondes, peut-être archaïque comme procédé, mais en tout cas efficace pour moi.

Donc cette liste déroulante c'est pouvoir mettre sur une seule ligne le condensé de tous ces liens vers les plages, que j'ai actuellement en plusieurs boutons en haut de la base sur la partie "fixe" du tableau. (gain de place et simplicité d'exécution)

En outre je précise que cette recherche est ponctuelle et ne se fait que sur des parties précises du tableau, donc une recherche sur l'ensemble du tableau n'est pas envisageable, car cela prendrait en compte toutes les familles (actuellement 676 familles) et un peu plus de 9.000 lignes d'individus, sans omettre qu' il y a la similitude des patronymes et la multitude des mêmes prénoms donnés : pour un même couple il n'est pas rare d'avoir 4, 5 enfants avec le même prénom ! (les joies de la généalogie... )

J'espère avoir été assez explicite dans ma réponse Cordialement à toi

Rechercher des sujets similaires à "liste deroluante liens hypertexte actifs"