Lien hypertexte VBA

Bonjour à toi qui passe par là,

Je vais essayer d'être clair :

Des fiches clients sont enregistrées : un client par Feuil, le code client est généré avec une formule "concaténer", en range E3 sur cette feuille.

La feuille se renomme alors du même nom que le code client.

Lors de l'appel de la macro ENRtableau, toutes les données clients sont exportées vers un tableau récapitulatif sur la feuille "TABclient" avec en tête de liste le code client. Un tableau en lecture horizontale : du fait, lors de l'ajout d'un nouveau client, je l'insert en allant chercher la première cellule vide du tableau (la première colonne étant la colonne "B")

l'objectif est alors de créer un lien hypertexte sur ce tableau récapitulatif lors de l'exportation des données. Ainsi, à la lecture du tableau, il suffira de cliquer sur le code client pour consulter sa fiche.

Sub ENRtableau()
Dim dlig As Long

Range("E3").Copy
'Je copie le code client généré via la formule "concaténer" en E3 sur la fiche client

Sheets("TABclient").Activate
'feuille où se trouve mon tableau récapitulatif des clients enregistrés

    derlig = Range("B5").End(xlDown).Address
    ' la première colonne de mon tableau est la colonne B, et je vais chercher la dernière cellule pleine de ce tableau

    Range(derlig).Select
    Selection.Offset(1, 0).Activate
    'je descends d'une range pour être sur la première ligne vide
    ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    'Je copie mon code client dans cette range

    'Puis j'essaie de faire mon lien hypertexte....
    ActiveCell.Hyperlinks.Add _
            Anchor:=Selection, _
            Address:="", _
            SubAddress:=Worksheets(Selection).Name, _
            TextToDisplay:=derlig - 1

Je n'arrive pas à créer le lien, quelque chose cloche... J'ai un doute sur les déclarations de variable...

Si vous pouvez m'expliquer où se trouve mon erreur ce serait génial !!

Je vous remercie pour votre altruisme et pour toute l'aide que vous pourrez m'apporter.

Amicalement,

Alex.

Bonsoir,

SubAddress:=Worksheets(Selection).Name

"Selection" est un objet et non une valeur numérique.

De plus, Worksheets(Selection).Name ne représente pas l'adresse d'une cellule.

L'instruction devrait être de ce type :

SubAddress:=Sheets(n).Cells(i,j).Address(1,1,1,1)

Bonjour Alex,

Si j'ai bien analysé ton code... ,à savoir que tu copies depuis la cellule E3 et tu crées un lien hypertexte dans la feuille TABclient.. ? Cela pourrait être ceci

Sub ENRtableau()
Dim derlig As Long

ActiveSheet.Range("E3").Copy
'je copie le code client généré en E3 sur la Feuille "Fiche client"

With Sheets("TABclient")
    derlig = .Range("B5").End(xlDown).Row + 1
    .Range("B" & derlig).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

    'Lien hypertexte vers la feuille qui s'est renommée comme le code client :
    .Range("B" & derlig).Hyperlinks.Add _
        Anchor:=.Range("B" & derlig), _
        Address:="", _
        SubAddress:=ActiveSheet.Name & "!" & .Range("B" & derlig).Address, _
        TextToDisplay:=""
End With

Call RETOURPAGE

ActiveSheet.Range("E6,E9,E13,E14,E15,E16,E18:E23,E26:E31,E34:E35").Copy

With Sheets("TABclient")
    derlig = .Range("C5").End(xlDown).Row + 1

    If .Range("B" & derlig).Offset(0, -1) > 0 Then
            .Range("C" & derlig).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

    Else: Call RETOURPAGE: .Range("E6").Activate
    End If

End Sub

Amicalement

Hello Dan,

Mille merci pour ton intervention. Toujours là quant il le faut

J'adore ton code, il optimise la RAM de mon ordi

Mais... le code fini de la même façon : "Référence non valide".

Autrement dit, après de nombreux essais de mon côté j'ai compris une chose : le code vba pour une feuille (non renommée "Feuil1" ou une feuille renommée simplement "TEST") ça passe.

En revanche lorsqu'une feuille contient un caractère spécial

("-" ou"espace") le code ne fonctionne plus et me met "Référence non valide" quand j'active le lien.

Or mes feuilles se renomme en fonction du code client qui se compose comme suit : DE45JR-TY

(présence du "-" qui est un caractère spécial et fait capoter la recherche)

Je joint mon fichier test pour la construction du lien Hypertexte en vba.

En espérant que tu ai un peu de temps pour regarder.

Merci à vous tous.

Amicalement,

Alex.

Re

Il faudrait que je comprenne. On choisit dans la liste déroulante (colonne B) et il faut mettre le lien hypertexte dans la colonne à droite (colonne D) ??

Amicalement

Exactement...

Tu choisi dans la liste déroulante le nom d'une feuille (simulation d'une cellule dynamique) puis tu clique sur la macro.

Cette dernière génère le lien hypertexte à droite.

Tu clique dessus.

Le premier cas fonctionne et les deux autres bug : le nom des feuilles (choisi dans liste déroulante) contient un caractère spécial.

Amicalement,

Alex.

Re

Voici le code. Dans l'état actuel, un seul code pour les trois possibilités.

Choisis ce que tu veux dans une des trois listes dans la colonne B, puis clique sur un seul bouton (tes trois boutons peuvent être remplacés par un seul

Sub Test()
Dim code As String
Dim lig As Byte
With ActiveSheet
    lig = ActiveCell.Row
    code = .Range("B" & lig).Value
    .Hyperlinks.Add Anchor:=.Range("D" & lig), Address:="", SubAddress:= _
        "'" & code & "'!A1", TextToDisplay:=code
End With
End Sub

Si tu veux absolument t'encombrer de trois boutons ( ), utilise ce code et adapte les lignes dans le code. Voici pour le bouton Renommées (Ligne 8) :

Sub Renommees()
Dim code As String
With ActiveSheet
    code = .Range("B8").Value
    .Hyperlinks.Add Anchor:=.Range("D8"), Address:="", SubAddress:= _
        "'" & code & "'!A1", TextToDisplay:=code
End With
End Sub

Et enlève moi tous ces accents dans les noms de tes code....

Amicalement

Génial, encore une fois je te dois une fière chandelle.

Ça fonctionne parfaitement et bien évidement, une fois que l'on a vu la solution, ça parait simple.

Encore merci Dan.

Et promis, je retire tous mes accents

Amicalement,

Alex.

Rechercher des sujets similaires à "lien hypertexte vba"