Générer des liens hypertexte automatiquement

  • Initiateur de la discussion Initiateur de la discussion Brigitte
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Brigitte

XLDnaute Barbatruc
Bonjour,

Je sais que le sujet a déjà été traité, mais je ne parviens pas à "monter" la formule de JB :

LIEN_HYPERTEXTE("[classeur1.xls]'feuil1'!A1";"Classeur1")

Car il doit y avoir un indirect à rajouter... vu que j'ai le numéro de ligne.

Quelqu'un pourrait il m'aider à générer des liens hypertexte automatiquement. J'ai plus de 800 liens à créer, j'ai en première colonne le numéro de ligne... Reste à pointer vers elle dans le premier onglet.

Merci à vous.

PS : le fichier etait volontairement très réduit, pour tenir ici.


Modif 03/05/11

Retrait du fichier à la demande d'une personne dont le nom (sans aucune indication confidentielle) y figurait. Désolée.
 
Dernière édition:
Re : Générer des liens hypertexte automatiquement

Bonjour,

Voir PJ (le fichier doit d'abord être enregistré)

=LIEN_HYPERTEXTE("["&STXT(CELLULE("filename";$A$1);TROUVE("[";CELLULE("filename";$A$1))+1;TROUVE("]";
CELLULE("filename";$A$1))-TROUVE("[";CELLULE("filename";$A$1))-1)&"]'archives historique'!a" &A2;D2)

Pour éviter la colonne A, on peut créer les hyperliens par VBA

JB
 

Pièces jointes

Re : Générer des liens hypertexte automatiquement

Bonjour Brigitte.
Je suggère quelques lignes de VBA placées dans un module standard :
Code:
Option Explicit

Sub LienInterne()
Dim i As Long
    With Sheets("GRH")
        For i = 2 To .Cells(.Rows.Count, 4).End(xlUp).Row
            .Cells(i, 4).Hyperlinks.Add Anchor:=.Cells(i, 4), Address:="", SubAddress:= _
                "'ARCHIVES Historique'!A" & .Cells(i, 1).Value, TextToDisplay:=.Cells(i, 4).Value
        Next i
    End With
End Sub
À vérifier... Ça fonctionne dans votre classeur d'essai.​
Bonne soirée,
ROGER2327
 
Re : Générer des liens hypertexte automatiquement

Merci JB, c'est tout à fait nickel.
Petite question, comme j'ai, pour des raisons pratiques, conservé la colonne A (on a besoin de connaître ce numéro pour faire autre chose)... j'ai le souci suivant :

- J'ai recopié (collage valeurs) les données de la colonne A en G
- J'ai mis ta formule en colonne A :

=LIEN_HYPERTEXTE("["&STXT(CELLULE("filename";$A$1);TROUVE("[";CELLULE("filename";$A$1))+1;TROUVE("]";
CELLULE("filename";$A$1))-TROUVE("[";CELLULE("filename";$A$1))-1)&"]'Archives - Historique'!A" &G2;G2)

- les liens sont tous créés (super)

Mais maintenant j'aimerais supprimer la colonne qui m'a servi pour cette formule, la colonne G, comment faire (bien sûr je peux la masquer, mais bon...) car elle est utilisée dans la formule et bien sûr copier/collage valeur sur la colonne A enlèvera les liens. Comment figer les liens sans plus avoir cette colonne intermédiaire ?

Merci encore
 
Re : Générer des liens hypertexte automatiquement

-Avec la formule, on ne peut pas supprimer la colonne A.
-Voir Création hyper ( sans colonne A)

Code:
Sub hyper()
  For Each c In Range("D2:D" & [D65000].End(xlUp).Row)
    nom = c.Value
    Set result = Sheets("ARCHIVES Historique").Range("G:G").Find(What:=nom, LookIn:=xlValues)
    If Not result Is Nothing Then
      ligne = result.Row
      f = "ARCHIVES Historique"
      ActiveSheet.Hyperlinks.Add Anchor:=Cells(c.Row, "h"), _
       Address:="", SubAddress:="'" & f & "'" & "!A" & ligne, TextToDisplay:=nom
    End If
  Next c
End Sub



JB
 

Pièces jointes

Dernière édition:
Re : Générer des liens hypertexte automatiquement

Re,

Merci JB et Roger.

Roger : ca fonctionne mais je veux absolument faire mes liens en colonne A à partir de A. Question présentation, en plusss, je trouve ca plus joli à l'oeil et le numéro de ligne m'est utile pour autre chose.

JB : en effet, ce qui m'embête est de l'avoir deux fois, je regarde ta macro.
 
Re : Générer des liens hypertexte automatiquement

Re,

Bon et bien comme je veux conserver le lien sur la colonne A sur le numéro de ligne, je vais rester sur la formule, mais c'est bien dommage que je ne puisse mettre, en dur, dans cette colonne le numéro en question pour pouvoir supprimer la colonne ensuite.

Même avec indirect, on ne peut pas ?
 
Re : Générer des liens hypertexte automatiquement

Re merci...

Mais je voudrais, au lieu du nom, le numéro... car là ca me donne deux fois le nom... Ce serait plus discret et utile (besoin de ce numéro pour faire autre chose).

Si je peux encore abuser...

Ex :

6215 2009-2 1 Merceron....
6215 2009-2 1 Guihard
...
6216 2009-2 2 Gourier

Voilà le résultat que j'adorerais obtenir.
 
Re : Générer des liens hypertexte automatiquement

Bonsoir à tous,
Arrangé ainsi, est-ce cela ?
Code:
Option Explicit

Sub LienInterne()
Dim i As Long
    With Sheets("GRH")
        For i = 2 To .Cells(.Rows.Count, 4).End(xlUp).Row
            .Cells(i, 4).Hyperlinks.Add Anchor:=.Cells(i, 1), Address:="", SubAddress:= _
                "'ARCHIVES Historique'!A" & .Cells(i, 1).Value, TextToDisplay:=.Cells(i, 4).Value
        Next i
    End With
End Sub
ROGER2327
 
Re : Générer des liens hypertexte automatiquement

Re,

Oui, c'est tout à fait ca... Je n'ai qu'à coller ca dans un module standard dans mon fichier ?

Car en fait, j'ai à l'exécuter là une fois, puis ensuite, je n'aurais plus que qq liens par ci par là... C'est surtout pour cette grosse opération que ca me sera utile... Et donc ca me gênait de traîner, même masquée, cette colonne supplémentaire nécessaire pour la formule.

Merci beaucoup, je vais tenter de bien faire.
 
Re : Générer des liens hypertexte automatiquement

Re,

C'est nickel, tout à fait ca, ca y est c'est fait. Je vais, en fait garder cette macro, même si la suite est du "pipi de chat" à côté de cette génération de 800 liens.

Merci beaucoup.

Tant que j'y suis, j'ai une petite question qui n'a rien à voir...

Dans ce classeur, j'ai une macro dans this Workbook afin qu'à l'ouverture, il s'ouvre sur la feuille Archives Historique.

Private Sub Workbook_Open()
' Activer la première feuille
Worksheets("ARCHIVES - Historique").Activate
Application.ScreenUpdating = False
Range("a1").AutoFilter
Application.ScreenUpdating = True

End Sub

J'ai une autre feuille nommée GRH (comme dans ce fil) qu'il convient de masquer à la fermeture (ou à l'ouverture peu importe) SI elle n'est pas masquée (elle peut l'être).

J'ai donc fait une macro (avec l'enregistreur) qui me permet de la masquer... mais cela bugge avec la première. Car si par mésaventure, la feuille a été masquée "à la main"... ca va pas.

J'ai en effet ces deux macros toutes bêtes :

Sub CacheGRH()
'
' CacheGRH Macro
' Macro enregistrée le 02/03/2009 par ruet
'
'
Sheets("GRH").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("ARCHIVES - Historique").Select
End Sub
Sub MontreGRH()
'
' MontreGRH Macro
' Macro enregistrée le 02/03/2009 par ruet
'
'
Sheets("GRH").Visible = True
End Sub

Comment associer le masquage si et seulement si à la fermeture (ou ouverture) elle est apparente ? Un petit if, certainement, mais où le mettre, par exemple dans la macro Private Sub Workbook_Open ou alors dans une macro indépendante BeforeClose mais qui contrarierait pas la première ?

Merci encore.
 
Re : Générer des liens hypertexte automatiquement

Re,

Je viens de faire un essai qui semble concluant, même si pas très orthodoxe, probablement, vu que je fais ça au p'tit bonheur :

Private Sub Workbook_Open()
' Activer la première feuille
Worksheets("ARCHIVES - Historique").Activate
Application.ScreenUpdating = False
Range("a1").AutoFilter
Application.ScreenUpdating = True
Sheets("GRH").Visible = False
End Sub

J'ai mis en propriété de la feuille GRH : veryhidden, sans savoir si c'est nécessaire, en revanche.

Voilà voilà.
 
Re : Générer des liens hypertexte automatiquement

-C'est le select qui provoque l'erreur.
-Le test n'est pas nécessaire. Si GRH est déjà cachée, elle le restera.
-Pour être sûr que GRH soit cachée, il est préférable de le faire à la sauvegarde. A l'ouverture, les macros peuvent être désactivées.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Sheets("GRH").Visible = False
End Sub

JB
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
4 K
Compte Supprimé 979
C
Retour