Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Hyperlinks mobiles

20 réponses
Avatar
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.

10 réponses

1 2
Avatar
MichD
Si tu n'as que 2 liens hypertextes dans la colonne A, c'est normal que
la procédure ne traite que ces 2 liens hypertextes. C'était le sens de
ta question. Pourquoi les autres cellules de la colonne A ne
contiennent-elles pas de liens hypertextes? Je n'en sais rien, je ne
suis pas l'auteur de ce fichier.
MichD
Avatar
CriCri
Non, au début il y avait bien 5 liens hypertexte dans la colonne A -
tous copiés de A1 (vers A2 à A5) et tous pointant donc sur tendances!A1
Après - càd après deux exécutions de la boucle - il y avait également 5
liens hypertexte dans A1 à A5 - tous pointant sur tendances!A2
Tout vérifié à chaque étape.
--
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.
Avatar
MichD
Le 04/janv./2019 à 13:11, CriCri a écrit :
Non, au début il y avait bien 5 liens hypertexte dans la colonne A -
tous copiés de A1 (vers A2 à A5) et tous pointant donc sur tendances!A1
Après - càd après deux exécutions de la boucle - il y avait également 5
liens hypertexte dans A1 à A5 - tous pointant sur tendances!A2
Tout vérifié à chaque étape.

Désolé, je ne suis pas. Comment peux-tu avoir 5 liens hypertextes dans
la plage A1:A5 si la procédure soumise n'en détecte que 2?
À quoi servent 5 liens hypertextes s'ils sont tous dirigés vers la même
cellule?
Attention, dans une cellule, tu peux avoir un format de cellule
similaire au contenu d'une cellule contenant un lien hypertexte sans que
cette cellule contienne un lien. Un format de cellule donnée n'est pas
l'équivalent d'un lien hypertexte.
MichD
Avatar
CriCri
MichD a écrit :
Désolé, je ne suis pas. Comment peux-tu avoir 5 liens hypertextes dans
la plage A1:A5 si la procédure soumise n'en détecte que 2?

Parce qu'il y a un bogue dans Excel.
À quoi servent 5 liens hypertextes s'ils sont tous dirigés vers la même
cellule?

Ô là là - il faut retourner au début du fil pour comprendre.
Le premier hyperlien créé en feuille_1!A1 pointe sur feuille_2!A1. On
copie cette cellule vers le bas (-> A5) en espérant qu'Excel modifierait
la cellule de destination (jusqu'à A5) mais ce n'est pas le cas: elle
reste toujours la même (feuille_2!A1). Bien évidemment on aurait voulu
que la destination suive - rangée par rangée. Ce n'est pas le cas - d'où
toutes ces tentatives pour corriger le manquement.
Attention, dans une cellule, tu peux avoir un format de cellule
similaire au contenu d'une cellule contenant un lien hypertexte sans que
cette cellule contienne un lien. Un format de cellule donnée n'est pas
l'équivalent d'un lien hypertexte.

Ce n'est pas ça. Les cellules copiées contiennent bien des liens
hypertextes - il suffit de passer le curseur dessus pour le voir et si
on clique dessus il saute.
On peut bien modifier la cellule de destination en choisissant "Modifier
le lien hypertexte". Mais s'il y en a plus de 100 ça devient fatiguant.
--
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.
Avatar
MichD
Pour recopier un lien hypertexte avec une incrémentation de l'adresse du
numéro de ligne de la cellule, Michel_D t'a donné un exemple sur ce fil.
Tu auras besoin d'une colonne supplémentaire. Tu ne peux pas recopier le
lien sur la plage de cellule comme si c'était une entrée numérique.
En VBA, je crois que la procédure soumise fait le travail. Attention, la
procédure traite les liens hypertextes différents... si tu as 5 liens
identiques, la procédure ne traite qu'un lien hypertexte, mais il traite
du même coup tous les liens identiques!
MichD
Avatar
CriCri
MichD a écrit :
Pour recopier un lien hypertexte avec une incrémentation de l'adresse
du numéro de ligne de la cellule, Michel_D t'a donné un exemple sur
ce fil.

J'ai tout copié-collé mais ça n'a pas marché.
Tu auras besoin d'une colonne supplémentaire. Tu ne peux pas recopier
le lien sur la plage de cellule comme si c'était une entrée
numérique.

Ah. Je vais essayer de comprendre ça: on n'en avait pas parlé avant.
Ca ne poserait pas de pb: je vais faire des essais (en fait en dehors du
fichier test simplifié les colonnes sont déjà différentes).
En VBA, je crois que la procédure soumise fait le travail.

Ben, non (comme décrit dans mon dernier post).
Attention, la procédure traite les liens hypertextes différents... si
tu as 5 liens identiques, la procédure ne traite qu'un lien
hypertexte, mais il traite du même coup tous les liens identiques!

Ah - même si les liens sont dans des cellules différentes. C'est
exactement ça le problème.
Mais l'objet était justement de transformer tous ces liens identiques en
liens différents (en augmentant la rangée chaque fois pour rester au
même niveau horizontale). Alors tu es en train de me dire que ce n'est
pas possible?
Merci encore.
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.
Avatar
CriCri
Et bien je crois avoir compris que le Count est celui des hyperliens
différents: même si plusieurs liens identiques se trouvent dans des
cellules différentes, ils sont considérés comme un.
Alors la question devient: "est-ce qu'on peut référencer séparément ces
hyperliens dans des cellules différentes même s'ils sont les mêmes?"
--
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.
Avatar
MichD
Le 04/janv./2019 à 15:44, CriCri a écrit :
Et bien je crois avoir compris que le Count est celui des hyperliens
différents: même si plusieurs liens identiques se trouvent dans des
cellules différentes, ils sont considérés comme un.
Alors la question devient: "est-ce qu'on peut référencer séparément ces
hyperliens dans des cellules différentes même s'ils sont les mêmes?"

Tu peux utiliser ce type de macro, elle s'applique pour toutes les
cellules qui ne sont pas vides dans la colonne A.
'---------------------------------------------
Sub Macro1()
Dim C As Range, DerLig As Long
With Worksheets("incidents")
DerLig = .Range("A" & .Rows.Count).End(xlUp).Row
For Each C In .Range("A1:A" & DerLig)
If C <> "" Then
C.Hyperlinks.Add Anchor:=C, Address:=ThisWorkbook.Name, _
SubAddress:="Tendance!A" & C.Row, TextToDisplay:= _
"Tendance!A" & C.Row
End If
Next
End With
End Sub
'---------------------------------------------
MichD
Avatar
CriCri
Salut
Je réponds à ma propre question - c'est "oui" !
Mais il y a plus facile :-)
A partir de la case de départ:
1. crée deux feuilles vides 'incidents' et 'tendances'
2. mets "->>" dans 'incidents!A1'
(sans créer aucun hyperlien, c'est juste pour indiquer qu'il va y en
avoir un).
3. copie A1 vers A2 à A5 :
A
1 ->>
2 ->>
3 ->>
4 ->>
5 ->>
(jusqu'ici il n'y a _que_ du texte).
4. Crée les hyperliens avec le morceau ci-dessous.
Chaque cellule A1 - A5 dans 'incidents' pointe maintenant sur A1 à A5
dans 'tendances'.
--------
Sub liens()
Dim Rge As Range, Cel As Range, Fin As Integer
With Worksheets("incidents")
Fin = .Range("A" & .Rows.Count).End(xlUp).Row
Set Rge = .Range("A1:A" & Fin)
For Each Cel In Rge.Cells
If Cel = "->>" Then
.Hyperlinks.Add .Range("A" & Cel.Row), "liens.xls#tendance!A" & Cel.Row
End If
Next
End With
End Sub
--------
(Si on fait exactement comme indiqué le test "if" est redondant - mais
ça ne coûte pas cher.)
Merci Michel de m'avoir guidé vers la compréhension de la structure de
ce système.
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.
Avatar
CriCri
Salut
Je réponds à ma propre question - c'est "oui" !
Mais il y a plus facile
A partir de la case de départ:
1. crée deux feuilles vides 'incidents' et 'tendance'
2. mets "->>" dans 'incidents!A1'
(sans créer aucun hyperlien, c'est juste pour indiquer qu'il va y en
avoir un).
3. copie A1 vers A2 à A5 :
A
1 ->>
2 ->>
3 ->>
4 ->>
5 ->>
(jusqu'ici il n'y a _que_ du texte).
4. Crée les hyperliens avec le morceau ci-dessous.
Chaque cellule A1 - A5 dans 'incidents' pointe maintenant sur A1 à A5
dans 'tendance'.
--------
Sub liens()
Dim Rge As Range, Cel As Range, Fin As Integer
With Worksheets("incidents")
Fin = .Range("A" & .Rows.Count).End(xlUp).Row
Set Rge = .Range("A1:A" & Fin)
For Each Cel In Rge.Cells
If Cel = "->>" Then
.Hyperlinks.Add .Range("A" & Cel.Row), "#tendance!A" & Cel.Row
End If
Next
End With
End Sub
--------
(Si on fait exactement comme indiqué le test "if" est redondant - mais
ça ne coûte pas cher.)
Merci Michel de m'avoir guidé vers la compréhension de la structure de
ce système.
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.
1 2