Macro pour créer des liens hypertexte

Bonjour,

Je souhaite créer un fichier de suivi client.

Pour se faire j'ai donc dans un onglet sommaire mon listing de renseigné avec en colonne A le n° du client.

Puis dans le meme fichier je crée autant d'onglet que de client, chaque onglet est nommé avec le N° client.

Je souhaiterais automatisé à l'aide d'une macro la création d'un lien hypertexte : en cliquant sur le n° client dans le sommaire, arriver directement sur l'onglet client.

Et dans un second temps, je souhaiterais que la date de prochaine visite, s'intègre automatiquement dans mon sommaire.

Quelqu'un pourrait-il m'aider s'il vous plait.

Merci d'avance pour l'aide qui pourra m'être apporter. Bonne journée

Bonjour,

Plutôt que d'utiliser les liens hypertextes, pourquoi ne pas utiliser le double click sur le nom du client dans la colonne A et qui vous amène sur la feuille client

Nettement plus simple que de vous embarquer dans des liens hypertextes
exemple ici en plaçant le code que j'ai proposé dans le fichier posté par le demandeur --> https://forum.excel-pratique.com/s/goto/986067

Cordialement

Edit : genre de code à placer dans la feuille SOMMAIRE. A adapter probablement

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A:A")) Is Nothing Then
    Cancel = True
    On Error Resume Next
    Sheets(Range("A" & Target.Row).Value).Select
End If
Cancel = False
End Sub

Bonjour,

oui l'idée est très bonne, je ne savais pas que c'était possible. Effectivement cela me fera un fichier plus léger.

Par contre j'ai testé avec le code tel quel, il est à retravailler car ne fonctionne pas. Je vais creuser dans ce sens.

Merci beaucoup

Par contre j'ai testé avec le code tel quel, il est à retravailler car ne fonctionne pas.

Ah si. Vous devez le placer dans la feuille Sommaire (là où se trouve la liste des clients en colonne A.
Donc faites click droite sur l'onglet Sommaire --> choisir "Visualiser le code" et coller le code que je vous ai donné

Sinon pensez à mettre votre fichier (sans données confidentielle) en ligne, je regarderai

Crdlt

Ci-joint le fichier, j'ai effectivement coller votre code dans la feuille sommaire.

Merci beaucoup de prendre le temps d'y jeter un oeil.

Bonjour

Pour ma part avec le code suggéré par Dan j'ai pensé à quelque chose comme ça :

Function FeuilleExiste(NomFeuille) As Boolean
Dim Feuille As Object
On Error Resume Next
Set Feuille = Sheets(NomFeuille)
    If Err = 0 Then FeuilleExiste = True
    Set Feuille = Nothing
End Function
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A:A")) Is Nothing Then
         If FeuilleExiste(Range("A" & Target.Row).Value) = True Then 'On teste si la feuille au N° du client existe
             Sheets(Range("A" & Target.Row).Value).Select
             On Error Resume Next
        Else
            Sheets.Add(After:=Sheets(Sheets.Count)).Name = Range("A" & Target.Row).Value 'Création de l'onglet au N° du client
        End If
    End If
    Cancel = False
End Sub

Ce qui permet en double cliquant dans la cellule avec le N° client, de vérifier si la feuille existe sinon de la créer et de se rendre dessus.

Edit :

Toutes mes excuses je viens de me rendre compte que ce code ne fonctionne pas quand les numéros de clients ne sont que des chiffres.

Par contre j'ai testé en notant "C12345"et là ça fonctionne

Bonjour,

Merci pour votre aide.

j'ai testé votre code : il cré effectivement la page lorsque je double clic sur le n° mais si je veux m'y rendre à nouveau en double cliquant, il recrée une feuille.

Je ne suis pas très doué en macro, il faut que j'essaye de comprendre le code.

Merci en tout cas.

Je ne sais à qui vous vous adressez dans votre réponse mais pourquoi créer une feuille sur le double click. Ce n'est pas ce que vous avez demandé au départ

Par contre au vu de votre fichier changez cette ligne dans le code que je vous ai proposé,

Sheets(CStr(Range("A" & Target.Row))).Select

Cordialement

Edit : si vous tenez absolument à conserver vos liens hypertextes, on peut faire une solution en se basant sur ce lien --> https://forum.excel-pratique.com/s/goto/990673

Le code pour votre fichier pourrait être ceci

Sub Generer_fiches()
Dim cell As Range
Dim i As Byte
Dim existe As Boolean
Dim feuille as Worksheet

With Sheets("Sommaire")
    For Each cell In .Range("A4:A" & .Range("A" & Rows.Count).End(xlUp).Row)
        'controle si la feuille existe
        For i = 1 To Sheets.Count
            If CStr(Sheets(i).Name) = cell.Value Then existe = 1: Exit For
        Next i
        'si feuille n'existe pas on ajoute
        If existe = 0 And cell.Value <> "" Then
            Sheets("Vierge").Copy after:=Sheets(Sheets.Count)
            Set feuille = ActiveSheet
            feuille.Name = CStr(cell.Value)
            feuille.Range("A1").Value = cell.Value
            .Hyperlinks.Add Anchor:=Sheets("Sommaire").Cells(cell.Row, 1), Address:="", SubAddress:=ActiveSheet.Name & "!A1", TextToDisplay:=feuille.Name
        End If
        existe = 0
    Next cell
End With
End Sub

Le code double click ne sert évidemment plus.

Aussi autre chose, évitez les fusions de ligne ou cellule. Dans votre feuille Sommaire, pourquoi fusionner la ligne 2 et 3. C'est dingue le nombre d'utilisateurs que je vois faire cela. Il suffit d'agrandir la ligne 2....

Cordialement

Bonjour,

Super, le nouveau code fonctionne parfaitement.

Et j'ai réussi à rapatrier mes date donc je devrais m'en sortir et faire un super fichier de suivi clientèle.

Merci beaucoup d'avoir consacré du temps pour moi.

Bon week-end.

Ok. il ne vous reste plus qu'à cloturer comme je vous l'ai écrit avant...

Rechercher des sujets similaires à "macro creer liens hypertexte"