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

Insérer un lien vers un fichier source dans en-tête

9 réponses
Avatar
Calou
Bonjour,

Quelqu'un peut-il m'aider rapidement ???
si j'ai des liaisons avec plusieurs fichiers, je voudrais dans mon fichier
principal, insérer dans le pied de page le nom du fichier source.
Est-ce possible ?
Faut-il faire une macro ?
Si oui, pouvez-vous m'indiquer comment faire, car à part créer des macros
automatiques, je ne connais pas.

Merci beaucoup pour votre aide
Calou

9 réponses

Avatar
FFO
Salut Calou
Je te propose cette macro :

For I = 1 To Sheets.Count
For Each c In Worksheets(I).Hyperlinks
n = n & c.Name & ";"
Next
Next
With Sheets("Onglet").PageSetup
.CenterFooter = n
End With

Penses à actualiser le mot Onglet du nom de ta feuille principale

Espérant avoir répondu à ton attente


Bonjour,

Quelqu'un peut-il m'aider rapidement ???
si j'ai des liaisons avec plusieurs fichiers, je voudrais dans mon fichier
principal, insérer dans le pied de page le nom du fichier source.
Est-ce possible ?
Faut-il faire une macro ?
Si oui, pouvez-vous m'indiquer comment faire, car à part créer des macros
automatiques, je ne connais pas.

Merci beaucoup pour votre aide
Calou


Avatar
LSteph
Bonjour,
Alt+F11 pour aller dans vbe
insère un module standard et colles le code ci après dedans
ensuite ferme vbe et appelle depuis la feuille active
du classeur contenant des liaisons fais Alt+F8 et execute.

'''''''''
Sub MetsLiensEnPiedPage()
Dim oLnk, myStr As String
myStr = "Documents Liés: " & vbCrLf
For Each oLnk In ThisWorkbook.LinkSources
myStr = myStr & CStr(oLnk) & vbCrLf
Next
ActiveSheet.PageSetup.LeftFooter = "&8" & myStr
ActiveSheet.PrintPreview 'Facultatif
End Sub
'''''''''

'Cordialement

'lSteph

Bonjour,

Quelqu'un peut-il m'aider rapidement ???
si j'ai des liaisons avec plusieurs fichiers, je voudrais dans mon fichier
principal, insérer dans le pied de page le nom du fichier source.
Est-ce possible ?
Faut-il faire une macro ?
Si oui, pouvez-vous m'indiquer comment faire, car à part créer des macros
automatiques, je ne connais pas.

Merci beaucoup pour votre aide
Calou


Avatar
LSteph
..en complément:
si selon objet et non post tu préfères en tête
remplace leftfooter par leftHeader

Attention le code donné fonctionne pour le classeur uniquement.
Si tu mets la macros dans perso pour traiter différents classeurs
il faut remplacer ThisWorkBook par ActiveWorkbook
ce qui donnerait:

'''''''''
Sub MetsLiensEnTetePage()
Dim oLnk, myStr As String
myStr = "Documents Liés: " & vbCrLf
For Each oLnk In ActiveWorkbook.LinkSources
myStr = myStr & CStr(oLnk) & vbCrLf
Next
ActiveSheet.PageSetup.Leftheader = "&8" & myStr
ActiveSheet.PrintPreview 'Facultatif
End Sub
'''''''''

'lSteph

Bonjour,

Quelqu'un peut-il m'aider rapidement ???
si j'ai des liaisons avec plusieurs fichiers, je voudrais dans mon fichier
principal, insérer dans le pied de page le nom du fichier source.
Est-ce possible ?
Faut-il faire une macro ?
Si oui, pouvez-vous m'indiquer comment faire, car à part créer des macros
automatiques, je ne connais pas.

Merci beaucoup pour votre aide
Calou


Avatar
Calou
Bonjour FFO et merci beaucoup pour ton idée.
Mais, comme je te l'ai dit je ne connais absolument pas les macros.
Donc, j'ai fait simplement un copier/coller de la tienne, et ai changé
simplement le nom de la feuille comme ci-dessous :

For I = 1 To Sheets.Count
For Each c In Worksheets(I).Hyperlinks
n = n & c.Name & ";"
Next
Next
With Sheets("Janvier").PageSetup
.CenterFooter = n
End With

Mais sans doute ai-je oublié quelque chose d'important car ça ne marche pas.
Dois-je donner le nom du fichier de destination ou la trouve-t-il justement
Que veut dire :
n = n & c.Name & ";"

En tout cas, merci pour tes infos
Caloué


Salut Calou
Je te propose cette macro :

For I = 1 To Sheets.Count
For Each c In Worksheets(I).Hyperlinks
n = n & c.Name & ";"
Next
Next
With Sheets("Onglet").PageSetup
.CenterFooter = n
End With

Penses à actualiser le mot Onglet du nom de ta feuille principale

Espérant avoir répondu à ton attente


Bonjour,

Quelqu'un peut-il m'aider rapidement ???
si j'ai des liaisons avec plusieurs fichiers, je voudrais dans mon fichier
principal, insérer dans le pied de page le nom du fichier source.
Est-ce possible ?
Faut-il faire une macro ?
Si oui, pouvez-vous m'indiquer comment faire, car à part créer des macros
automatiques, je ne connais pas.

Merci beaucoup pour votre aide
Calou




Avatar
Calou
Bonjour LSteph

Un grand merci pour ton aide... mais comme je ne suis pas douée en macro,
j'ai du faire une erreur quelque part car ça ne marche pas.
En fait, lorsque je lance la macro, elle s'arrête sur la ligne > For Each
oLnk In ThisWorkbook.LinkSources.
Pourtant, là aussi, j'ai fait un copier/coller.
Est-ce que je devais mentionner quelque part le nom du fichier lié, ou
est-ce que la macro peut aller chercher le nom directement dans la liaison.

Désolée de te faire perdre ton temps.
En tout cas, merci encore

Cordialement
Calou

Bonjour,
Alt+F11 pour aller dans vbe
insère un module standard et colles le code ci après dedans
ensuite ferme vbe et appelle depuis la feuille active
du classeur contenant des liaisons fais Alt+F8 et execute.

'''''''''
Sub MetsLiensEnPiedPage()
Dim oLnk, myStr As String
myStr = "Documents Liés: " & vbCrLf
For Each oLnk In ThisWorkbook.LinkSources
myStr = myStr & CStr(oLnk) & vbCrLf
Next
ActiveSheet.PageSetup.LeftFooter = "&8" & myStr
ActiveSheet.PrintPreview 'Facultatif
End Sub
'''''''''

'Cordialement

'lSteph

Bonjour,

Quelqu'un peut-il m'aider rapidement ???
si j'ai des liaisons avec plusieurs fichiers, je voudrais dans mon fichier
principal, insérer dans le pied de page le nom du fichier source.
Est-ce possible ?
Faut-il faire une macro ?
Si oui, pouvez-vous m'indiquer comment faire, car à part créer des macros
automatiques, je ne connais pas.

Merci beaucoup pour votre aide
Calou





Avatar
LSteph
Bonjour,
Quel est le message erreur?
Cette macro doit-être placée dans un module standard du classeur
concerné, sinon si tu la mets dans perso il faut dans le code utiliser
activeworkbook (classeur actif) et non thisworkbook(ce classeur qui
contient la macro)

Je commente si cela peut aider

'''''''''
Sub MetsLiensEnPiedPage()

'definition des variables
Dim oLnk, myStr As String
'olNk représentera une liaison et mystr une chaine de caractères


myStr = "Documents Liés: " & vbCrLf
'mystr commencera par le texte documents liés et un retour à la ligne

'initialisation de la boucle
For Each oLnk In ThisWorkbook.LinkSources
'pour chaque objetlien(olnk) dans les sources de liaisons de ce classeur
myStr = myStr & CStr(oLnk) & vbCrLf
'on ajoute à mystr ce lien sous forme de texte et retour à la ligne
Next
'Au suivant

'dans la mise en page de la feuille active
ActiveSheet.PageSetup.LeftFooter = "&8" & myStr
'on metdans le pied gauche en taille 8 le contenu de mystr

ActiveSheet.PrintPreview 'Facultatif
'on affiche l'aperçu de la feuille

End Sub
'''''''''

Bonjour LSteph

Un grand merci pour ton aide... mais comme je ne suis pas douée en macro,
j'ai du faire une erreur quelque part car ça ne marche pas.
En fait, lorsque je lance la macro, elle s'arrête sur la ligne > For Each
oLnk In ThisWorkbook.LinkSources.
Pourtant, là aussi, j'ai fait un copier/coller.
Est-ce que je devais mentionner quelque part le nom du fichier lié, ou
est-ce que la macro peut aller chercher le nom directement dans la liaison.

Désolée de te faire perdre ton temps.
En tout cas, merci encore

Cordialement
Calou

Bonjour,
Alt+F11 pour aller dans vbe
insère un module standard et colles le code ci après dedans
ensuite ferme vbe et appelle depuis la feuille active
du classeur contenant des liaisons fais Alt+F8 et execute.

'''''''''
Sub MetsLiensEnPiedPage()
Dim oLnk, myStr As String
myStr = "Documents Liés: " & vbCrLf
For Each oLnk In ThisWorkbook.LinkSources
myStr = myStr & CStr(oLnk) & vbCrLf
Next
ActiveSheet.PageSetup.LeftFooter = "&8" & myStr
ActiveSheet.PrintPreview 'Facultatif
End Sub
'''''''''

'Cordialement

'lSteph

Bonjour,

Quelqu'un peut-il m'aider rapidement ???
si j'ai des liaisons avec plusieurs fichiers, je voudrais dans mon fichier
principal, insérer dans le pied de page le nom du fichier source.
Est-ce possible ?
Faut-il faire une macro ?
Si oui, pouvez-vous m'indiquer comment faire, car à part créer des macros
automatiques, je ne connais pas.

Merci beaucoup pour votre aide
Calou






Avatar
Calou
Bonjour LSteph,

Tout d'abord, et avec un peu de retard, je m'en excuse, UN GRAND MERCI pour
tes explications. Je comprends mieux maintenant chaque ligne, et j'ai besoin
de comprendre ce que je fais.

Mais, il y a un mais, ça ne fonctionne toujours pas.

Lorsque je lance la macro, j'ai un message

"Erreur d'exécution 13
Incomptabilité de type".

J'ai bien créé la macro dans ThisWorkbook
J'ai désactivé la sécurité des macros, car ça bloquait au départ

et toujours rien.

Désolée de t'ennuyer avec ce problème, mais je commence à croire que je ne
suis vraiment pas douée pour les macros.

Peux-u m'expliquer STP

Merci beaucoup et bonne soirée
Calou



Bonjour,
Quel est le message erreur?
Cette macro doit-être placée dans un module standard du classeur
concerné, sinon si tu la mets dans perso il faut dans le code utiliser
activeworkbook (classeur actif) et non thisworkbook(ce classeur qui
contient la macro)

Je commente si cela peut aider

'''''''''
Sub MetsLiensEnPiedPage()

'definition des variables
Dim oLnk, myStr As String
'olNk représentera une liaison et mystr une chaine de caractères


myStr = "Documents Liés: " & vbCrLf
'mystr commencera par le texte documents liés et un retour à la ligne

'initialisation de la boucle
For Each oLnk In ThisWorkbook.LinkSources
'pour chaque objetlien(olnk) dans les sources de liaisons de ce classeur
myStr = myStr & CStr(oLnk) & vbCrLf
'on ajoute à mystr ce lien sous forme de texte et retour à la ligne
Next
'Au suivant

'dans la mise en page de la feuille active
ActiveSheet.PageSetup.LeftFooter = "&8" & myStr
'on metdans le pied gauche en taille 8 le contenu de mystr

ActiveSheet.PrintPreview 'Facultatif
'on affiche l'aperçu de la feuille

End Sub
'''''''''

Bonjour LSteph

Un grand merci pour ton aide... mais comme je ne suis pas douée en macro,
j'ai du faire une erreur quelque part car ça ne marche pas.
En fait, lorsque je lance la macro, elle s'arrête sur la ligne > For Each
oLnk In ThisWorkbook.LinkSources.
Pourtant, là aussi, j'ai fait un copier/coller.
Est-ce que je devais mentionner quelque part le nom du fichier lié, ou
est-ce que la macro peut aller chercher le nom directement dans la liaison.

Désolée de te faire perdre ton temps.
En tout cas, merci encore

Cordialement
Calou

Bonjour,
Alt+F11 pour aller dans vbe
insère un module standard et colles le code ci après dedans
ensuite ferme vbe et appelle depuis la feuille active
du classeur contenant des liaisons fais Alt+F8 et execute.

'''''''''
Sub MetsLiensEnPiedPage()
Dim oLnk, myStr As String
myStr = "Documents Liés: " & vbCrLf
For Each oLnk In ThisWorkbook.LinkSources
myStr = myStr & CStr(oLnk) & vbCrLf
Next
ActiveSheet.PageSetup.LeftFooter = "&8" & myStr
ActiveSheet.PrintPreview 'Facultatif
End Sub
'''''''''

'Cordialement

'lSteph

Bonjour,

Quelqu'un peut-il m'aider rapidement ???
si j'ai des liaisons avec plusieurs fichiers, je voudrais dans mon fichier
principal, insérer dans le pied de page le nom du fichier source.
Est-ce possible ?
Faut-il faire une macro ?
Si oui, pouvez-vous m'indiquer comment faire, car à part créer des macros
automatiques, je ne connais pas.

Merci beaucoup pour votre aide
Calou









Avatar
LSteph
Bonsoir Calou,
je vois seulement ton message maintenant même si c'est un peu loin , je
reviens parfois voir (mais faudrait que je me trouve un système d'alerte
si qqu'un revient sur un sujet sur lequel je me suis lancé)

J'ai bien créé la macro dans ThisWorkbook
Ce n'est pas exactement cela que j'indiquais mais je comprends bien

pourquoi, il est vrai que j'ai parlé de Thisworkbook en tant
qu'expression dans le code qui doit être remplacée par activeworkbook si
le code est placé dans un autre classeur que celui sur lequel on veut
executer la macro
Reprends le truc selon cette formulation plus précise que j'avais proposé:

insère un module standard et colles le code ci après dedans





Comme la ficelle date un peu
Tu peux me contacter directement sur cocosteph le truc qui se met au
milieu pour faire une adresse messagerie et après on met free.fr

Pour respecter le principe du forum, si cela doit changer dans le code
proposé, on le remettra après sur ce fil.

@+

lSteph


Bonjour LSteph,

Tout d'abord, et avec un peu de retard, je m'en excuse, UN GRAND MERCI pour
tes explications. Je comprends mieux maintenant chaque ligne, et j'ai besoin
de comprendre ce que je fais.

Mais, il y a un mais, ça ne fonctionne toujours pas.

Lorsque je lance la macro, j'ai un message

"Erreur d'exécution 13
Incomptabilité de type".

J'ai bien créé la macro dans ThisWorkbook
J'ai désactivé la sécurité des macros, car ça bloquait au départ

et toujours rien.

Désolée de t'ennuyer avec ce problème, mais je commence à croire que je ne
suis vraiment pas douée pour les macros.

Peux-u m'expliquer STP

Merci beaucoup et bonne soirée
Calou



Bonjour,
Quel est le message erreur?
Cette macro doit-être placée dans un module standard du classeur
concerné, sinon si tu la mets dans perso il faut dans le code utiliser
activeworkbook (classeur actif) et non thisworkbook(ce classeur qui
contient la macro)

Je commente si cela peut aider

'''''''''
Sub MetsLiensEnPiedPage()

'definition des variables
Dim oLnk, myStr As String
'olNk représentera une liaison et mystr une chaine de caractères


myStr = "Documents Liés: " & vbCrLf
'mystr commencera par le texte documents liés et un retour à la ligne

'initialisation de la boucle
For Each oLnk In ThisWorkbook.LinkSources
'pour chaque objetlien(olnk) dans les sources de liaisons de ce classeur
myStr = myStr & CStr(oLnk) & vbCrLf
'on ajoute à mystr ce lien sous forme de texte et retour à la ligne
Next
'Au suivant

'dans la mise en page de la feuille active
ActiveSheet.PageSetup.LeftFooter = "&8" & myStr
'on metdans le pied gauche en taille 8 le contenu de mystr

ActiveSheet.PrintPreview 'Facultatif
'on affiche l'aperçu de la feuille

End Sub
'''''''''

Bonjour LSteph

Un grand merci pour ton aide... mais comme je ne suis pas douée en macro,
j'ai du faire une erreur quelque part car ça ne marche pas.
En fait, lorsque je lance la macro, elle s'arrête sur la ligne > For Each
oLnk In ThisWorkbook.LinkSources.
Pourtant, là aussi, j'ai fait un copier/coller.
Est-ce que je devais mentionner quelque part le nom du fichier lié, ou
est-ce que la macro peut aller chercher le nom directement dans la liaison.

Désolée de te faire perdre ton temps.
En tout cas, merci encore

Cordialement
Calou

Bonjour,
Alt+F11 pour aller dans vbe
insère un module standard et colles le code ci après dedans
ensuite ferme vbe et appelle depuis la feuille active
du classeur contenant des liaisons fais Alt+F8 et execute.

'''''''''
Sub MetsLiensEnPiedPage()
Dim oLnk, myStr As String
myStr = "Documents Liés: " & vbCrLf
For Each oLnk In ThisWorkbook.LinkSources
myStr = myStr & CStr(oLnk) & vbCrLf
Next
ActiveSheet.PageSetup.LeftFooter = "&8" & myStr
ActiveSheet.PrintPreview 'Facultatif
End Sub
'''''''''

'Cordialement

'lSteph

Bonjour,

Quelqu'un peut-il m'aider rapidement ???
si j'ai des liaisons avec plusieurs fichiers, je voudrais dans mon fichier
principal, insérer dans le pied de page le nom du fichier source.
Est-ce possible ?
Faut-il faire une macro ?
Si oui, pouvez-vous m'indiquer comment faire, car à part créer des macros
automatiques, je ne connais pas.

Merci beaucoup pour votre aide
Calou










Avatar
Calou
Bonsoir LSetph,

Tu es un GENIE. Cà marche.
Merci beaucoup pour ta patience et tes explications.

A+
Calou


Bonsoir Calou,
je vois seulement ton message maintenant même si c'est un peu loin , je
reviens parfois voir (mais faudrait que je me trouve un système d'alerte
si qqu'un revient sur un sujet sur lequel je me suis lancé)

J'ai bien créé la macro dans ThisWorkbook
Ce n'est pas exactement cela que j'indiquais mais je comprends bien

pourquoi, il est vrai que j'ai parlé de Thisworkbook en tant
qu'expression dans le code qui doit être remplacée par activeworkbook si
le code est placé dans un autre classeur que celui sur lequel on veut
executer la macro
Reprends le truc selon cette formulation plus précise que j'avais proposé:

insère un module standard et colles le code ci après dedans





Comme la ficelle date un peu
Tu peux me contacter directement sur cocosteph le truc qui se met au
milieu pour faire une adresse messagerie et après on met free.fr

Pour respecter le principe du forum, si cela doit changer dans le code
proposé, on le remettra après sur ce fil.

@+

lSteph


Bonjour LSteph,

Tout d'abord, et avec un peu de retard, je m'en excuse, UN GRAND MERCI pour
tes explications. Je comprends mieux maintenant chaque ligne, et j'ai besoin
de comprendre ce que je fais.

Mais, il y a un mais, ça ne fonctionne toujours pas.

Lorsque je lance la macro, j'ai un message

"Erreur d'exécution 13
Incomptabilité de type".

J'ai bien créé la macro dans ThisWorkbook
J'ai désactivé la sécurité des macros, car ça bloquait au départ

et toujours rien.

Désolée de t'ennuyer avec ce problème, mais je commence à croire que je ne
suis vraiment pas douée pour les macros.

Peux-u m'expliquer STP

Merci beaucoup et bonne soirée
Calou



Bonjour,
Quel est le message erreur?
Cette macro doit-être placée dans un module standard du classeur
concerné, sinon si tu la mets dans perso il faut dans le code utiliser
activeworkbook (classeur actif) et non thisworkbook(ce classeur qui
contient la macro)

Je commente si cela peut aider

'''''''''
Sub MetsLiensEnPiedPage()

'definition des variables
Dim oLnk, myStr As String
'olNk représentera une liaison et mystr une chaine de caractères


myStr = "Documents Liés: " & vbCrLf
'mystr commencera par le texte documents liés et un retour à la ligne

'initialisation de la boucle
For Each oLnk In ThisWorkbook.LinkSources
'pour chaque objetlien(olnk) dans les sources de liaisons de ce classeur
myStr = myStr & CStr(oLnk) & vbCrLf
'on ajoute à mystr ce lien sous forme de texte et retour à la ligne
Next
'Au suivant

'dans la mise en page de la feuille active
ActiveSheet.PageSetup.LeftFooter = "&8" & myStr
'on metdans le pied gauche en taille 8 le contenu de mystr

ActiveSheet.PrintPreview 'Facultatif
'on affiche l'aperçu de la feuille

End Sub
'''''''''

Bonjour LSteph

Un grand merci pour ton aide... mais comme je ne suis pas douée en macro,
j'ai du faire une erreur quelque part car ça ne marche pas.
En fait, lorsque je lance la macro, elle s'arrête sur la ligne > For Each
oLnk In ThisWorkbook.LinkSources.
Pourtant, là aussi, j'ai fait un copier/coller.
Est-ce que je devais mentionner quelque part le nom du fichier lié, ou
est-ce que la macro peut aller chercher le nom directement dans la liaison.

Désolée de te faire perdre ton temps.
En tout cas, merci encore

Cordialement
Calou

Bonjour,
Alt+F11 pour aller dans vbe
insère un module standard et colles le code ci après dedans
ensuite ferme vbe et appelle depuis la feuille active
du classeur contenant des liaisons fais Alt+F8 et execute.

'''''''''
Sub MetsLiensEnPiedPage()
Dim oLnk, myStr As String
myStr = "Documents Liés: " & vbCrLf
For Each oLnk In ThisWorkbook.LinkSources
myStr = myStr & CStr(oLnk) & vbCrLf
Next
ActiveSheet.PageSetup.LeftFooter = "&8" & myStr
ActiveSheet.PrintPreview 'Facultatif
End Sub
'''''''''

'Cordialement

'lSteph

Bonjour,

Quelqu'un peut-il m'aider rapidement ???
si j'ai des liaisons avec plusieurs fichiers, je voudrais dans mon fichier
principal, insérer dans le pied de page le nom du fichier source.
Est-ce possible ?
Faut-il faire une macro ?
Si oui, pouvez-vous m'indiquer comment faire, car à part créer des macros
automatiques, je ne connais pas.

Merci beaucoup pour votre aide
Calou