afficher msgbox une seule fois

rh.finances

XLDnaute Occasionnel
Bonjour à tous les colistiers de ce super site!

je ne suis pas un grand spécialiste du langage Vba et je bute sur un problème dont je n'ai pas réussi à trouver la solution malgré plusieurs recherches sur le net.
dans mon fichier Excel ci-joint - onglet "nom agent", j'ai créé la macro suivante :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Range("droit_subrogation") < 0 Then
MsgBox "la subrogation ne peut être appliquée. les IJ doivent être perçues directement par l'agent et les jours d'absence retirées de la paie", vbOKOnly + vbInformation, "subrogation"
End If

ActiveSheet.Name = Range("nom").Value

End Sub

cette macro fonctionne très bien, toutefois, je souhaiterais simplement que la msgbox ne s'affiche qu'une seule fois lors de la survenance de l’événement, puis cesse ensuite de fonctionner et ce même si la condition déclenchant la macro demeure remplie.
j'ai essayé de tenter des trucs avec "do", "undo" mais rien de concluant.

merci d'avance pour votre aide

Alex
 

Pièces jointes

  • calculateur - dt à subrogat° + calcul IJSS.xls
    64.5 KB · Affichages: 32

job75

XLDnaute Barbatruc
Bonjour rh.finances,

Il faut mémoriser l'information dans le nom défini "OK" :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If TypeName([OK]) <> "Boolean" Then ThisWorkbook.Names.Add "OK", False 'création du nom défini
If Range("droit_subrogation") < 0 Then
    If Not [OK] Then
        MsgBox "la subrogation ne peut être appliquée. Les IJ doivent être perçues directement par l'agent et les jours d'absence retirés de la paie", vbOKOnly + vbInformation, "Subrogation"
        ThisWorkbook.Names.Add "OK", True
    End If
Else
    ThisWorkbook.Names.Add "OK", False 'RAZ
End If

ActiveSheet.Name = Range("nom").Value

End Sub
A+
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 127
Membres
112 667
dernier inscrit
foyoman