FAQ Excel
FAQ ExcelConsultez toutes les FAQ
Nombre d'auteurs : 46, nombre de questions : 845, dernière mise à jour : 30 mars 2022
- Comment ouvrir un document Word sur une page précise ?
- Comment ajouter un lien hypertexte ?
- Comment déclencher le lien hypertexte contenu dans une cellule ?
- Comment extraire les liens hypertextes ?
- Comment imprimer la page active et les tous les classeurs liés ?
- Comment créer un lien email dans une cellule ?
- Comment tester si l'hyperlien d'une cellule mène vers un fichier existant sur le PC ?
- Comment ouvrir l'explorateur Windows sur le répertoire contenant le classeur, sans macro ?
- Comment désactiver le formatage automatique des cellules en lien web ?
- Comment créer un lien hypertexte vers une feuille graphique ?
- Comment utiliser la fonction LIEN_HYPERTEXTE ?
- Comment remplacer un terme dans tous les liens d'une feuille ?
- Comment forcer l'affichage des liens entre feuilles en haut de la page ?
- Comment modifier le texte qui s'affiche dans la cellule, sans affecter le lien hypertexte ?
Ajoutez un signet dans le document Word, à l'emplacement souhaité, puis fermez le fichier.
Ensuite, lors de la création du lien hypertexte dans Excel, spécifiez le nom du signet à atteindre.
Exemple:
C:\Dossier\MonFichier.doc#NomDuSignet
Le document Word s'ouvrira directement à l'emplacement du signet lorsque vous cliquerez su le lien hypertexte.
La même opération, pour ouvrir un fichier Word par macro et atteindre un signet :
ThisWorkbook.FollowHyperlink
"C:\Dossier\MonFichier.doc#NomDuSignet"
, , True
On peut ajouter un lien indifféremment à un objet ou à une plage.
Dim
objLink As
Hyperlink
Set
objLink =
ActiveSheet.Hyperlinks.Add
(
Range
(
"F2"
), "d:\user\tuto.xls"
)
With
objLink
.SubAddress
=
"A1:C10"
.Follow
NewWindow:=
True
End
With
Ce code crée le lien est ouvre une nouvelle fenêtre contenant la cible. Astuce : Lorsqu'on modifie la cible d'un lien existant on ne modifie pas le texte du lien. Pour que celui-ci change, il faut modifier la propriété value de la cellule contenant le lien :
objLink.Address
=
"d:\jmarc.xls"
objLink.Range.Value
=
"d:\jmarc.xls"
Sub
Test
(
)
DeclencheLien Range
(
"A1"
)
End
Sub
Sub
DeclencheLien
(
Cellule As
Range)
'Vérifie si la cellule contient un lien
If
Cellule.Hyperlinks.Count
=
0
Then
MsgBox
"il n'y a pas de lien hypertexte dans la cellule "
&
Cellule.Address
Else
'Déclenche le lien
Cellule.Hyperlinks
(
1
).Follow
NewWindow:=
True
End
If
End
Sub
La procédure suivante extrait les liens hypertextes contenus dans la colonne A.
Les adresses s'inscrivent à coté, dans la colonne B.
Sub
ExtractionLiensHypertextes
(
)
Dim
Cell As
Range
Dim
Ligne As
Integer
'Récupère le numéro de la dernière ligne non vide
Ligne =
Columns
(
1
).SpecialCells
(
xlCellTypeLastCell).Row
'Boucle sur les cellules de la colonne A
For
Each
Cell In
Range
(
"A1:A"
&
Ligne)
If
Cell.Hyperlinks.Count
>
0
Then
_
Cell.Offset
(
0
, 1
) =
Cell.Hyperlinks
(
1
).Address
Next
Cell
End
Sub
Cette macro boucle sur les liens de la feuille active et ouvre le fichier lié s'il s'agit d'un classeur.
Chaque feuille de ce classeur est ensuite imprimée.
Sub
imprimerPageActiveEt_Liensclasseurs
(
)
Dim
Lien As
Hyperlink
Dim
I As
Byte
Application.ScreenUpdating
=
False
'Imprime la feuille active
ActiveSheet.PrintOut
'Boucle sur les liens de la feuille active
For
Each
Lien In
ActiveSheet.Hyperlinks
'Vérifie si le lien correspond à un classeur
If
Right
(
Range
(
Lien.Range.Address
).Hyperlinks
(
1
).Address
, 4
) =
".xls"
Then
'Déclenche le lien pour ouvrir le classeur
Range
(
Lien.Range.Address
).Hyperlinks
(
1
).Follow
NewWindow:=
False
'Imprime le classeur
ActiveWorkbook.PrintOut
'Referme le classeur
ActiveWorkbook.Close
End
If
Next
Application.ScreenUpdating
=
True
End
Sub
Saisissez l'adresse de messagerie dans une cellule et appuyez sur la touche Entrée.
Le lien est créé automatiquement.
Si ce n'est pas le cas, faites un clic droit dans la cellule.
Sélectionnez l'option "Lien hypertexte" dans le menu contextuel.
Saisissez le mail dans le champ Adresse.
Cliquez sur le bouton OK pour valider.
(Le texte mailto: s'ajoute automatiquement lorsque vous saisissez
le symbole @.)
La même action par macro :
Sub
CreationLienMail
(
)
With
ActiveSheet
.Range
(
"A1"
) =
"La description"
.Hyperlinks.Add
.Range
(
"A1"
), Address:=
"mailto:mimi@mail.fr"
End
With
End
Sub
Sub
Test
(
)
'Vérifie si le lien hypertexte contenu dans la cellule A1
'correspond à un fichier existant sur le PC.
'Renvoie Vrai ou Faux.
MsgBox
VerifHyperlink
(
Range
(
"A1"
))
End
Sub
Function
VerifHyperlink
(
Cellule As
Range) As
Boolean
Dim
Cible As
String
'Vérifie si la cellule contient un lien hypertexte
If
Cellule.Hyperlinks.Count
=
0
Then
VerifHyperlink =
False
Exit
Function
End
If
'Extrait l'adresse du lien
Cible =
Cellule.Hyperlinks
(
1
).Address
'Vérifie si le fichier existe.
'(Ne fonctionne pas pour les liens web).
If
Dir
(
Cible) <>
""
And
Cible <>
""
Then
VerifHyperlink =
True
Else
VerifHyperlink =
False
End
If
End
Function
Placez cette formule dans la cellule de votre choix.
Le classeur doit être préalablement sauvegardé pour que ça fonctionne.
=LIEN_HYPERTEXTE
(GAUCHE
(CELLULE
("filename"
);CHERCHE
("["
;CELLULE
("filename"
);1
)-2
);"Lien vers le répertoire"
)
Lorsque vous saisissez des liens html ou des adresses mail dans une cellule, ils sont par défaut automatiquement transformés en lien cliquable.
Pour qu'Excel ne formate pas les cellules comme des liens web :
Utilisez le menu outils.
Options de correction automatique.
Pour la version Excel 2007 :
Cliquez sur le bouton "Office", puis sur le bouton "Options Excel".
Menu "Vérification".
Cliquez sur le bouton "Options de vérification automatique".
La boîte de dialogue "Correction automatique" s'affiche à l'écran.
Dans l'onglet "Mise en forme automatique au cours de la frappe", décochez l'option "Adresse internet et réseau avec des liens hypertexte".
Cliquez sur le bouton OK pour valider.
Désormais, les liens html et les adresses mails sont considérés comme de simples textes.
Ce n'est pas possible directement car une feuille graphique ne contient pas de cellule à lier.
Une solution de substitution consiste à créer le lien vers une cellule d'un autre onglet et cette cellule
contiendra le nom de la feuille graphique. Ensuite, dans le module objet de l'onglet contenant la cellule de
destination, ajoutez cette macro évènementielle :
Private
Sub
Worksheet_SelectionChange
(
ByVal
Target As
Range)
Dim
Ch As
Chart
If
Not
Intersect
(
Target, Range
(
"A1"
)) Is
Nothing
Then
On
Error
Resume
Next
Set
Ch =
Charts
(
Target.Value
)
On
Error
GoTo
0
'Active le feuille graphique si elle existe.
If
Not
Ch Is
Nothing
Then
Charts
(
Target.Value
).Activate
End
If
End
Sub
Le lien va atteindre la cellule et l'évènement SelectionChange redirige automatiquement vers le graphique, dont le nom est saisi dans la cellule. Ici, le lien doit pointer vers la cellule A1.
Cette fonction permet d'ouvrir un autre fichier et/ou d'atteindre un emplacement particulier.
=LIEN_HYPERTEXTE
("C:\dossier\test.pdf"
;"Cliquez ici !"
)
=LIEN_HYPERTEXTE
("C:\dossier\NomClasseur.xls"
;"Cliquez ici !"
)
=LIEN_HYPERTEXTE
("https://www.developpez.com/"
;"Cliquez ici !"
)
Vous pouvez indiquer un nom de serveur UNC :
=HYPERLINK
("\\NomServeur\dossier\NomClasseur.xls"
;"Cliquez ici !"
)
Pour ouvrir un classeur et atteindre une cellule particulière :
=LIEN_HYPERTEXTE
("C:\dossier\NomClasseur.xls#'Feuil1'!G50"
;"Cliquez ici !"
)
Pour atteindre une cellule ou une plage nommée :
=LIEN_HYPERTEXTE
("[C:\dossier\NomClasseur.xls]NomTest"
;"Cliquez ici !"
)
Si vous souhaitez créer un lien hypertexte vers un emplacement précis dans un document Microsoft Word,
utilisez un signet pour définir cet emplacement. L'exemple suivant crée un lien hypertexte vers le signet "Signet1"
dans le document nommé monFichier.doc
=LIEN_HYPERTEXTE
("C:\monFichier.doc#Signet1"
;"Cliquez ici"
)
Accéder à la cellule D10 dans la Feuil2, du même classeur :
=LIEN_HYPERTEXTE
("[monClasseur]Feuil2!D10"
;"Mon lien hypertexte"
)
3 Remarques:
Même si vous restez dans le même classeur, précisez son nom.
Si le nom de la feuille contient un espace , le nom doit être encadré par des apostrophes :
=LIEN_HYPERTEXTE
("[monClasseur.xls]'ma feuille'!D10"
;"Mon lien hypertexte"
)
Si le nom du classeur est amené à changer dans le temps vous pouvez utiliser :
=LIEN_HYPERTEXTE("["&STXT(CELLULE("nomfichier"); TROUVE("["; CELLULE("nomfichier"))+1;TROUVE("]"; CELLULE("nomfichier"))- TROUVE("[";
CELLULE("nomfichier"))-1)&"]'ma feuille'!D10";"Mon lien hypertexte")
Ce code remplace le terme ".fr" par ".com" dans tous les liens hypertextes de la Feuil1.
Dim
Hpk As
Hyperlink
Dim
strLien As
String
For
Each
Hpk In
Worksheets
(
"Feuil1"
).Hyperlinks
strLien =
Hpk.Address
Hpk.Address
=
Replace
(
strLien, ".fr"
, ".com"
)
Next
Hpk
Lorsqu'un lien renvoie vers un emplacement d'une autre feuille du classeur, la cellule de destination apparait en général en bas de la page. Ajoutez cette procédure dans le module objet ThisWorkbook pour forcer l'affichage en haut de la page.
Private
Sub
Workbook_SheetFollowHyperlink
(
ByVal
Sh As
Object, ByVal
Target As
Hyperlink)
On
Error
Resume
Next
If
IsObject
(
Range
(
Target.SubAddress
)) Then
_
Application.Goto
Reference:=
Range
(
Target.SubAddress
), Scroll:=
True
End
Sub
Vous pouvez utiliser la propriété TextToDisplay.
Cet exemple vérifie si la cellule A1 contient un lien hypertexte et change le texte qui s'affiche
dans la cellule, sans modifier le lien.
If
Range
(
"A1"
).Hyperlinks.Count
>
0
Then
_
Range
(
"A1"
).Hyperlinks
(
1
).TextToDisplay
=
"Nouveau texte"