Bonjour G'claire
Le contrôle Calendar n'était pas là pour que tu l'utilises mais pour que cette démo fonctionne et pour faire des essaie sur des dates différentes facilement sans avoir à en saisir, c'est tout.
Tu n'es pas loin mais tu n'as pas lu cette phrase dans mon post d'hier :
"Donc je te laisse voir, c'est simple, je passe par l'index de feuille ce qui subordonne un certain ordre dans ton classeur par contre."
En fait ceci => "TheNum = CByte(Month(Date))" converti la date système actuelle en un nombre de 1 à 12 (aujourd'hui le 5 si l'horloge de ton PC est bien réglèe)
Le "TheNum" va être utilisé en index de Feuille. (voir aide à Worksheet, objet)
Et ensuite ceci => "For i = TheNum To 12" va donverti boucler à partir de "TheNum" (donc 5 pour aujourd'hui) jusqu'à 12...
Donc tel que je vois ton fichier, si on fait tourner tel quel, on va écrire d'Avril à Novembre.... Comprends-tu pourquoi ?
Le fait que tu utilises un Label pour retourner l'info sur chaque feuille te masque un peu le problème, mais si tu écrivais sur une Range, tu aurais un retour d'info sur la feuille "Menu" aussi... Comprends-tu pourquoi ?
Mais oui, tu as compris !! il y a un décalage car la feuille Menu n'est pas à sa place !!! (ou bien tu gère ce décalage sur TheNum)
Sinon, en passant, ton tableau de mois ne sert strictement à rien !! La preuve remplace ton initialisation du UserForm par celle-ci :
Private Sub UserForm_Initialize()
Dim TheNum As Byte
TheNum = CByte(Month(Date))
Nom = Worksheets(TheNum).lblNomSalarie
Adresse = Worksheets(TheNum).lblAdresseSalarie
CPostal = Worksheets(TheNum).lblCodePostalSalarie
Ville = Worksheets(TheNum).lblVilleSalarie
End Sub
Bon Dimanche G'Claire et le Forum
@+Thierry
PS 1 = Dans ce cas là (sans calendar), inutile aussi de Déclaration Dim TheNum et Dim TheDate Public niveau Module car il n'y a pas d'appel de ces variables inter-procédure.
PS 2 = Dans ce cas là aussi Dim TheDate peut être carrément supprimée, ainsi que son initialisation ("TheDate = Month(Date)") puisque non-utilisée.
PS 3 = Si tu veux avoir confirmation écrite réélle de la feuille de départ (vérification décalage) écrit plutôt ceci :
MsgBox "Les données seront modifié de : " & (Worksheets(TheNum).Name) & " à " & (Worksheets(12).Name)
A la place de :
MsgBox "Les données seront modifié de : " & Format(Date, "MMMM") & " à Décembre"
BYe BYe