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.
- Messages
- 3'998
- Excel
- 2021 FR 64 bits
- Inscrit
- 13.06.2016
- Emploi
- bénévole associations Goutte d'Or
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...
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 (
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.