Un petit complément pour dire que la qualification des objets est une chose importante en VBA.
Il faut toujours qualifier complètement les objets qu'on manipule, c'est pour ça que j'ai préfixé par ThisWorkbook.
Pourquoi ? Pour ne jamais avoir de surprise, si par exemple tu as plusieurs classeurs ouverts et que ta Macro, par manque de qualification, considère un autre classeur devenu actif plutôt que celui sur lequel tu voudrais qu'elle s'applique. Même chose au niveau des Ranges, qualifier par le Workbook et la Worksheet.
Si tu es dans le code du Workbook, sur le Workbook_Open(), où ta macro devrait probablement se trouver plutôt que sur un bouton, c'est mieux de remplacer la qualification ThisWorbook par Me.
ThisWorkbook.Worksheets("rapport financier").Visible = xlSheetVisible
devient:
Me.Worksheets("rapport financier").Visible = xlSheetVisible