macro pour créer des liens hypertexte si déjà existant sur feuille(s) précédente(s)

jozerebel

XLDnaute Occasionnel
Bonjour à tous!

J'ai besoin de votre génie pour résoudre un petit pb excel.

J'ai une feuille avec des onglets (12, un pour chaque mois).

l'utisateur commence par le premier onglet et est amené à créer des liens hypertexte sur certaines cellules (qui correspondent à des usagers).

L'objectif est d'avoir une macro sur chacune des feuilles suivantes de manière à ce que si l'usager se trouvait dans une des feuilles précédentes avec un lien hypertexte, le lien se crée sur la feuille active. Il ne suffit pas de regarder dans la feuille précédente car un usager peut être en feuil 1, puis pas en feuil 2 et de nouveau en feuil 3...

Je joins un fichier au cas où, pour une meilleure compréhension.

d'avance merci pour votre aide précieuse.
 

Pièces jointes

  • création_liens_hypertexte.xls
    29.5 KB · Affichages: 104

jozerebel

XLDnaute Occasionnel
Re : macro pour créer des liens hypertexte si déjà existant sur feuille(s) précédente

Bonjour!!

Merci pour votre réponse, mais la macro ne semble pas fonctionner...

J'ai peut-être oublié de dire que les liens étaient des dossiers présents sur l'ordinateur...

Votre macro me donne le message "argument ou appel de procédure incorrect"....

Any idea?

Merci
 

pierrejean

XLDnaute Barbatruc
Re : macro pour créer des liens hypertexte si déjà existant sur feuille(s) précédente

Re

Effectivement, dans ce cas le probléme est plus complexe
L'adresse enregistrée lors de la création du lien Hypertexte a une partie non explicitement ecrite qui se refere au chemin du fichier xls
Si le fichier appelé est dans le même repertoire que le xls seul son nom est specifié
Si ce n'est pas le cas on a l'indication du repertoire different avec le debut toujours tacite si identique
Qu'en est-il des fichiers appelés ?
 

pierrejean

XLDnaute Barbatruc
Re : macro pour créer des liens hypertexte si déjà existant sur feuille(s) précédente

Re

Veux-tu tester cette version de la macro

Code:
Sub test()
Dim liens()
ReDim liens(1 To 4, 1 To 1)
For Each sh In Sheets
 If sh.Name <> ActiveSheet.Name Then
  For m = 1 To sh.Hyperlinks.Count
    liens(1, UBound(liens, 2)) = sh.Hyperlinks(m).Name
    liens(2, UBound(liens, 2)) = sh.Hyperlinks(m).Address
    liens(3, UBound(liens, 2)) = sh.Hyperlinks(m).SubAddress
    liens(4, UBound(liens, 2)) = sh.Hyperlinks(m).TextToDisplay
    ReDim Preserve liens(1 To 4, 1 To UBound(liens, 2) + 1)
  Next m
 End If
Next sh
For n = LBound(liens, 2) To UBound(liens, 2) - 1
  Nom = liens(1, n)
  MsgBox (liens(1, n) & " " & liens(2, n))
  Set c = ActiveSheet.Cells.Find(Nom, LookIn:=xlValues, lookat:=xlWhole)
  If Not c Is Nothing Then
    firstAddress = c.Address
     Do
     If liens(2, n) <> "" Then
      ActiveSheet.Hyperlinks.Add Anchor:=c, Address:=liens(2, n), TextToDisplay:=liens(4, n)
     Else
      ActiveSheet.Hyperlinks.Add Anchor:=c, Address:=liens(2, n), SubAddress:=liens(3, n), TextToDisplay:=liens(4, n)
     End If
      Set c = ActiveSheet.Cells.FindNext(c)
     Loop While Not c Is Nothing And c.Address <> firstAddress
  End If
Next n
End Sub
 

jozerebel

XLDnaute Occasionnel
Re : macro pour créer des liens hypertexte si déjà existant sur feuille(s) précédente

Bonjour Pierre Jean!

Je suis épaté!!!!

C'est super. Mais y'at-il une solution pour éviter les msgbox? car si j'ai 12 feuilles et pas mal de liens créés, ça risque d'être un peu long...

Je suis peut-être trop exigeant...

Merci d'avance pour ta collaboration.

D'ailleurs, tu es toujours d'une aide précieuse (cf. précedent projet sur lequel tu m'avais déjà aidé.)
 

Discussions similaires

Réponses
2
Affichages
284

Statistiques des forums

Discussions
312 184
Messages
2 086 007
Membres
103 088
dernier inscrit
Psodam