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

Gros soucis avec liens hypertexte.

13 réponses
Avatar
Patrick BASTARD
Bonsoir à tous.

Mon classeur comporte une feuille "modèle" que je duplique par macro (une
copie de ce "modèle" pour chaque jour du mois).
J'utilise une plage relativement étendue, et ai choisi les liens hypertexte
pour me déplacer d'un endroit à un autre.

Sur "modèle", aucun problème.

Par contre, sur les onglets qui sont créés par copies de "modèle", (nommés
01.01.05, 02.01.05, etc...), les liens hypertexte sont bien dupliqués, mais
continuent de pointer sur les plages de "modèle".

J'ai une quarantaine de liens par onglet, 31 onglets, et me vois mal tout
réaffecter "à la mimine".

L'un d'entre vous a-t'il la solution, un lien à m'indiquer, un début de
piste ?

Je vous en remercie sincèrement par avance,

Et profite de l'occasion pour vous souhaiter ainsi qu' à vos proches et à
tous ceux qui vous sont chers...

Une Bonne et Heureuse Année 2005.

Patrick.

Version : Excel 2002, Windows XP.

10 réponses

1 2
Avatar
twinley
Bonsoir Patrick


Il y a dans Exelabo rubriques outils de très beaux exemples :

http://www.excelabo.net/xl/outils.php#sommairehyperlien

A défaut fait rechercher dans Exelabo sur le mot hypertexte

à+twinley



Patrick BASTARD wrote:
Bonsoir à tous.

Mon classeur comporte une feuille "modèle" que je duplique par macro (une
copie de ce "modèle" pour chaque jour du mois).
J'utilise une plage relativement étendue, et ai choisi les liens hypertexte
pour me déplacer d'un endroit à un autre.

Sur "modèle", aucun problème.

Par contre, sur les onglets qui sont créés par copies de "modèle", (nommés
01.01.05, 02.01.05, etc...), les liens hypertexte sont bien dupliqués, mais
continuent de pointer sur les plages de "modèle".

J'ai une quarantaine de liens par onglet, 31 onglets, et me vois mal tout
réaffecter "à la mimine".

L'un d'entre vous a-t'il la solution, un lien à m'indiquer, un début de
piste ?

Je vous en remercie sincèrement par avance,

Et profite de l'occasion pour vous souhaiter ainsi qu' à vos proches et à
tous ceux qui vous sont chers...

Une Bonne et Heureuse Année 2005.

Patrick.

Version : Excel 2002, Windows XP.




Avatar
Patrick BASTARD
Bonsoir, *twinley*
J'ai sauté sur ton post %
avec l'intéret que tu imagines :

Pour être court, j'ai omis de préciser que mon premier réflexe avant de
poster a été une recherche sur le site de Flo, et les liens qui y figurent,
le deuxième une recherche sur Google, mais sans succès dans les deux cas.

Il est vrai que ce problème est un peu particulier.

En tous cas, merci de ton aide.

A suivre ?...

Bien cordialement,

Patrick.


Il y a dans Exelabo rubriques outils de très beaux exemples :

http://www.excelabo.net/xl/outils.php#sommairehyperlien

A défaut fait rechercher dans Exelabo sur le mot hypertexte

à+twinley



Patrick BASTARD wrote:
Bonsoir à tous.

Mon classeur comporte une feuille "modèle" que je duplique par macro
(une copie de ce "modèle" pour chaque jour du mois).
J'utilise une plage relativement étendue, et ai choisi les liens
hypertexte pour me déplacer d'un endroit à un autre.

Sur "modèle", aucun problème.

Par contre, sur les onglets qui sont créés par copies de "modèle",
(nommés 01.01.05, 02.01.05, etc...), les liens hypertexte sont bien
dupliqués, mais continuent de pointer sur les plages de "modèle".

J'ai une quarantaine de liens par onglet, 31 onglets, et me vois mal
tout réaffecter "à la mimine".

L'un d'entre vous a-t'il la solution, un lien à m'indiquer, un début
de piste ?

Je vous en remercie sincèrement par avance,

Et profite de l'occasion pour vous souhaiter ainsi qu' à vos proches
et à tous ceux qui vous sont chers...

Une Bonne et Heureuse Année 2005.

Patrick.

Version : Excel 2002, Windows XP.




Avatar
docm
Bonjour Patrick.

Pour avoir la liste des hyperliens de la feuille active:
For Each xlink In ActiveSheet.Hyperlinks.
...
next

Pour modifier le premier hyperlien:
activesheet.Hyperlinks(1).SubAddress = ActiveSheet.Name & "!A1"

Amicalement


"Patrick BASTARD" wrote in message
news:
Bonsoir, *twinley*
J'ai sauté sur ton post %
avec l'intéret que tu imagines :

Pour être court, j'ai omis de préciser que mon premier réflexe avant de
poster a été une recherche sur le site de Flo, et les liens qui y
figurent,

le deuxième une recherche sur Google, mais sans succès dans les deux cas.

Il est vrai que ce problème est un peu particulier.

En tous cas, merci de ton aide.

A suivre ?...

Bien cordialement,

Patrick.


Il y a dans Exelabo rubriques outils de très beaux exemples :

http://www.excelabo.net/xl/outils.php#sommairehyperlien

A défaut fait rechercher dans Exelabo sur le mot hypertexte

à+twinley



Patrick BASTARD wrote:
Bonsoir à tous.

Mon classeur comporte une feuille "modèle" que je duplique par macro
(une copie de ce "modèle" pour chaque jour du mois).
J'utilise une plage relativement étendue, et ai choisi les liens
hypertexte pour me déplacer d'un endroit à un autre.

Sur "modèle", aucun problème.

Par contre, sur les onglets qui sont créés par copies de "modèle",
(nommés 01.01.05, 02.01.05, etc...), les liens hypertexte sont bien
dupliqués, mais continuent de pointer sur les plages de "modèle".

J'ai une quarantaine de liens par onglet, 31 onglets, et me vois mal
tout réaffecter "à la mimine".

L'un d'entre vous a-t'il la solution, un lien à m'indiquer, un début
de piste ?

Je vous en remercie sincèrement par avance,

Et profite de l'occasion pour vous souhaiter ainsi qu' à vos proches
et à tous ceux qui vous sont chers...

Une Bonne et Heureuse Année 2005.

Patrick.

Version : Excel 2002, Windows XP.








Avatar
Patrick BASTARD
Bonjour, *docm*
J'ai lu ton post OiI%
avec le plus grand intéret :

Je pense également que la solution passe par VBA, lors de la duplication du
modèle, à défaut -hélàs- de pouvoir sélectionner tous les liens d'un coup
pour les mettre à jour.

Je m'y colle. Avec l'enregistreur, ça devrait le faire.

Mille mercis, et bonne année,

Bien cordialement,

Patrick.



Pour avoir la liste des hyperliens de la feuille active:
For Each xlink In ActiveSheet.Hyperlinks.
...
next

Pour modifier le premier hyperlien:
activesheet.Hyperlinks(1).SubAddress = ActiveSheet.Name & "!A1"

Amicalement


Avatar
Patrick BASTARD
Bonjour, *docm*
Je reviens sur l'idée que tu m'as suggéré dans ton post
OiI%

Ce code :
**********************************
Sub hyperlien()
For n = 1 To 100
'Il y a moins de 100 hyperliens, mais je ne sais pas les compter par VBA :-(
'La macro plante, mais pas très grave, bien que pas très élégant
ActiveSheet.Hyperlinks(n).SubAddress = ActiveSheet.Name & "!A1"
Next n

End Sub
**********************************

redirige bien les liens sur la feuille courante,
mais je ne sais pas comment remplacer "!A1" (ou plutôt ne pas le remplacer)
: un exemple avec le premier lien :

Sur Modele : SubAddress:= '"Modele!L47:L53"
Sur Copie avant exécution de la macro : SubAddress:= '"Modele!L47:L53"
Sur Copie après exécution de la macro : SubAddress:= '"Copie!A1" (Normal,
c'est ce qe je lui demande)
Sur Copie ce que je souhaite : SubAddress:= "Copie!L47:L53"
...et là, je ne sais pas lui demander de ne pas remplacer L47:L53 (qui varie
d'un lien à l'autre) par A1

Si toi, ou un autre lecteur de bonne volonté pouvait me faire profiter de
ses lumières,
- soit pour récupérer l'adresse de la plage et l'inclure en variable dans le
code,
- soit pour ne modifier que le nom de la feuille dans chacun des liens,
ce serait super.

Merci par avance pour toutes les pistes, qui seront les bienvenues.

Bien cordialement,

Patrick.



Bonjour Patrick.

Pour avoir la liste des hyperliens de la feuille active:
For Each xlink In ActiveSheet.Hyperlinks.
...
next

Pour modifier le premier hyperlien:
activesheet.Hyperlinks(1).SubAddress = ActiveSheet.Name & "!A1"

Amicalement


"Patrick BASTARD" wrote in
message news:
Bonsoir, *twinley*
J'ai sauté sur ton post %
avec l'intéret que tu imagines :

Pour être court, j'ai omis de préciser que mon premier réflexe avant
de poster a été une recherche sur le site de Flo, et les liens qui y
figurent, le deuxième une recherche sur Google, mais sans succès
dans les deux cas.

Il est vrai que ce problème est un peu particulier.

En tous cas, merci de ton aide.

A suivre ?...

Bien cordialement,

Patrick.


Il y a dans Exelabo rubriques outils de très beaux exemples :

http://www.excelabo.net/xl/outils.php#sommairehyperlien

A défaut fait rechercher dans Exelabo sur le mot hypertexte

à+twinley



Patrick BASTARD wrote:
Bonsoir à tous.

Mon classeur comporte une feuille "modèle" que je duplique par
macro (une copie de ce "modèle" pour chaque jour du mois).
J'utilise une plage relativement étendue, et ai choisi les liens
hypertexte pour me déplacer d'un endroit à un autre.

Sur "modèle", aucun problème.

Par contre, sur les onglets qui sont créés par copies de "modèle",
(nommés 01.01.05, 02.01.05, etc...), les liens hypertexte sont bien
dupliqués, mais continuent de pointer sur les plages de "modèle".

J'ai une quarantaine de liens par onglet, 31 onglets, et me vois
mal tout réaffecter "à la mimine".

L'un d'entre vous a-t'il la solution, un lien à m'indiquer, un
début de piste ?

Je vous en remercie sincèrement par avance,

Et profite de l'occasion pour vous souhaiter ainsi qu' à vos
proches et à tous ceux qui vous sont chers...

Une Bonne et Heureuse Année 2005.

Patrick.

Version : Excel 2002, Windows XP.








Avatar
Michel Gaboly
Bonsoir Patrick,

Pour parcourir une collection, il y a la boucle For Each qui est bien
pratique.

Dans tes hyperliens, tu as dans chacune des feuilles obtenues par copie
une liaison vers la feuille copiée : au lieu que le lien pointe vers la
cellule A8, il pointe vers "Feuil1!A8", "Feuil1" étant à remplacer par
le nom de ta feuille modèle.

2 boucles imbriquées (une pour les feuilles, l'autre pour les hyperliens
au sein de chaque feuille) permettent de remplacer les liens vers la
feuille modèle par une chaine vide.

Aucun test n'est nécessaire pour appliquer un traitement particulier à
la feuille modèle : celle-ci ne contient pas de liason dans les
hyperliens, et la fonction Replace n'a donc aucun effet.


Sub MAJLiens()
Dim l As Hyperlink, f As Worksheet
For Each f In ActiveWorkbook.Sheets
For Each l In ActiveSheet.Hyperlinks
l.SubAddress = Replace(l.SubAddress, "Feuil1!", "")
Next l
Next f
End Sub

Si tu es sur Mac, ou sur une version antérieure à Excel 2000, la
fonction Replace n'est pas disponible. Il faut la remplacer par la
fonction de feuille de calcul SUBSTITUE() :

Application.WorksheetFuction.Substitute

à la plac de Replace.


Voilà, et bonne année.
Avatar
Patrick BASTARD
Bonsoir, Michel.

Je te remercie vivement de l'aide que tu m'apportes.
Un code prêt à servir, et avec les explications en plus !

La boucle fonctionne sans problème pour tous les liens de la feuille active,
mais ne semble pas couvrir toutes les feuilles du classeur. -et je ne
comprends pas pourquoi-.
J'ai testé en copiant ce code :
******************************
Sub MAJLiens()
Dim l As Hyperlink, f As Worksheet
For Each f In ActiveWorkbook.Sheets
For Each l In ActiveSheet.Hyperlinks
l.SubAddress = Replace(l.SubAddress, "Modèle!", "")
Next l
Next f
End Sub
******************************
dans un module standard et dans ThisWorkbook, et seuls les liens de la
feuille active sont corrigés.

Ce qui n'est pas si mal (litote), et qui me suffit amplement, car je vais
inclure ces lignes dans la boucle qui crée chaque feuille.

Une nouvelle fois, Merci,
Joyeux réveillon, et bonne année.

Bien cordialement,

Patrick.


Bonsoir Patrick,

Pour parcourir une collection, il y a la boucle For Each qui est bien
pratique.

Dans tes hyperliens, tu as dans chacune des feuilles obtenues par
copie une liaison vers la feuille copiée : au lieu que le lien pointe
vers la cellule A8, il pointe vers "Feuil1!A8", "Feuil1" étant à
remplacer par le nom de ta feuille modèle.

2 boucles imbriquées (une pour les feuilles, l'autre pour les
hyperliens au sein de chaque feuille) permettent de remplacer les
liens vers la feuille modèle par une chaine vide.

Aucun test n'est nécessaire pour appliquer un traitement particulier
à la feuille modèle : celle-ci ne contient pas de liason dans les
hyperliens, et la fonction Replace n'a donc aucun effet.


Sub MAJLiens()
Dim l As Hyperlink, f As Worksheet
For Each f In ActiveWorkbook.Sheets
For Each l In ActiveSheet.Hyperlinks
l.SubAddress = Replace(l.SubAddress, "Feuil1!",
"") Next l
Next f
End Sub

Si tu es sur Mac, ou sur une version antérieure à Excel 2000, la
fonction Replace n'est pas disponible. Il faut la remplacer par la
fonction de feuille de calcul SUBSTITUE() :

Application.WorksheetFuction.Substitute

à la plac de Replace.


Voilà, et bonne année.


Avatar
Michel Gaboly
Re,

C'était avec grand plaisir.

En principe cela marche dans un odule standard ; ThisWorkbook étant à
réserver aux procédures événementielles concernant le classeur et
éventuellement à des Sub ou des Function appelées par ces procédures.

Bonne année et joyeux réveillon.

Patrick BASTARD wrote:
Bonsoir, Michel.

Je te remercie vivement de l'aide que tu m'apportes.
Un code prêt à servir, et avec les explications en plus !

La boucle fonctionne sans problème pour tous les liens de la feuille active,
mais ne semble pas couvrir toutes les feuilles du classeur. -et je ne
comprends pas pourquoi-.
J'ai testé en copiant ce code :
******************************
Sub MAJLiens()
Dim l As Hyperlink, f As Worksheet
For Each f In ActiveWorkbook.Sheets
For Each l In ActiveSheet.Hyperlinks
l.SubAddress = Replace(l.SubAddress, "Modèle!", "")
Next l
Next f
End Sub
******************************
dans un module standard et dans ThisWorkbook, et seuls les liens de la
feuille active sont corrigés.

Ce qui n'est pas si mal (litote), et qui me suffit amplement, car je vais
inclure ces lignes dans la boucle qui crée chaque feuille.

Une nouvelle fois, Merci,
Joyeux réveillon, et bonne année.

Bien cordialement,

Patrick.



Bonsoir Patrick,

Pour parcourir une collection, il y a la boucle For Each qui est bien
pratique.

Dans tes hyperliens, tu as dans chacune des feuilles obtenues par
copie une liaison vers la feuille copiée : au lieu que le lien pointe
vers la cellule A8, il pointe vers "Feuil1!A8", "Feuil1" étant à
remplacer par le nom de ta feuille modèle.

2 boucles imbriquées (une pour les feuilles, l'autre pour les
hyperliens au sein de chaque feuille) permettent de remplacer les
liens vers la feuille modèle par une chaine vide.

Aucun test n'est nécessaire pour appliquer un traitement particulier
à la feuille modèle : celle-ci ne contient pas de liason dans les
hyperliens, et la fonction Replace n'a donc aucun effet.


Sub MAJLiens()
Dim l As Hyperlink, f As Worksheet
For Each f In ActiveWorkbook.Sheets
For Each l In ActiveSheet.Hyperlinks
l.SubAddress = Replace(l.SubAddress, "Feuil1!",
"") Next l
Next f
End Sub

Si tu es sur Mac, ou sur une version antérieure à Excel 2000, la
fonction Replace n'est pas disponible. Il faut la remplacer par la
fonction de feuille de calcul SUBSTITUE() :

Application.WorksheetFuction.Substitute

à la plac de Replace.


Voilà, et bonne année.






Michel Gaboly
www.gaboly.com


Avatar
docm
Bonne année à toi aussi.

"Patrick BASTARD" wrote in message
news:OpM$
Bonjour, *docm*
J'ai lu ton post OiI%
avec le plus grand intéret :

Je pense également que la solution passe par VBA, lors de la duplication
du

modèle, à défaut -hélàs- de pouvoir sélectionner tous les liens d'un coup
pour les mettre à jour.

Je m'y colle. Avec l'enregistreur, ça devrait le faire.

Mille mercis, et bonne année,

Bien cordialement,

Patrick.



Pour avoir la liste des hyperliens de la feuille active:
For Each xlink In ActiveSheet.Hyperlinks.
...
next

Pour modifier le premier hyperlien:
activesheet.Hyperlinks(1).SubAddress = ActiveSheet.Name & "!A1"

Amicalement






Avatar
FxM
Bonsoir,

Avec les deux lignes ...
For Each f In ActiveWorkbook.Sheets
For Each l In ActiveSheet.Hyperlinks
... l'activesheet reste inchangée


1e solution :
For Each f In ActiveWorkbook.Sheets
For Each l In f.Hyperlinks


2e solution :
For Each f In ActiveWorkbook.Sheets
f.activate

For Each l In ActiveSheet.Hyperlinks


Il y a un autre fil qui parle également des liens hypertexte. Tu y a
probablement déjà jeté un oeil.

@+
FxM






Bonsoir, Michel.

Je te remercie vivement de l'aide que tu m'apportes.
Un code prêt à servir, et avec les explications en plus !

La boucle fonctionne sans problème pour tous les liens de la feuille active,
mais ne semble pas couvrir toutes les feuilles du classeur. -et je ne
comprends pas pourquoi-.
J'ai testé en copiant ce code :
******************************
Sub MAJLiens()
Dim l As Hyperlink, f As Worksheet
For Each f In ActiveWorkbook.Sheets
For Each l In ActiveSheet.Hyperlinks
l.SubAddress = Replace(l.SubAddress, "Modèle!", "")
Next l
Next f
End Sub
******************************
dans un module standard et dans ThisWorkbook, et seuls les liens de la
feuille active sont corrigés.

Ce qui n'est pas si mal (litote), et qui me suffit amplement, car je vais
inclure ces lignes dans la boucle qui crée chaque feuille.

Une nouvelle fois, Merci,
Joyeux réveillon, et bonne année.

Bien cordialement,

Patrick.



Bonsoir Patrick,

Pour parcourir une collection, il y a la boucle For Each qui est bien
pratique.

Dans tes hyperliens, tu as dans chacune des feuilles obtenues par
copie une liaison vers la feuille copiée : au lieu que le lien pointe
vers la cellule A8, il pointe vers "Feuil1!A8", "Feuil1" étant à
remplacer par le nom de ta feuille modèle.

2 boucles imbriquées (une pour les feuilles, l'autre pour les
hyperliens au sein de chaque feuille) permettent de remplacer les
liens vers la feuille modèle par une chaine vide.

Aucun test n'est nécessaire pour appliquer un traitement particulier
à la feuille modèle : celle-ci ne contient pas de liason dans les
hyperliens, et la fonction Replace n'a donc aucun effet.


Sub MAJLiens()
Dim l As Hyperlink, f As Worksheet
For Each f In ActiveWorkbook.Sheets
For Each l In ActiveSheet.Hyperlinks
l.SubAddress = Replace(l.SubAddress, "Feuil1!",
"") Next l
Next f
End Sub

Si tu es sur Mac, ou sur une version antérieure à Excel 2000, la
fonction Replace n'est pas disponible. Il faut la remplacer par la
fonction de feuille de calcul SUBSTITUE() :

Application.WorksheetFuction.Substitute

à la plac de Replace.


Voilà, et bonne année.







1 2