afficher msgbox une seule fois

rh.finances

XLDnaute Junior
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
312 103
Messages
2 085 325
Membres
102 862
dernier inscrit
Emma35400