Lien hypertexte sur un mot

bonjour,

je viens vers vous car, j'ai cherché et lu de multiples posts, et je n'ai pas trouvé mon bonheur.

D'après ce que j'ai lu, on ne peut pas le faire, (aux dates des posts), donc peut être que quelqu'un ou quelqu'une à trouvé.

je vais essayé de faire simple:

dans mon tableau, plus de 180 lignes.

dans chaque cellule de la colonne B: nom du document, remplace le document XX, remplacé par le document YY (le tout dans 1 cellule)

je souhaiterai que lorsque je clique sur "remplace le document XX", que le curseur aille sur la cellule correspondant au nom du document XX (à la ligne correspondante)

et lorsque je clique sur "remplacé par le document YY", que le curseur aille sur la cellule correspondant au nom du document YY (à la ligne correspondante)

Vous avez compris le principe, et faire ça sur l'ensemble du document.

je ne peux pas séparer le contenu de la cellule, tout reste dans cette même cellule.

j'ai donc pensé, pourquoi ne pas mettre un groupe de mots en lien hypertexte, ça paraissait simple en théorie...

ou peut être d'autres idées autre que du lien? (je ne connais pas les macros pour ceux qui sont experts avec ça)

Merci d'avance

concernant la version: Microsoft® Excel® pour Microsoft 365 MSO (Version 2204 Build 16.0.15128.20278) 64 bits

Bonsoir

J'ai peut être une idée, mais j'aurais besoin d'un fichier exemple s'il te plait.

Je ne comprends pas bien vers quoi doit pointer le lien. Peux-tu nous faire passer ça ?

5aa.xlsx (9.74 Ko)

voici un petit ficher avec quelques lignes,

et des explications...

merci d'avance.

Bonsoir

Bon, là j'avoue je sèche moi aussi. J'ai tourné le problème dans tous les sens, mais même en manipulant des variables, au final, c'est toute la case qui devient un lien.

Je vois néanmoins plusieurs solutions de contournement :

- sélectionner les autres mots dans la cellule et les afficher non souligné couleur noire (on fait croire que seul le mot est un lien)

- mettre un rectangle devant le mot et c'est ce rectangle qui contient le lien (compliqué à gérer, je ne vois pas pour le moment comment positionner la forme en vba)

- enfin, pourquoi ne pas créer plusieurs colonnes ? Une avec le doc original, une avec la date de remplacement, et avec le nom du nouveau doc ?

Merci ZeChris d'avoir passé du temps là dessus.

la troisième solution me paraît la plus réalisable, et aussi la plus simple à mettre en oeuvre.

toutefois, ça fait un travail monstrueux, (tableau déjà bien rempli)

je vais quand même réfléchir à cette dernière solution à tête reposée (et avec du temps devant moi...)

encore merci

Avec plaisir.

Je peux peut être encore t'aider. Il faut pas se taper ça à la main et j'ai ma petite idée.

L'exemple que tu m'as donné est fidèle au modèle original ? Les cases sont toujours bâties sur le même modèle ?

Si oui, je vais voir si je peux pas te proposer une macro qui fasse ça toute seule.

Il me faut juste un peu de temps, j'ai une fin de semaine chargée, mais ça me parait faisable

Voici une première proposition.

Je tri le texte dans la colonne 2 et récupère dans le tableau diverses infos :

Numéro du docdate d'applicationremplace leremplacé par

Si cela fonctionne correctement, on pourra voir comment créer les liens hypertextes.

Vérifie déjà que cette première opération fonctionne (et te convienne), et tu me dis.

Bonne soirée !!

9aa-macro.xlsm (18.20 Ko)

Bonjour ZeChris,

A vrai dire je suis un peu perdu avec ton fichier, les cellules que tu as crée sont vides et je ne sais pas trop quoi en faire pour l'adapter sur le mien.

Ne passe pas du temps la dessus, je ne suis pas sur de savoir l'utiliser et encore moins de le modifier en cas de besoin.

C'est normal que les cases soient vides, il faut lancer la macro "lien hypertext".

Teste le, ça marche chez moi. Si ça te conviens, je t'enverrai des indications pour t'aider à l'adapter

Bonjour le forum !

j'allais vous proposer cette troisième solution ! C'est le principe des documents sous AMASIS, il y a un onglet Remplaçant/Remplacé qui permet de naviguer d'un fichier à l'autre !

Très bien ZeChris !

@ bientôt

LouReeD

j'ai recherché "macro", puis "afficher les macros", puis "exécuter": le tableau s'est donc rempli

tout me parait bien rempli sauf colonne "date d'application" ou on retrouve bien la date (ou les lettres) mais aussi le début du mot suivant.

a part ça, 'est correct

Voici la macro corrigée, avec récupération des dates.

Je vais commencer à regarder ton histoire de liens.

Sub lien_hypertxt()

' si erreur (par exemple case vide) la macro passe la ligne
On Error Resume Next
Application.DisplayAlerts = False

Dim ligneA As Integer
Dim text1 As String
Dim text2 As String

' de la ligne 2 à la 20
For ligneA = 2 To 20
text1 = ""
text2 = ""
' je mets tout en minuscule
Cells(ligneA, 2).Value = LCase(Cells(ligneA, 2).Value)

' je veux récupérer le numéro du doc en colonne 3
' si les 8 premières lettres de la case sont "document"
If Left(Cells(ligneA, 2), 8) = "document" Then

' je récupère les num de doc à 3 chiffres
' en troisième colonne je mets les 13 premiers caractères de la cellule en colonne 2
Cells(ligneA, 3) = Left(Cells(ligneA, 2), 13)

' je récupère les num de doc à 2 chiffres
' si le dernier caractère n'est pas un chiffre, je l'enlève
If Not IsNumeric(Right(Cells(ligneA, 3), 1)) Then
Cells(ligneA, 3) = Left(Cells(ligneA, 3), 12)
End If

' je récupère les num de doc à 1 chiffre
' et je refais ça, si le dernier caractère n'est pas un chiffre, je l'enlève
If Not IsNumeric(Right(Cells(ligneA, 3), 1)) Then
Cells(ligneA, 3) = Left(Cells(ligneA, 3), 11)
End If

' je veux récupérer la date d'application en colonne 4
Dim dateA As String
tableau = Split(Cells(ligneA, 2), "/")
Cells(ligneA, 4) = Right(tableau(0), 2) & "/" & tableau(1) & "/" & Left(tableau(2), 4)
With Cells(ligneA, 4)
.NumberFormat = "mm/dd/yyyy"
End With

' je veux "remplace le ..." en colonne 5
tableau = Split(Cells(ligneA, 2), "remplace le ")
text2 = tableau(1)
Cells(ligneA, 5) = Left(text2, 13)

' je récupère les num de doc à 2 chiffres
' si le dernier caractère n'est pas un chiffre, je l'enlève
If Not IsNumeric(Right(Cells(ligneA, 5), 1)) Then
Cells(ligneA, 5) = Left(Cells(ligneA, 5), 12)
End If

' je récupère les num de doc à 1 chiffre
' et je refais ça, si le dernier caractère n'est pas un chiffre, je l'enlève
If Not IsNumeric(Right(Cells(ligneA, 5), 1)) Then
Cells(ligneA, 5) = Left(Cells(ligneA, 5), 11)
End If

' je veux "remplacé par le ..." en colonne 6
tableau = Split(Cells(ligneA, 2), "remplacé par le ")
text2 = tableau(1)
Cells(ligneA, 6) = Left(text2, 13)

' je récupère les num de doc à 2 chiffres
' si le dernier caractère n'est pas un chiffre, je l'enlève
If Not IsNumeric(Right(Cells(ligneA, 6), 1)) Then
Cells(ligneA, 6) = Left(Cells(ligneA, 6), 12)
End If

' je récupère les num de doc à 1 chiffre
' et je refais ça, si le dernier caractère n'est pas un chiffre, je l'enlève
If Not IsNumeric(Right(Cells(ligneA, 6), 1)) Then
Cells(ligneA, 6) = Left(Cells(ligneA, 6), 11)
End If

End If
Next ligneA
End Sub

et voila un petite macro pour créer des liens hypertextes de la colonne F vers la C si les valeurs sont identiques.

J'espère avoir répondu à ta question

Sub lien_hypertexte()

' si erreur (par exemple case vide) la macro passe la ligne
On Error Resume Next
Application.DisplayAlerts = False

Dim ligneA As Integer
Dim ligneB As Integer
Dim text1 As String
Dim text2 As String
Dim adresse As String

    ' de la ligne 2 à la 20
    For ligneA = 2 To 20
    ' on récupère le nom du document "qui vise la cible"
    If Not IsEmpty(Cells(ligneA, 6)) Then
    text1 = Cells(ligneA, 6)

        ' de la ligne 2 à la 20
        For ligneB = 2 To 20
        ' on récupère le nom du document "cible"
        If Not IsEmpty(Cells(ligneB, 3)) Then
        text2 = Cells(ligneB, 3)
                ' si les deux noms sont identiques
                If text2 = text1 Then
                ' on récupère l'adresse de la cellule "cible" et on enlève le signe "$" pour qu'elle puisse être exploitée
                adresse = Cells(ligneB, 3).Address
                adresse = Replace(adresse, "$", "")

                ActiveSheet.Hyperlinks.Add Anchor:=Cells(ligneA, 6), Address:="", SubAddress:=adresse

                End If
        End If
        Next ligneB
    End If
    Next ligneA
End Sub

Bonjour

Alors, tu as pu tester mes propositions ?

Bonjour ZeChris,

j'étais en vacances,

je viens donc seulement de me pencher sur tes réponses.

la macro corrigée fonctionne bien.

la seconde me va aussi.

(j'ai un peu cherché pour insérer tes macros car je ne connais pas mais tout compte fais, ça fait peur mais c'est facile)

je vais pouvoir avancer la dessus.

mille mercis

Rechercher des sujets similaires à "lien hypertexte mot"