Bonjour,
Evidemment ton userForm s'ouvrira chaque fois que tu lanceras ton fichier, car tu l'as demandé avec
Private Sub Workbook_Open()
UserForm1.Show 0
End Sub
Comme tu ne veux l'ouvrir que sous condition, il faudra que tu ne l'appelles que lorsque tes conditions sont respectées "personne inactive" et/ou "aucun contrat à renouveler dans les 15 jours".
Tu pourrais, par exemple, appeler cet UserForm en cliquant sur le nom d'une personne en ajoutant dans la procédure de cet appel, les conditions précitées
Ou autrement selon ton désir, mais surtout pas dans "WorlBook"
De plus il y a quelquechose qui ne convient pas dans ton code, tu as écrit :
Affaire = 5
Do While Affaire <= DerLigne
If Cells(Affaire, 2) > DateJour - 1 And Cells(Affaire, 5) <= DateJour + 15 Then '13 colonne M
donc quant tu commences ta boucle, la première cellule qui est étudiée est la cells(5,2) que tu as masquée (pas trop grave), mais surtout tu compares son contenu à "Datejour-1",
ainsi si tu compares Cells(7, 2) à Datejour-1 tu cherches à comparer "Thomas" à "28/12/2024" (pour aujourd'hui le 29/12/2024)
Je ne comprends pas très bien