Rechercher : dans
Par :

Comprendre code hypertext dans macro vba

Dernière réponse le 26 oct 2009 à 09:43:47 skeumy, le 22 oct 2009 à 08:49:36 
 Signaler ce message aux modérateurs

Bonjour,

je pense que les compétances des personnes sur ce forum vont m'etre très utiles ! Voila mon problème: je n'arrive pas a coder correctement dans une macro vba la ligne de code permettant de creer un lien hypertext dans une cellule. Je m'explique:

J'ai une feuille "idees" ou est ecrit sur une colonne une liste de titre d'idées ("idée1";"idée2";...ect)
J'ai une deuxieme feuille qui sert de trame de fond que je nomme "fiche temoin".

Apres recherches sur le net et ce forum j'ai reussi à creer une macro pas trop degeu' liée a un bouton.

Cette macro sert à dupliquer la feuille "fiche temoin" en lui appliquant un nom de feuille que l'utilisateur précisera en cliquant sur l'un des nom présent sur la feuille "idées".

Tout va bien jusque la. Mais maintenant, je souhaite que le titre d'idée (par exemple "idée1") sur lequel j'ai cliqué en feuille "idées" se transforme automatiquement en lien vers la nouvelle feuille créée.

J'ai eu beau bidouiller cette fonction "ActiveSheet.Hyperlinks.Add Anchor" dans tout les sens, ca ne fonctionne pas :(

merci pour l'aide que vous pourrez apporter au bien modeste débutant que je suis ;)

(je peux copier/coller le code que j'ai actuellement dans le prochain message si ca peux vous aider)

merci !

Configuration: Windows 2000 Internet Explorer 6.0

1

michel_m, le 22 oct 2009 à 09:53:08

Bonjour,
essaies

 idee = ActiveCell
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & idee & "'!A1"
    'sub address: lire guillemet-apostrophe-guillemet et après le 2° & guillemet-apostrophe-exclamation

ou si tu préfères:
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & ActiveCell.Value & "'!A1"


en supposant que ta cellule active est "la nouvelle idée"

la difficulté vient souvent que si le nom d'onglet comporte des espaces il faut encadrer ce nom par des apostrophes par ex: 'idée 27' .... donc, comme on ne sait pas si l'utilisateur mettra un espace ou pas, il est + prudent d'utiliser cette syntaxe barbare... Cordialement, Michel

Répondre à michel_m

2

skeumy, le 22 oct 2009 à 10:25:16

Bonjour, et merci pour votre réponse.

Pourriez vous m'eclairez sur quoi mettre et ou? ;) En fait, je ne sais pas a quoi correspond address; subaddress.

Par contre, si j'ai bien compris, l'activecell.value, c'est la cellule ou je veux que mon link apparaisse. J'ai testé differentes valeurs, mais a chaque fois, le link apparait dans la nouvelle feuille créée et non dans la feuille ou je selectionne le titre. (feuille "idees")

J'ai ecrit ceci:

Range(plop).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'idees" & ActiveCell.Value & "'!plop"


sachant que "plop" est la cellule de la page "idees" ou se situe le titre que j'ai selectionné. J'ai l'impression qu'il y a un conflit entre cellule ou page active.

merci a vous

Répondre à skeumy

3

skeumy, le 23 oct 2009 à 14:02:16

Personne d'autre n'a de solutions ? C'est bien embetant , je reste bloqué.

Répondre à skeumy

4

michel_m, le 23 oct 2009 à 14:13:01

Tu as marqué
Cette macro sert à dupliquer la feuille "fiche temoin" en lui appliquant un nom de feuille que l'utilisateur précisera en <ital>cliquant sur l'un des nom présent sur la feuille "idées".

Tout va bien jusque la. Mais maintenant, je souhaite que le titre d'idée (par exemple "idée1") sur lequel j'ai cliqué en feuille "idées" se transforme automatiquement en lien vers la nouvelle feuille créée. </ital>

c'est ce que je t'ai proposé après l'avoir testé.
il faut bien sûr que la feuille "idées" soit la feuille active!
au besoin incorpore cette ligne avant la partie lien hypertexte
sheets("idees").activate


Michel

Répondre à michel_m

5

skeumy, le 26 oct 2009 à 08:54:01

Bonjour !

Bien, j'y vois un petit peu plus clair dans cette fameuse fonction hyperlink, merci a vous :) Elle fonctionne, mais il subsiste encore un petit soucis.
Apparement, la cellule active est celle entourée d'un trait épais et noir. Or quand je clique (sur demande de la macro) sur la cellule où est le titre de ma nouvelle feuille, la cellule s'entoure d'un trait en pointillé.

Au final, le link créé par la macro apparait dans une autre cellule qui etait cerclé de noir avant le debut de la macro.

J'espere que j'ai été clair :s Donc en gros, il faudrai une fonction qui transforme la cellule encerclé de pointillé, en cellule encerclé de noir.
Sinon, je serai obligé de cliquer sur la cellule ou je souhaite voir apparaitre le link avant de cliquer sur le bouton qui lance la macro.

Merci pour les solutions que vous pourrez m'apporter :)

(et de me faire progresser en même temps)

Répondre à skeumy

6

 skeumy, le 26 oct 2009 à 09:43:47

Bon, et bien j'ai reussi a tout bien faire fonctionner :D Pour ceux qui aurai le même problème que moi, voici les lignes de code utilisées, que michel m'a fourni, plus la modif pour activer la cellule:


plop = reponse.Address ('reponse' est la cellule selectionnée grace a la macro)

Sheets("idees").Activate ('active la feuille ou je souhaite voir apparaitre le link')
Range(plop).Select ('active la cellule ou je souhaite voir apparaitre le link')

idee = ActiveCell

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="'" & idee & "'!A1"


Il y a peut etre un moyen plus efficace pour arriver au meme resultat, je laisse soin aux personnes plus chevronnées de proposer leurs solutions.

En tout cas, merci bien pour ton aide michel ! Je reviendrai probablement poster quelques messages de détresse sur le fofo ;)

Répondre à skeumy
Collection CommentÇaMarche.net