[RESOLU] Lien hypertexte avec variable

maxousurf

XLDnaute Nouveau
Bonjour à tous,

Dans le cadre de mon travail, je suis en train de réaliser un gros logiciel de suivi d'opérations.
J'ai réalisé actuellement une grande partie de l'interface et des codes sous VBA.

Je viens à vous parce que malgré mes nombreuses recherches sur internet, les forums et devant VisualBasic, je ne trouve pas la réponse à quelques questions.

Je vous explique rapidement.

Tout d'abord, le logiciel étant à caractère très professionnel, j'ai dû supprimer de nombreuses choses, l'essentiel reste là pour m'aider.

Alors, sur ma première feuille ("Nouveau"), on entre les données demandées. Ces dernières seront automatiquement listées ligne 400 de ma feuille "Liste des opérations" mais une macro les remettra en ordre chronologique en ligne 4.
De plus, la feuille "Modèle" sera dupliquée et renommée selon le numéro entré sur la feuille "Nouveau", cellule "C5".

C'est justement là mon soucis, j'aimerai que la macro créé un lien hypertexte sur ma feuille "Liste des opérations" portant le nom du numéro d'opération rentré sur la feuille "Nouveau" et faisant référence à la feuille créée portant ce même nom.

Je ne sais pas si je suis bien clair. Un exemple:

J'entre le numéro 122 dans ma première feuille, je clique sur "créer", j'aurai alors une nouvelle feuille "122" de créée et une nouvelle ligne dans "Liste des opérations".
J'aimerai du coup que dans "Liste des opérations", j'ai un lien hypertexte, qui quand je clique sur le numéro "122", ce dernier m'envoie à la feuille "122".

Mon problème ? Tout simplement que vu que je ne sais pas du tout quel numéro je peux entrer, je fonctionne uniquement avec des variables, mais les variables sont effacées à la fin.

Auriez-vous une solution ?


Voici mon code de création:

Code:
Sub nouveau()
'
' nouveau Macro
'

'
    nom = Sheets("Nouveau").Range("C5:D5")
    année = Sheets("Nouveau").Range("C14:D14")
    opération = Sheets("Nouveau").Range("C5:D5")
    commune = Sheets("Nouveau").Range("C6:E6")
    loca = Sheets("Nouveau").Range("C7:E7")
    secteur = Sheets("Nouveau").Range("C8:E8")
    agent = Sheets("Nouveau").Range("C9:D9")
    descri = Sheets("Nouveau").Range("C10:H12")
    cout = Sheets("Nouveau").Range("C13:D13")
    
    Sheets("Liste des opérations").Select
    Range("B400").Select
    ActiveCell.FormulaR1C1 = commune
    Range("C400").Select
    ActiveCell.FormulaR1C1 = secteur
    Range("D400").Select
    ActiveCell.FormulaR1C1 = loca
    Range("E400").Select
    ActiveCell.FormulaR1C1 = descri
    Range("F400").Select
    ActiveCell.FormulaR1C1 = année
    Range("G400").Select
    ActiveCell.FormulaR1C1 = cout
    Range("K400").Select
    ActiveCell.FormulaR1C1 = agent
    Range("A400").Select
    ActiveCell.FormulaR1C1 = opération
    
    Range("A4:A399").Select
    Selection.Font.Bold = True
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    
    Range("B4:B399").Select
    Selection.Font.Bold = False
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    
    Range("C4:C399").Select
    Selection.Font.Bold = False
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    
    Range("D4:D399").Select
    Selection.Font.Bold = False
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    
    Range("E4:E399").Select
    Selection.Font.Bold = False
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlTop
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlTop
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    
    Rows("4:399").EntireRow.AutoFit
    
    Range("F4:F399").Select
    Selection.Font.Bold = False
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    
    Range("G4:G399").Select
    Selection.Font.Bold = False
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    
    Range("H4:H399").Select
    Selection.Font.Bold = False
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    
    Range("I4:I399").Select
    Selection.Font.Bold = False
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    
    Range("J4:J399").Select
    Selection.Font.Bold = False
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    
    Range("K4:K399").Select
    Selection.Font.Bold = False
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    
    Range("L4:L399").Select
    Selection.Font.Bold = False
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    
    Range("M4:M399").Select
    Selection.Font.Bold = False
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlTop
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    
    Sheets("Modèle").Select
    Sheets("Modèle").Copy Before:=Sheets(2)
    Sheets("Modèle (2)").Select
    ActiveSheet.Name = Sheets("Nouveau").Range("C5")
    Range("J19").Select
    Range("E6").Select
    ActiveCell.FormulaR1C1 = année
    Range("D7:G7").Select
    ActiveCell.FormulaR1C1 = opération
    Range("D9:G9").Select
    ActiveCell.FormulaR1C1 = commune
    Range("D10:G10").Select
    ActiveCell.FormulaR1C1 = secteur
    Range("D11:G11").Select
    ActiveCell.FormulaR1C1 = loca
    Range("D13:G13").Select
    ActiveCell.FormulaR1C1 = agent
    Range("D15:G15").Select
    ActiveCell.FormulaR1C1 = descri
    Range("D18:G18").Select
    ActiveCell.FormulaR1C1 = cout
    Range("D19:G19").Select
    Sheets("Nouveau").Select
    Range("C14:D14").Select
    Selection.ClearContents
    Range("C13:D13").Select
    Selection.ClearContents
    Range("C10:H12").Select
    Selection.ClearContents
    Range("C9:D9").Select
    Selection.ClearContents
    Range("C8:E8").Select
    Selection.ClearContents
    Range("C7:E7").Select
    Selection.ClearContents
    Range("C6:E6").Select
    Selection.ClearContents
    Range("C5:D5").Select
    Selection.ClearContents
    
End Sub

Je vous poste déjà cette question là avant de vous demander de l'aide pour la suite (que je continue toujours à chercher d'ailleurs).

Un grand merci d'avance pour votre aide et n'hésitez pas pour avoir de plus amples informations :)
 

Pièces jointes

  • Logiciel.xlsm
    71.5 KB · Affichages: 45
  • Logiciel.xlsm
    71.5 KB · Affichages: 47
  • Logiciel.xlsm
    71.5 KB · Affichages: 43
Dernière édition:

maxousurf

XLDnaute Nouveau
Re : Lien hypertexte avec variable

Alors voila:
La feuille "122" est caché, j'ai rajouté les codes, et lorsque je clique sur "122" dans "Liste des opérations", j'ai un bug.
 

Pièces jointes

  • Logiciel.xlsm
    78.2 KB · Affichages: 39
  • Logiciel.xlsm
    78.2 KB · Affichages: 42
  • Logiciel.xlsm
    78.2 KB · Affichages: 48

Pierrot93

XLDnaute Barbatruc
Re : Lien hypertexte avec variable

Re,

si nom de feuille = numérique :
Code:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Dim a() As String
With Target
    a = Split(.SubAddress, "!")
    Sheets(CStr(a(0))).Visible = xlSheetVisible
    Application.Goto Sheets(CStr(a(0))).Range(a(1))
End With
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Lien hypertexte avec variable

Re,

modifie plutôt comme suit :
Code:
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Dim a() As String
With Target
    a = Split(Replace(.SubAddress, "'", ""), "!")
    Sheets(a(0)).Visible = xlSheetVisible
    Application.Goto Sheets(a(0)).Range(a(1))
End With
End Sub
 

maxousurf

XLDnaute Nouveau
Re : Lien hypertexte avec variable

Merci pour ton aide, mais ça ne marche toujours pas de mon côté.

Qu'on soit d'accord, peut-être qu'on ne s'est pas bien compris, ma feuille est caché et je veux cliquer sur le lien hypertexte de "Liste des opérations" pour que cette fameuse feuille cachée apparaisse.

Par rapport au code, j'ai toujours le même soucis, ça bug à cette ligne: Sheets(CStr(a(0))).Visible = xlSheetVisible

Si ça marche de ton côté, pourrais-tu me mettre le fichier en pièce jointe ?
 

maxousurf

XLDnaute Nouveau
Re : Lien hypertexte avec variable

Oups autant pour moi, on l'a posté presque en même temps et je n'avais pas vu.

Et bien je te remercie grandement pour ton aide, c'est exactement ce que je voulais et ça marche parfaitement !
Merci à tous les deux de m'avoir aidé. Si je rencontre de nouveaux problèmes, je viendrai encore vous embêter je pense :)

Encore merci, bonne journée et à bientôt :)
 

Statistiques des forums

Discussions
311 716
Messages
2 081 848
Membres
101 826
dernier inscrit
dododu89