Re,
En pièce jointe ton fichier modifié. Attention ! Si tu dois recopier le code dans un autre classeur, il se trouve dans trois composants différents et il te faudra le copier/coller respectivement dans le même composant.
• Code Composant ThisWorkbook :
Private Sub Workbook_Open()
NL = Sheets("Liste").Range("Tableau1").Rows.Count ''définit le nombre de line NL du tableau [Tableau 1]
End Sub
• Code composant Feuil2(Liste) :
Private Sub Worksheet_Activate() 'à l'activation de l'onglet
NL = Sheets("Liste").Range("Tableau1").Rows.Count 'définit le nombre de line NL du tableau [Tableau 1]
End Sub
Private Sub Worksheet_Change(ByVal Target As Range) 'au chagement dans l'onglet
If Range("Tableau1").Rows.Count > NL Then 'condition : si le nombre de ligne du tbaleau [Tableau 1] est supérieur à NL
'si la cellule en colonne A de la nouvelle ligne du tableau [Tableau 1] n'est pas vide,
'lance la macro [Macro1] du module [Module1]
If Cells(Application.Rows.Count, "A").End(xlUp).Value <> "" Then Module1.Macro1
End If 'fin de la condition
End Sub
• Code dans le module standard [Module1] :
Public NL As Long 'déclare la variable NL (nombre DefaultWebOptions Lignes)
Sub Macro1()
Dim L As Worksheet 'déclare la variable L (onglet Liste)
Dim M As Worksheet 'déclare la variable M (onglet Modèle)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Application.ScreenUpdating = False 'msque les refraîchissements d'écran
Set L = Worksheets("Liste") 'définit l'onglet L
Set M = Worksheets("Modèle") 'définit l'onglet M
Set CEL = L.Cells(Application.Rows.Count, "A").End(xlUp) 'définit la cellule CEL
M.Copy After:=Sheets(Sheets.Count) 'copy l'onglet M en dernier
ActiveSheet.Name = CEL.Value 'renomme l'onglet copié
'cré le lien hypertexte
ActiveSheet.Hyperlinks.Add Anchor:=CEL, Address:="", SubAddress:="'" & CEL.Value & "'!A1", TextToDisplay:=CEL.Value
L.Select 'sélectionne l'onglet L
L.Cells(Application.Rows.Count, "B").Select 'séctionne la cellule en colonne B de la cellue cible
End Sub
Le fichier :