Hyperlinks mobiles

Le
CriCri
Salut

Pour tout simplifier au max, disons que j'ai une colonne de cellules sur
une feuille qui pointent sur leurs homologues sur une autre: dans
"'feuille 1'!A1:A5" - chaque cellule pointe sur sa copine dans
"'feuille 2'!A1:A5"

Si je copie la plus haute (A1) vers les autres en dessous, Excel ne
modifie pas les hyperlinks automatiquement, donc elles pointent toutes sur
"'feuille 2'!A1"

Pour éviter de les modifier manuellement (en fait il y a bien plus que
100) j'ai fait un petit macro (ci-dessous) qui commence à A1 et descend
la colonne une cellule à la fois pour changer le hyperlink de chacune
afin de pointer sur celle de la même rangée sur l'autre feuille.
feuille 1 - feuille 2
A1 -> A1
A2 -> A2
A3 -> A3
etc.
Quand il arrive à une cellule vide il s'arrête.

Ça marche nickel: si j'exécute une boucle à la fois puis contrôle le
résultat pour la cellule modifiée il est comme attendu.

Mais des que le sub se termine _TOUS_ les hyperlinks sont RE-modifiés et
pointent vers la toute dernière cellule la plus basse ('feuille 2'!A5).

Qui c'est qui fait ça?
Cdlt
CriCri

--
Sub modliens()

Dim rang As Integer

Worksheets("feuille 1").Activate
Cells(1, 1).Select
rang = Selection.Row

While Selection.Value = "-->"
Selection.Hyperlinks(1).SubAddress = "'feulle 2'!" & "A" & CStr(rang)
rang = rang + 1
Range("A" & CStr(rang)).Select
Wend

End Sub
--

--
bitwyse [PGP KeyID 0x18EB38C4]
http://www.le-maquis.net
C'est comme au CNRS: des chercheurs qui cherchent on en trouve
mais des chercheurs qui trouvent on en cherche.
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
CriCri
Le #26503182
Dsl - j'ai oublié de dire: il s'agit de Excel 2003 et VB 6.3
--
bitwyse [PGP KeyID 0x18EB38C4]
http://www.le-maquis.net
C'est comme au CNRS: des chercheurs qui cherchent on en trouve
mais des chercheurs qui trouvent on en cherche.
MichD
Le #26503196
Bonjour,
essaie comme ceci (pas tester) :
J'ai corrigé l'orthographe "feuille 2" dans la procédure que tu as
publiée.
'-------------------------------
Sub Test()
Dim Rg As Range, C As Range, DerLig As Long
With Worksheets("feuille 1")
DerLig = .Range("A" & .Rows.Count).End(xlUp).Row
Set Rg = .Range("A1:A" & DerLig)
End With
For Each C In Rg.Cells
If C <> "" Then
C.Hyperlinks(1).SubAddress = "'feuille 2'!" & "$A$" & C.Row
End If
Next
End Sub
'-------------------------------
MichD
CriCri
Le #26503227
Salut MichD
MichD a écrit :
J'ai corrigé l'orthographe "feuille 2" dans la procédure que tu as
publiée.

Pas de souci - lors de ma simplification j'ai modifié le code à la
main: en fait "feuille 1" s'appelle "incidents" et "feuille 2" s'appelle
"tendance"!
Merci beaucoup pour ta proposition.
Malheureusement le résultat final est le même, mais on y arrive par un
autre chemin.
Chaque fois que la ligne
C.Hyperlinks(1).SubAddress = "'feuille 2'!" & "$A$" & C.Row

est exécutée, tous les Hyperlinks de toutes les cellules sur "feuille 1"
sont changés d'un seul coup pour pointer sur la même cellule dans le
"C.Row" actuel de "feuille 2". Comprends pas...
Cdlt, CriCri
--
bitwyse [PGP KeyID 0x18EB38C4]
http://www.le-maquis.net
C'est comme au CNRS: des chercheurs qui cherchent on en trouve
mais des chercheurs qui trouvent on en cherche.
Michel__D
Le #26503245
Bonjour,
Le 28/12/2018 à 18:02, CriCri a écrit :
Salut
Pour tout simplifier au max, disons que j'ai une colonne de cellules sur
une feuille qui pointent sur leurs homologues sur une autre: dans
"'feuille 1'!A1:A5" - chaque cellule pointe sur sa copine dans
"'feuille 2'!A1:A5"
Si je copie la plus haute (A1) vers les autres en dessous, Excel ne
modifie pas les hyperlinks automatiquement, donc elles pointent toutes sur
"'feuille 2'!A1"
Pour éviter de les modifier manuellement (en fait il y a bien plus que
100) j'ai fait un petit macro (ci-dessous) qui commence à A1 et descend
la colonne une cellule à la fois pour changer le hyperlink de chacune
afin de pointer sur celle de la même rangée sur l'autre feuille.
feuille 1 - feuille 2

Si tu peux te passer des espaces dans les noms du classeur et de la feuille de calcul,
tu pourrais utiliser la fonction LIEN_HYPERTEXTE
Dans la 'Feuille_1' de ton classeur 'Monclasseur' en A1 tu saisis :
=LIEN_HYPERTEXTE("[Monclasseur]Feuille_2!A" & Ligne();"Feuille_2!A" & Ligne())
Ensuite tu recopie vers le bas.
Michel__D
Le #26503249
Re,
Le 29/12/2018 à 14:06, Michel__D a écrit :
Bonjour,
Le 28/12/2018 à 18:02, CriCri a écrit :
Salut
Pour tout simplifier au max, disons que j'ai une colonne de cellules sur
une feuille qui pointent sur leurs homologues sur une autre: dans
"'feuille 1'!A1:A5" - chaque cellule pointe sur sa copine dans
"'feuille 2'!A1:A5"
Si je copie la plus haute (A1) vers les autres en dessous, Excel ne
modifie pas les hyperlinks automatiquement, donc elles pointent toutes sur
"'feuille 2'!A1"
Pour éviter de les modifier manuellement (en fait il y a bien plus que
100) j'ai fait un petit macro (ci-dessous) qui commence à A1 et descend
la colonne une cellule à la fois pour changer le hyperlink de chacune
afin de pointer sur celle de la même rangée sur l'autre feuille.
feuille 1 - feuille 2

Si tu peux te passer des espaces dans les noms du classeur et de la feuille de calcul,
 tu pourrais utiliser la fonction LIEN_HYPERTEXTE
Dans la 'Feuille_1' de ton classeur 'Monclasseur' en A1 tu saisis :
=LIEN_HYPERTEXTE("[Monclasseur]Feuille_2!A" & Ligne();"Feuille_2!A" & Ligne())
Ensuite tu recopie vers le bas.

La formule avec prise en compte des espaces :
=LIEN_HYPERTEXTE("[Nom du classeur]'Feuille 2'!A" & Ligne();"'Feuille 2'!A" & Ligne())
Ensuite tu recopie vers le bas.
Adapter le [Nom du classeur] avec le nom du classeur ET son extension.
CriCri
Le #26503275
Re-bonjour Michel et merci encore.
Pas de problème pour les espaces: j'ai appelé le classeur "liens.xls" et
les feuilles "incidents" et "tendance".
Dans "incidents!A1" j'ai donc mis
=LIEN_HYPERTEXTE("[liens.xls]tendance!A" & LIGNE();"tendance!A" & LIGNE())
Quand je la copie vers le bas chaque cellule affiche correctement la
cellule de destination voulue en tant que son "nom convivial" (de
"tendance!A1" à "tendance!A5", donc "ligne()" marche bien comme il se
doit; mais le hyperlien reste toujours "tendance!A1" - et c'est là qu'on
arrive en cliquant.
Apparemment le hyperlien ne tient pas compte de la partie de la chaîne
concaténée.
Tout ça commence à sentir un problème de comportement d'Excel (du moins
ma vieille version).
Cdlt, CriCri
--
bitwyse [PGP KeyID 0x18EB38C4]
http://www.le-maquis.net
C'est comme au CNRS: des chercheurs qui cherchent on en trouve
mais des chercheurs qui trouvent on en cherche.
CriCri
Le #26503501
Salut tlm
Pour info: j'ai testé les trois possibilités tentées jusqu'ici dans
Libre Office Calc.
J'ai exactement les mêmes problèmes et globalement Calc gère les
hyperlinks moins bien qu'Excel (ce n'est pas la seule chose, mais si on
ne présume pas qu'il va se comporter d'une façon identique à Excel il
n'est pas mal).
Je pense de plus en plus qu'il y a bien un problème avec les algorithmes
de ces programmes et que ce n'est pas notre code qui déconne.
Je ne lâche pas le morceau et j'ai un autre idée que je n'ai pas encore
eu le temps de tester. Si ça donne un bon résultat je vous tiendrai au
courant.
En attendant, bonnes fêtes et à l'année prochaine (qui va forcément être
moins mauvaise que l'actuelle.
Cdlt, CriCri
--
bitwyse [PGP KeyID 0x18EB38C4]
http://www.le-maquis.net
C'est comme au CNRS: des chercheurs qui cherchent on en trouve
mais des chercheurs qui trouvent on en cherche.
Michel__D
Le #26503506
Bonjour,
Le 31/12/2018 à 17:54, CriCri a écrit :
Salut tlm
Pour info: j'ai testé les trois possibilités tentées jusqu'ici dans
Libre Office Calc.
J'ai exactement les mêmes problèmes et globalement Calc gère les
hyperlinks moins bien qu'Excel (ce n'est pas la seule chose, mais si on
ne présume pas qu'il va se comporter d'une façon identique à Excel il
n'est pas mal).
Je pense de plus en plus qu'il y a bien un problème avec les algorithmes
de ces programmes et que ce n'est pas notre code qui déconne.
Je ne lâche pas le morceau et j'ai un autre idée que je n'ai pas encore
eu le temps de tester. Si ça donne un bon résultat je vous tiendrai au
courant.
En attendant, bonnes fêtes et à l'année prochaine (qui va forcément être
moins mauvaise que l'actuelle.
Cdlt, CriCri

J'ai testé la fonction que j'ai donnée sur un excel 2003 dans un VM XP et
elle fonctionne correctement.
Je rappelle la fonction :
=LIEN_HYPERTEXTE("[Nom du classeur]'Feuille 2'!A" & Ligne();"'Feuille 2'!A" & Ligne())
Et je viens de tester sur Libre Office, elle fonctionne aussi avec la syntaxe suivante :
=LIEN.HYPERTEXTE("#'Feuille 2'.A" & LIGNE();"#'Feuille 2'.A" & LIGNE())
Bonnes fêtes itou.
MichD
Le #26503541
Essaie comme ceci :
'------------------------------------------
Sub test()
Dim Hp As Hyperlink, Adr As String
For Each Hp In Worksheets("incidents").Hyperlinks
If Hp.Range.Column = 1 Then
Adr = "Tendance!" & "$A$" & Hp.Range.Row
Hp.SubAddress = Adr
End If
Next
End Sub
'------------------------------------------
MichD
CriCri
Le #26503913
Merci Michel.
De retour après les fêtes j'ai commencé avec la même feuille (A1 copiée
jusqu'à A5).
Ton code s'est bien sûr exécuté correctement (en pas-à pas) mais la
boucle n'a tourné que deux fois.
La raison était facile à trouver:
Worksheets("incidents").Hyperlinks.Count = 2
Donc j'ai fini avec 2 cellules qui pointent sur Tendance!A2 - ainsi que
l'ensemble des autres - bien qu'il n'y avait que A1 et A2 qui ont été
traitées!!!
Y a quelque chose qui ne va pas dans la gestion par Excel de cette
structure...
Bonne année
CriCri
--
bitwyse [PGP KeyID 0x18EB38C4]
http://www.le-maquis.net
C'est comme au CNRS: des chercheurs qui cherchent on en trouve
mais des chercheurs qui trouvent on en cherche.
Publicité
Poster une réponse
Anonyme