[VBA Excel] mettre une formule =hyperlink en variable
Résolu
lml-mike
Messages postés
487
Statut
Contributeur
-
lml-mike Messages postés 487 Statut Contributeur -
lml-mike Messages postés 487 Statut Contributeur -
Bonjour,
je voulais savoir s'il était possible de transformer un lien contenu dans une variable en formule hypertexte de cette façon :
for indtab = 1 to Ubound(messcreens)
Messcreens(Indtab) = "=HYPERLINK(Messcreens(indtab);"Screenshot")
next indtab
De sorte à ce que quand j'appelle une variable de mon tableau sur une cellule, elle passe directement en mode hyperlink :
Colonne = 4
For indtab = 1 to ubound(indtab)
Lieu_du_screen = Cells(indtab, colonne)
Lieu_du_screen.formula = Messcreens(indtab)
next indtab
J'imagine que je dois déclarer Lieu_du_screen d'un certain type pour que cela fonctionne (pour les besoin du script, je ne peux pas écrire la formule cells directement), mais je n'ai pas trouvé dans mes recherches de quel type je devais déclarer ma variable ...
Merci beaucoup ^_^
je voulais savoir s'il était possible de transformer un lien contenu dans une variable en formule hypertexte de cette façon :
for indtab = 1 to Ubound(messcreens)
Messcreens(Indtab) = "=HYPERLINK(Messcreens(indtab);"Screenshot")
next indtab
De sorte à ce que quand j'appelle une variable de mon tableau sur une cellule, elle passe directement en mode hyperlink :
Colonne = 4
For indtab = 1 to ubound(indtab)
Lieu_du_screen = Cells(indtab, colonne)
Lieu_du_screen.formula = Messcreens(indtab)
next indtab
J'imagine que je dois déclarer Lieu_du_screen d'un certain type pour que cela fonctionne (pour les besoin du script, je ne peux pas écrire la formule cells directement), mais je n'ai pas trouvé dans mes recherches de quel type je devais déclarer ma variable ...
Merci beaucoup ^_^
A voir également:
- Activesheet.hyperlinks.add
- Formule si et excel - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Excel mise en forme conditionnelle formule - Guide
- Liste déroulante excel - Guide
- Formule somme excel colonne - Guide
4 réponses
Bonjour,
un lien Hyperlincks ne peut être attribuer à une variable, c'est un peu comme le format de cellule et gérer par Excel.
Pour faire ce que tu veux tu dois assigner le lien au moment ou tu attribue une valeur aux cellules
A+
EDIT:
Relisant ta question...
Essaye avec
Double guillemets pour un guillemet dans la variable.
Et dans ta deuxième boucle
Pas besoin de passer par un objet Range.
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
un lien Hyperlincks ne peut être attribuer à une variable, c'est un peu comme le format de cellule et gérer par Excel.
Pour faire ce que tu veux tu dois assigner le lien au moment ou tu attribue une valeur aux cellules
colonne = 4 For indtab = 1 To UBound(indtab) ActiveSheet.Hyperlinks.Add Anchor:=Cells(indtab, colonne), Address:= _ Messcreens(indtab), TextToDisplay:=Messcreens(indtab) Next indtab
A+
EDIT:
Relisant ta question...
Essaye avec
Messcreens(Indtab) = "=HYPERLINK(" & Messcreens(indtab) & ";""Screenshot"") "
Double guillemets pour un guillemet dans la variable.
Et dans ta deuxième boucle
Colonne = 4 For indtab = 1 to ubound(indtab) Cells(indtab, colonne) .FormulaLocal = Messcreens(indtab) next indtab
Pas besoin de passer par un objet Range.
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
Salut lermite !
J'ai essayé ta technique avec le formula local, mais il me renvoie une erreur avec :
Erreur définie par l'application ou par l'objet.
C'est bien dommage, elle me serait fort utile pour ensuite assigner mes screenshots d'une traite !! Tu as une idée d'où ça peut venir ? Les déclarations de variable peut-être ? MesScreens() est en string (ce vieux pervers!)
Merci beaucoup !
EDIT : J'ai trouvé ça :
Messcreens(Indtab) = "=HYPERLINK(" & Messcreens(indtab) & ";""Screenshot"") "
s'écrit en fait :
Messcreens(Indtab) = "=HYPERLINK(""" & Messcreens(indtab) & """;""Screenshot"") "
Le lien doit être entre guillemets dans la formule...ça commence à faire beaucoup de guillemets lol !
Edit2 : J'ai essayé avec ta formule :
ActiveSheet.Hyperlinks.Add Anchor:=Cells(13, 5), Address:= _
mesScreens(indTab), TextToDisplay:=mesScreens(indTab)
Le lien se créé mais lors du clic le message d'erreur "impossible d'ouvrir le fichier spécifié" s'affiche. C'est bizarre, si je copie/colle le contenu de la cellule ça fonctionne, mais si je copie/colle la cellule elle même je garde la même erreur...Erreur de format ?
J'aimerais bien t'afficher mes formules comme toi en format notepad++, comment tu fais ?
Edit 3: En corrigeant MesScreens(indtab) et en ressayant avec le formulalocal ça marche...Merci beaucoup du coup ^_^
Le problème venait donc initialement de
Messcreens(Indtab) = "=HYPERLINK(Messcreens(indtab);"Screenshot")
qui s'écrit donc :
Messcreens(Indtab) = "=HYPERLINK(""" & Messcreens(indtab) & """;""Screenshot"") "
Voilà comment passer 2 jours de recherche pour un problème de guillemets xD
J'ai essayé ta technique avec le formula local, mais il me renvoie une erreur avec :
Erreur définie par l'application ou par l'objet.
C'est bien dommage, elle me serait fort utile pour ensuite assigner mes screenshots d'une traite !! Tu as une idée d'où ça peut venir ? Les déclarations de variable peut-être ? MesScreens() est en string (ce vieux pervers!)
Merci beaucoup !
EDIT : J'ai trouvé ça :
Messcreens(Indtab) = "=HYPERLINK(" & Messcreens(indtab) & ";""Screenshot"") "
s'écrit en fait :
Messcreens(Indtab) = "=HYPERLINK(""" & Messcreens(indtab) & """;""Screenshot"") "
Le lien doit être entre guillemets dans la formule...ça commence à faire beaucoup de guillemets lol !
Edit2 : J'ai essayé avec ta formule :
ActiveSheet.Hyperlinks.Add Anchor:=Cells(13, 5), Address:= _
mesScreens(indTab), TextToDisplay:=mesScreens(indTab)
Le lien se créé mais lors du clic le message d'erreur "impossible d'ouvrir le fichier spécifié" s'affiche. C'est bizarre, si je copie/colle le contenu de la cellule ça fonctionne, mais si je copie/colle la cellule elle même je garde la même erreur...Erreur de format ?
J'aimerais bien t'afficher mes formules comme toi en format notepad++, comment tu fais ?
Edit 3: En corrigeant MesScreens(indtab) et en ressayant avec le formulalocal ça marche...Merci beaucoup du coup ^_^
Le problème venait donc initialement de
Messcreens(Indtab) = "=HYPERLINK(Messcreens(indtab);"Screenshot")
qui s'écrit donc :
Messcreens(Indtab) = "=HYPERLINK(""" & Messcreens(indtab) & """;""Screenshot"") "
Voilà comment passer 2 jours de recherche pour un problème de guillemets xD
Oui, pas évident de mettre le bon nombre de guillemets aux bons endroits.
Pour l'emploi de ActiveSheet.Hyperlinks.Add , tu doit mettre la variable AVANT de mettre Hyperlinck. Exemple...
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
Pour l'emploi de ActiveSheet.Hyperlinks.Add , tu doit mettre la variable AVANT de mettre Hyperlinck. Exemple...
ActiveSheet.Hyperlinks.Add Anchor:=Cells(13, 5), Address:= _ "C:\Chemin\le fichier.xls", TextToDisplay:="A voir dans la cellule"
Pour mettre les formules en "code" tu sélectionne tout le code ou la formule et tu clic sur le bouton "triangle inverser" juste au dessus de l'éditeur, dans le menu tu sélectionne "Basic"
A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .