Comment créer un msgbox calculé

Bonjour ,

Je suis actuellement en stage et je doit optimiser un support excel. Je souhaiterai créer une macro me permettant dès l'ouverture du classeur d'afficher un message pour chacun des contrats si le préavis est dépassé. Par exemple j'ai un contrat d'une durée de 1 an il est renouvelable par tacite reconduction tous les 01/05 d'un an. Cependant il y faut prendre en compte le préavis de 2 mois donc pour le résilier il faut une alerte au 01/03.

Je ne sais pas si c'est compréhensible, si vous pouvez m'aider svp.
Merci par avance.

Bonjour,

Un test :

Sub PRESTA()
Dim PRESTA As Variant
Dim RESULT As Variant
With Worksheets("CONTRATS ")
    For Each PRESTA In .ListObjects("Tableau4").ListColumns(11).DataBodyRange
        If IsDate(PRESTA) And Not IsEmpty(PRESTA) And PRESTA <> 0 Then
            If Application.WorksheetFunction.EoMonth(PRESTA, -2) < Date Then RESULT = RESULT & vbCrLf & .Cells(PRESTA.Row, 4)
        End If
    Next PRESTA
End With
MsgBox "Bonjour, vous pouvez résilier le contrat de " & RESULT
End Sub

Par contre je doute fortement qu'il soit judicieux de mettre cette macro dans un Workbook.Open.

De plus, pourquoi ne pas simplement mettre en place une mise en forme conditionnelle ? Le messagebox ici ne servirait à rien car il serait impossible de filtrer quoique ce soit, tandis qu'une MEFC permettrait de filtrer sur la couleur indiquée.

Cdlt,

J'ai un soucis avec mes MFC je n'arrive pas à exécuter plusieurs conditions simultanément.

Bonjour,

Dites m'en plus, il est possible d'avoir des multi MEFC. Il faut juste avoir bien défini tous les paramètres et quelle est la priorité en fonction du besoin. C'est un excellent travail de réflexion pour un stage et une bonne optimisation. Discutez en avec votre maître de stage ou donnez nous le besoin exact avec le résultat attendu.

Cdlt,

Dans ce classeur il faut arriver à mettre en couleurs les dates de fin de validité en vert les dates lorsqu'elles sont supérieurs à 90 jours en orange celles supérieure à 60 jours et rouge celle inférieur ou égale à 30 jours. et les 3 MFC ne s'exécutent pas simultanément , je pense que cela vient de ma formule j'ai essayé avec DATEDIF mais je n'ai pas trouvé la bonne syntaxe.

Bien cordialement

Bonjour,

Si j'ai bien compris le fichier joint corrigé. Si ça ne répond pas aux attentes merci de me préciser le résultat en coloriant les cellules de la bonne couleur.

Cdlt,

C'est exactement ça. Pour les cellules restés blanches l'idéal serait quelles soient vertes.

Bonjour,

Dans ce cas il suffit de modifier la dernière condition :

=C4<=AUJOURDHUI()+90

Il est donc plus simple, je trouve, en fonction de vos besoins, de travailler avec une MEFC qu'un code VBA.

Cdlt,

Donc je peux reprendre ces syntaxes MFC pour ma première requête ?

Merci beaucoup

Bien cordialement

Bonjour,

Bien sûr ! Ci-joint.

Cdlt,

En effet pour le classeur des contrats ce n'est pas réellement la même chose étant donné que chaque contrat à sa date de renouvellement. L'objectif ici c'est de pouvoir avoir une alerte (si par exemple le préavis est de 2 mois), 2 mois avant la date de renouvellement pour déterminer si l'entreprise renouvelle son contrat ou le résilie. Je ne sais pas si c'est plus clair.

Bien cordialement

Bonjour,

Dans ce cas une seule ligne :

=ET($N3<>"";MOIS.DECALER($N3;-2)<=AUJOURDHUI())

Cdlt,

Auriez-vous une méthode qui permettrait de pouvoir enlever la couleur si on ne veut pas résilier le contrat par exemple ?

Bien cordialement

Bonjour,

Si vous inscrivez "ne pas résilier" parmi la phrase dans le commentaire alors :

=ET(NON(ESTNUM(CHERCHE("ne pas résilier";$O3)));$N3<>"";MOIS.DECALER($N3;-2)<=AUJOURDHUI())

Sinon il faudra me dire par quel indicatif vous indiquez ne pas vouloir résilier le contrat.

Cdlt,

Bonjour,

J'ai du mal à exprimer ma demande. Ce que je voudrais c'est un message d'alerte permettant de dire "Ce contrat peut etre résilié voulez-vous le résilier ? OUI-NON".

Est ce possible de créer ce type d'alerte grâce à un msgbox ou autre

biencrdt

Bonjour,

Sans modifier une valeur ça me semble tourner vers l'usine à gaz car il faudrait alors exclure cette ligne de la plage d'application de la MEFC. Je pense à titre personnel qu'il vaut mieux se servir d'une colonne (COMMENTAIRE ou autre) pour y annoter ce genre d'information, sur laquelle se basera la MEFC pour ne pas renvoyer de couleur. Un MsgBox peut inviter l'utilisateur à lui demander s'il souhaite résilier ou non peut importe, mais exclure une ligne d'une MEFC ne me semble pas être un choix judicieux.

Un exemple sur un msgbox qui vous invite à ne pas résilier le contrat à chaque fois que vous cliquez sur une cellule commentaire dont le contrat n'est pas à résilier :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(ActiveSheet.ListObjects(1).ListColumns(12).DataBodyRange, Target) Is Nothing Then
    If Target.Find("ne pas résilier", , xlValues, xlPart) Is Nothing Then
        If MsgBox("Souhaitez vous résilier ce contrat", vbYesNo + vbInformation) = vbYes Then Target = Target & " ne pas résilier"
    End If
End If
End Sub

Intégrable également dans un bouton.

Cdlt,

En effet cela reste très complexe.

Je vous remercie infiniment pour votre aide et vos conseils.

Merci !

Rechercher des sujets similaires à "comment creer msgbox calcule"