Message a l ouverture du fichier selon critères

Bonjour a Toute et Tous

En premier je vous souhaites de très Bonne fête de fin d'Année et plein de bonheur a toutes et tous

J'ai un fichier qui gère renouvellement de contrat et pour avoir une alerte , j'ai trouvé sur le forum une macro que j'ai adapté a ce fichier et qui m aide beaucoup

Malheureusement , j'aimerais rajouté dans cette macro deux autres critères et la je bloque , voila pourquoi je me permet de demander de l'aide

Ce que j'aimerais bien rajouter dans cette macro , c'est :

- Si la personne est Inactif , alors ne pas apparaître dans le message a l'ouverture

- Si Aucun contrat a renouveler dans les 15 jours suivant date du jour , pas de message a l'ouverture

J’espère être claire dans ma demande , et merci par avance pour votre aide

Bon Dimanche et bonne fêtes

Nath

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

Bonjour Jacky

Merci pour ta réponse

Je ne suis pas une experte en macro , j'ai juste essayé de l adapter sur mon fichier , d ou les erreurs

Peux tu m aider a la modifier afin de fonctionner correctement

Par avance merci pour ton aide , si tu veux et surtout si tu as le temps

Bon Dimanche

Nath

Re Nath,

Je reprends donc ton fichier
Si j'ai bien compris tu veux accéder à un UserForm tel que tu l'as construit actuellement, mais tu ne veux pas que dans ce dernier apparaisse le nom de personnes qui sont inactives et/ou pour qui aucun contrat n'est à renouveler. C'est à dire que tu ne veux pas qu'apparaisse le nom des personnes pour lesquelles la cellule qui leur correspond dans la colonne "H" est vide et non "à faire"
Est ce bien cela ?

Jacky

Il faut qu a l ouverture , ne prenne en compte que les personnes Actives , et a 15 jours de la date de renouvellement mais pas les personnes inactives et si personne Active a plus de 15 jours , pas affichage a l ouverture

Merci Merci Beaucoup

Nath

Re,

Je reviens (beaucoup) sur ce que j'ai dit car je n'avais pas bien compris ce que tu voulais
Voici ton fichier qui fera apparaitre à son ouverture le combobox dans lequel tu n'auras que les personnes qui répondent à tes besoins

Jacky

C'est Super , cela fonctionne bien , mais il manque juste un truc je m explique

Si personne a faire dans les 15 jours , pas de message a l ouverture , cela est il possible a faire

Merci grand merci a toi

Nath

Nath,

Est ce que cela peut te convenir
Pour en voir l'effet (c'est à dire quand il n'y a aucun "a faire") tu déplaces provisoirement les "a faire" ("H7:H17") en colonne K, afin de n'avoir aucun "a faire" en colonne H. Evidemment tu remets cette plage en place si tu es satisfaite.

Tiens moi au courant Svp

Salut Nath, Jacky,

une fonction pour 2 usages si le critère est rencontré.

Public Function fctListe(ByVal iFct%)
'
Dim tTab, tData(), iIdx%, iFlag%
'
With Worksheets("Suivi Contrat")
    tTab = .Range("A7:F" & .Range("B" & Rows.Count).End(xlUp).Row).Value
    For x = 1 To UBound(tTab, 1)
        iFlag = DateDiff("d", Date, CDate(tTab(x, 5)))
        If iFlag < 15 And tTab(x, 6) = "Actif" Then
            iIdx = iIdx + 1
            ReDim Preserve tData(5, iIdx)
            tData(0, iIdx - 1) = tTab(x, 1)
            tData(1, iIdx - 1) = tTab(x, 2)
            tData(2, iIdx - 1) = tTab(x, 3)
            tData(3, iIdx - 1) = tTab(x, 4)
            tData(4, iIdx - 1) = "Encore " & iFlag & IIf(iFlag = 1, " jour.", " jours.")
        End If
    Next
    fctListe = IIf(iFct = 0, iIdx, tData)
End With
'
End Function

A+

17nath.xlsm (117.11 Ko)

Bonjour

Merci pour votre aide

Je vais garder la solution de Jacky

Vous souhaites d'excellente fêtes de fin d'année

Nath

Bonjour Nath,

merci pour ta réponse

Un petit truc en plus dans mon code afin d'éviter les désagréments visuels sur l'écran du fait de l'ouverture et fermeture de ton Userform lorsque qu'il est vide

Application.ScreenUptading = False
'au début du code, et
Application.ScreenUpdating
' en fin de code
Rechercher des sujets similaires à "message ouverture fichier criteres"