Liens hypertextes automatiques

Bonjour,

J’ai posté il y a quelques semaines pour réaliser des commentaires automatiquement.

Au fur et à mesure je développe mon fichier avec les nouvelles demandes qui me sont faites. J’essaie de créer des liens automatiques vers des dossiers ou fichiers sur le réseau afin d’avoir tout à portée de main dans un unique tableau.

Je vous montre les différents code que j’ai pu trouver et adapter à mon tableau.

Code pour les commentaires automatiques

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 2 Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Target = "" Then On Error Resume Next: Target.Offset(, 5).Comment.Delete: Exit Sub
    lig = Application.Match(Target, Sheets("Références").[A:A], 0)
    On Error Resume Next
    Target.Offset(, 5).Comment.Delete
    Target.Offset(, 5).AddComment.Text "Fréquence: " & Sheets("Références").Cells(lig, 5) & Chr(11) & Chr(11) & "Motif: " & Sheets("Références").Cells(lig, 6)

    Target.Offset(, 5).Comment.Shape.Height = 10

    Target.Offset(, 5).Comment.Shape.ScaleWidth 5, AutoSize = True
    Target.Offset(, 5).Comment.Shape.ScaleHeight 10, AutoSize = True
    Target.Offset(, 5).Comment.Shape.TextFrame.AutoSize = True

    With Target.Offset(, 5).Comment.Shape.TextFrame.Characters(1, 4).Font
        .Bold = True
        .Underline = True
    End With
    debut = InStr(1, Target.Offset(, 5).Comment.Text, "Motif:", 1)
    With Target.Offset(, 5).Comment.Shape.TextFrame.Characters(debut, 6).Font
        .Bold = True
        .Underline = True
    End With

Code pour le lien automatique en colonne « C »

 'Lien Hypertexte FIC

    Dim C As Range
    For Each C In Range([C3], [C65586].End(xlUp))

    ActiveSheet.Hyperlinks.Add C, "Lien d'un dossier informatique" & C.Value & ".xlsx#'Lien d'un onglet'!A1", TextToDisplay:=C.Value & ".xlsx"

    Next C

Code pour le lien automatique en colonne « S »

   'Lien Hypertexte AP

    Dim D As Range
    For Each D In Range([S3], [S65586].End(xlUp))

    If D = "" Then
    D = ""
    Else
    ActiveSheet.Hyperlinks.Add D, "Lien d'un dossier"
    End If
    Next D

Code pour le lien automatique en colonne « AC »

 'Lien Hypertexte DIM

    Dim F As Range
    Dim G As Range
    For Each F In Range([C3], [C65586].End(xlUp))
    For Each G In Range([AC3], [AC65586].End(xlUp))

    If G = "" Then
    G = ""
    Else
    ActiveSheet.Hyperlinks.Add G, "Lien d'un dossier" & F.Value & ".xlsx#'Lien d'un onglet'!A1"
    End If

    Next G
    Next F

Etc car les 5 autres colonnes qui sont citées dans la phrase suivante, sont identiques à la colonne "S".

Je souhaiterai que dès qu’une cellule de la colonne C,S,V, AC, AF, AH, AI, AM ou AN est modifiée alors un lien automatique se crée.

Mes deux problèmes :

  • Le premier est que chacune des colonnes doit avoir sa boucle indépendante, ce que je ne sais pas faire … le code VBA doit débuter à partir de la ligne 3. Le but est d'alléger ma programmation VBA car actuellement tout le programme se lance quand je modifie une valeur ...
  • Mon deuxième se trouve sur le dernier code colonne « AC » appelé « Lien Hypertexte DIM », je voudrais qu'en colonne AC, si du texte est ajouté dans la cellule alors un lien hypertexte se crée automatiquement en prenant en compte la même ligne de la cellule modifiée de la colonne C (Dans la colonne C sont écrites les données "références de la pièce" qui a la même appellation que le nom du fichier et qui me permettront d'ouvrir ce fichier)
Mon lien serai donc « Lien du dossier » & « valeur de la colonne C (copier par un code que je n'arrive à trouver) » & « .xlsx »

Mon code actuel prend en compte la dernière ligne remplie de la colonne C = tous les liens renvoient vers la même référence ...

En vous remerciant d’avance, peut-être je n’utilise pas du tous les bons codes VBA pour cela.

Thibault

Bonjour,

peut-être je n’utilise pas du tous les bons codes VBA pour cela

Peut-être, effectivement!?

Et si tu nous déposais un bout de fichier avec des exemples de ce contiennent les colonnes C, S, etc.

... Et avec la fonction LIEN_HYPERTEXTE, tu as déjà essayé de faire la même chose? Si oui, en quoi est-ce que cette solution ne convient pas? Si pas ... c'est l'occasion d'essayer!

Voici mon fichier en pièce jointe.

Je connais cette formule LIEN_HYPERTEXTE mais vu le nombre de ligne que je vais insérer pour enrichir mon fichier, je veux que cela se réalise automatiquement par VBA.

Cette formule surchargerai mon fichier car il me faut ajouter une colonne en plus pour réaliser chaque lien hypertexte ...

40exemple.xlsm (39.56 Ko)

Une personne peut m'aider, s'il vous plaît ... je coince ...

Je vouxdrai juste créer des boucles indépendantes sur des créations automatique de lien hypertexte par colonne et trouver une formule adéquate sur une des colonnes.

Petit up !

Bonjour,

Tu parles parfois de créer des boucles, parfois de créer le lien au moment où on modifie une valeur; parfois tu parles de toute une série de colonnes, parfois de deux colonnes seulement!?

Bref, en colonne S, ceci devrait créer les liens pour toutes les cellules non-vides, en récupérant la valeur en colonne C comme nom du fichier "cible":

Sub liens()
For Each C In Range([S3], [S65536].End(xlUp))
    If C <> "" Then Me.Hyperlinks.Add C, "Le_Chemin_D_Accès\" & Cells(C.Row, 3) & ".xlsx"
Next C
End Sub

Coller ces lignes dans la fenêtre de code de la feuille "CR MDA DQ381"

Renseigner le chemin d'accès correct.

On suppose que les différent fichiers "cibles" existent bien.

Bonjour,

je te remercie pour la réponse et OUI tout ce que je demande existe bien. Le but de ce fichier est d'être un historique + avoir un suivi rapide sur une ligne avec les liens hypertexte automatisés.

En fait en recherchant sur internet, je souhaiterai que la fonction "Worksheet_change" soit multi-critères car je sais qu'il peut y en avoir qu'une par feuille.

Donc je cherche à que cette fonction s'applique suivant le changement des colonnes C,S,V, AC, AF, AH, AI, AM ou AN afin de créer des liens hypertextes. J'arrive à en créer pour une colonne mais la gestion des multi-critères coincent ...

Exemple

  
Private Sub Worksheet_Change(ByVal Target As Range)
    'Lien Hypertexte AP
    If Target.Column <> 22 Then Exit Sub
    For Each C In Range([V3], [V65536].End(xlUp))
    If C <> "" Then Me.Hyperlinks.Add C, "Lien"
    Next C
    End Sub

Comment structurer mon code pour réaliser indépendamment le code sur plusieurs critères (suivant la colonne qui est modifié) ? Quel est la bon code à adopter ?

Bonjour,

Une question avant tout: on est d'accord que quand tu écris: Me.Hyperlinks.Add C, "Lien", tu crées sans doute un lien ... mais qui pointe sur ... pas grand chose!? Est-ce à dire que ma proposition ne convenait pas? Comme tu reviens toujours à la même syntaxe, on est en droit de s'interroger.

Un avis personnel: à l'intérieur d'une procédure événementielle, insérer une boucle pour passer en revue toutes les valeurs encodées dans une colonne est potentiellement dangereux: dans le meilleur des cas, ça va ralentir considérablement le temps d'exécution. Au pire, ta procédure va s'appeler elle-même de façon récursive et tourner en boucle indéfiniment.

Si mes souvenirs sont bons, j'avais déjà fait le même type de réflexion dans ton premier fil.

Une conclusion qui me paraît s'imposer: pour ne pas m'embarquer moi-même dans une boucle sans fin, je crois que je vais me retirer et te souhaiter une bonne continuation.

Les réponses à tes interrogations :

premièrement, mon code Me.Hyperlinks.Add C, "Lien" pointe vers un lien REEL sur un disque réseau, je l'ai uniquement appelé "lien" voilà tout. Je ne veux tout simplement pas surcharger d'information car je suis à la recherche d'un code me permettant de créer automatiquement des liens hypertextes dès qu'une celulle d'une des colonnes (citées dans mes messages précédents) est modifiée.

Deuxièmement, c'est justement ce que je n'arrive pas à effectuer. Modifier uniquement la cellule modifiée ou la colonne modifiée afin "d'alléger mon code" lors d'un changement de variable dans la cellule que le code prend en compte (colonnes citées dans mes messages précédents).

Troisièmement, je n'oblige personne à m'aider mais en tout cas je te remercie pour tes recherches, ton temps passé et ton aide mais je pense que la formulation de mon problème est mal exprimé. Mais je ne vois pas comment l'exprimer autrement...

Bonjour,

je laisse tomber pour la création automatique des liens hypertextes. Je fais ça en semi-automatique par macro + boutons.

Par contre, je n'arrive pas pour une colonne à me créer un lien hypertexte

Sub MacroColonneS()

    'Lien Hypertexte 
    For Each J In Range([S3], [S1048576].End(xlUp))
    If J <> "" Then ActiveSheet.Hyperlinks.Add J, "lien du dossier du fichier recherché" & Range(C3).Value & ".xlsx"
    Next J

End Sub

En fait, dans la colonne S, je veux uniquement créer un lien vers un fichier. Mais pour cela je dois récupérer la valeur de la colonne C sur la même ligne car il y a la dénomination du fichier.

Ai-je la bonne formule de départ pour effectuer cela ?

Si oui, quel est le code à mettre à la place de "Range(C3).Value " ? sinon quelle est le code à utiliser pour mettre les liens sur toute la colonne S quand j'actionne la macro ?

Je sais que "Range(C3).Value" n'est pas un code valide.

Merci pour votre aide

Bonsoir,

kaizer48 a écrit :

Si oui, quel est le code à mettre à la place de "Range(C3).Value " ?

Et la proposition faite dans mon message du 30 janvier à 11:15 n'offre aucun élément de réponse?
Rechercher des sujets similaires à "liens hypertextes automatiques"