MsgBox sous condition

Bonjour à tous,

Je joins le fichier en pj

Je suis aujourd'hui confronté à une difficulté sur Excel 2016. J'ai un tableau de suivi d'assurances, avec la date du dernier renouvellement et la date d'échéance. Un jeu de formule me permet d'obtenir dans la colonne la plus a droite le statut "A RENOUVELER" quand la date d'échéance est dans moins de 15 jours par rapport à la date du jour, ou "EN COURS" quand les assurances sont encore courantes.

Mon objectif est de faire apparaître un MsgBox lorsque "A RENOUVELER" apparaît pour une assurance. Il faudrait dès lors que la MsgBox affiche "Certaines assurances sont à renouveler", tout en proposant deux boutons: Un "Merci" qui stop la macro et la génération de la msgBox, et un bouton "Me le rappeler" qui exécuterai la macro une fois par jour pour prévenir l'utilisateur.

J'ai gratté des lignes de code sans trouver la solution parfaite.

Si vous pouvez m'aider c'est avec joie !

Mon code pour l'instant:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target,Range("A1:E7")) Is Nothing Then

If Range("E2").Value="A RENOUVELER" Then MsgBox "Certaines assurances sont à renouveler",vbExclamation

End If

End If

End Sub

Avec ce code, si "EN COURS" est affiché, cela provoque un gros beug je sais pas gérer ça... De plus la MsgBox ne s'ouvre que si je clique sur (A1:E7), autrement impossible d'afficher la msgBox. Si je ne met pas de limite a l'affichage, la msgBox s'affiche en revanche TOUT LE TEMPS...

Gros dilemme, svp aidez moi !

Merci d'avance,

R1

Bonjour,

Ci-dessous ... un rapide point de départ ...

Option Explicit
Private Sub Workbook_Open()
Dim rng As Range
Dim x As Long
Set rng = Feuil1.Range("E2:E17")
x = Application.WorksheetFunction.CountIf(rng, "A RENOUVELER")
   If x >= 1 Then
      MsgBox "Attention certaines assurances sont à renouveler", vbExclamation
   End If
End Sub

J'espère que cela te donnera un coup de pouce ...

Salut James,

Merci pour ta réponse.

Tu es parti sur une autre piste que la mienne j'ai l'impression, mais celle-ci est en effet peut etre plus simple. J'ai entrer le code dans mon fichier et j'obtiens bien une MsgBox lorsque des "A RENOUVELER" sont présents. Néanmoins, le message n'apparaît qu'UNE SEULE FOIS et il faut que j'éxécute manuellement le code.

Je ne trouve pas comment palier le soucis

Merci en tout cas !

R1

Re,

Effectivement, la macro ne s'exécute qu'à l'ouverture du fichier ....

J'avais compris que tu avais besoin d'une forme de 'warning' ....

Si ce n'est pas celà ... quel est l'évènement qui doit déclencher le message ...?

Yep tu as bien cerné le truc c'est un warning que je souhaite. Néanmoins je rentre le code, et il me faut l'éxécuter au sein du programmateur (Exécution/Exécuter Sub/Userform) pour voir la fenêtre apparaître (Voir fichier joins v2).

L'idéal serait qu'à chaque ouverture du fichier on ai, si et seulement si des "A RENOUVELER" figurent dans la colonne 5 (E2:E17), une msgbox warning précisant qu'il faut renouveler sous 15 jours.

Mais en l'occurence ton code ne s'éxécute pas automatiquement (sauf erreur de ma part, je t'invite à checker la v2 pour voir si c'est moi qui ai mal placé le code ou quoi..)

Merci bien

R1


Voici la v2...

Re,

Désolé ... car j'aurais dû te préciser l'endroit précis dans lequel cette macro doit être placée ....

En effet, ce n'est pas dans le module standard ... ni dans le module de la feuille ...

Ci-joint ... la correction ...

Aaaah, ok merci bcp James !

Quand tu le mets dans ThisWorkbook ca s'applique a tout le classeur c'est cela ?

J'avoue que je ne comprend pas bien les différences/subtilités entre module de classe, feuille, userform, workbook..etc

Bref, la ca fonctionne c'est lourd !

Merci !

Je laisse le post ouvert, considérant ma requête comme partiellement résolue jusqu'ici

A+ !

R1

Content que cela fonctionne ...

Merci pour tes remerciements ...

Rechercher des sujets similaires à "msgbox condition"