Le code se lance au démarrage et sera quelque chose du type :
Code:
Private Sub Workbook_Open()
Dim T As Integer
T = Range("E65536").End(xlUp).Row
ActiveWorkbook.Names("Affaires").RefersToR1C1 = _
"=Listes!R12C5:R20C5"
End sub
J'aimerais connaître la syntaxe pour mettre ma variable T dans le code... J'ai tenté :
La manipulation consiste a modifier une liste pour un menu déroulant au démarrage du fichier.
Avant cette manipulation j'ai une autre fonction qui peut ou non suivant conditions m'apporter des nouveau choix dans la liste.
De base la liste est définie de E12 à E25
A l'ouverture du fichier il est donc possible d'avoir des valeurs en E26, E27 etc qui doivent être prisent en compte dans la liste. Il faut donc au démarrage que la liste s'actualise suivant la dernière cellule non vide.
En gros :
Code:
T = Range("E65536").End(xlUp).Row
ActiveWorkbook.Names("Affaires").RefersToR1C1 = _
"=Listes!R12C5:R et [B]dernière cellule non vide[/B]C5"
Bonjour le fil ,
Histoire de proposer une solution écrite pour les aveugles ...
Pourquoi ne pas passer par une gestion dynamique de la liste en formule ...
Type (il semblerait que ce soit la colonne E qui t'intéresse)
Et il est vrai que la fonction DECALER présente un "inconvénient" : elle est volatile, il y a un message à la fermeture du fichier même sans modification.
Alors dans le code de la feuille Listes (clic droit sur l'onglet et Visualiser le code) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Range("E12", [E65536].End(xlUp)).Name = "Affaires"
End Sub