Bonsoir,
Il y a 12 feuilles dans ton classeur, et tu veux en ouvrir 13 : "Feuil1" à "Feuil12" + "parametrage".
"Feuil12" n'existe pas, d'où l'erreur 9.
Note au passage que l'erreur d'indice (erreur 9) apparaît aussi bien pour les indices de tableaux, les index d'objets dans leur collection ou leur nom (les noms sont utilisées concurremment avec les index pour appeler les objets à partir de leur collection).
Je te laisse le soin de rectifier ça...
Au passage, quelques remarques qui pourront peut-être t'être utile :
- (dans WorkbookOpen) : Load... charge le Userform, ...Show l'affiche.
Userform.Show suffit à le charger et à l'afficher.
On a intérêt à distinguer les 2 phases, lorsque entre Load et Show on initialise à partir de la procédure appelante, sinon autant économiser une ligne...
- UserformInitialize : cette procédure s'exécute après chargement et avant premier affichage du Userform. Si le Userform est masqué et réaffiché, elle ne s'exécutera pas lors des affichages suivants...
D'autre part les valeurs de propriétés que tu définis pour les contrôles à la conception (dans la fenêtre de propriétés) sont celles qui seront appliquées à chaque chargement. Or, toutes les valeurs que tu définis à l'initialisation pourraient l'être dès la mise en place, économisant une procédure supplémentaire pour le même résultat.
- En fin de reconnaissance, tu masques le Userform (Hide) mais le garde en mémoire : inutile, il ne servira plus, mieux vaut le décharger (Unload...)
Il te manque par contre un bouton sur la page d'accueil pour changer d'employé (et donc recharger le userform) après fermeture pour l'employé précédent...
- VérifMDP : inutile de renvoyer une valeur par défaut au démarrage de la fonction, il faut juste que tu t'assures qu'elle n'est jamais interrompue avant de renvoyer une valeur, ce qui est le cas.
Enfin, d'un point de vue général, si ton code est parfaitement indenté à partir du 2e niveau je préfèrerais pour ma part qu'il le soit dès le 1er (1er niveau : seuls Sub, End Sub, et étiquettes de branchement éventuelles apparaissent). Je sais que c'est une pratique courante mais je demeure très classique de ce point de vue car à mon expérience, cela facilite vraiment la lecture...
Mais à côté de code disposé un peu n'importe comment (ce qu'on voit plutôt souvent), ton code est super bien organisé et il n'y a rien à redire à l'articulation de tes procédures.
Si tu dis que tu débutes en VBA, on a un peu de difficulté à le croire !
C'est très bien parti en tout cas. Bonne suite et A+.
Cordialement
Ferrand