Bonjour,
C'est un pur problème de déclaration ! Et une déclaration de variable se fait avec Dim
En fait je suppose que tu n'a pas déclaré ta variable "feuille" (avec Dim feuille)
Même si tu l'a déclaré en variant (sans la typer) Year renvoie un Integer
Donc ton code recherche la feuille avec l'Index 2014 au lieu de la feuille nommée "2014"
Il faut donc faire soit une conversion dans le type KIVABIEN
Sub test()
Dim feuille
feuille = CStr(Year(Date))
Worksheets(feuille).Activate
End sub
... Soit une déclaration explicite du type :
Sub test()
Dim feuille As string
feuille = Year(Date)
Worksheets(feuille).Activate
End sub
La deuxième solution est bien sur préférable : il vaut toujours mieux faire ses déclarations de manière explicite plutôt que s'en remettre au hasard d'une auto-conversion parfois aléatoire.
Dans ce deuxième cas il y a bien quand même un genre de trans typage :
feuille = Year(Date)
... mais au moins celle-ci est à sens unique : ou ça passe ou ça casse ! En fait selon Microsoft Year() serait un Variant fortement teinté d'Integer donc le fait d'avoir déclaré "feuille As String" force VBA à digérer ce codage un peu olé olé...
En fait même dans le deuxième cas
feuille = CStr(Year(Date))
... ne serait pas incongru ! Mais les programmeurs VBA/Excel sont souvent peu formalistes...
A+
A+