Microsoft 365 Msgbox qui doit s'afficher une seule fois

  • Initiateur de la discussion Initiateur de la discussion pat66
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pat66

XLDnaute Impliqué
Bonjour le forum,

pourriez vous m'aider à faire en sorte que le message ne s'affiche qu'une seule fois au premier changement de l'une de ces 2 cellules

un grand merci

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
If Not Application.Intersect(Target, Range("F30,F33")) Is Nothing Then
MsgBox "Le changement de lot réinitialise les pages ""Feuil"" et ""Feuil2"" " & Chr(13) & Chr(13) & "Veuillez redéfinir la valeur initiale", vbOKOnly + vbInformation, "avertissement"
Application.EnableEvents = True
End If
end sub

pat66
 
Solution
Bonjour pat66 🙂 ,

Testez le code suivant (dans le module de la feuille) :
VB:
Option Explicit
Dim dejaFait As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
   Application.ScreenUpdating = False
   If Not Application.Intersect(Target, Range("F30,F33")) Is Nothing Then
      If Not dejaFait Then
         MsgBox "Le changement de lot réinitialise les pages 'Feuil' et 'Feuil2' " & vbLf & vbLf & "Veuillez redéfinir la valeur initiale", vbOKOnly + vbInformation, "avertissement"
         dejaFait = True
      End If
   End If
End Sub
Bonjour pat66 🙂 ,

Testez le code suivant (dans le module de la feuille) :
VB:
Option Explicit
Dim dejaFait As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
   Application.ScreenUpdating = False
   If Not Application.Intersect(Target, Range("F30,F33")) Is Nothing Then
      If Not dejaFait Then
         MsgBox "Le changement de lot réinitialise les pages 'Feuil' et 'Feuil2' " & vbLf & vbLf & "Veuillez redéfinir la valeur initiale", vbOKOnly + vbInformation, "avertissement"
         dejaFait = True
      End If
   End If
End Sub
 
Bonjour,
Peut être comme ceci sans conviction car pas testé
VB:
Public xOnEstDejaPasseIci As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    If xOnEstDejaPasseIci = False Then
        If Not Application.Intersect(Target, Range("F30,F33")) Is Nothing Then
            MsgBox "Le changement de lot réinitialise les pages ""Feuil"" et ""Feuil2"" " & Chr(13) & Chr(13) & "Veuillez redéfinir la valeur initiale", vbOKOnly + vbInformation, "avertissement"
            xOnEstDejaPasseIci = True
        Else
            xOnEstDejaPasseIci = False
        End If
    End If
    Application.EnableEvents = True
End Sub
Edit : Bonjour @mapomme, oups pas rafraichi.
@+ Lolote83
 
Dernière édition:
bonjour le fil,

Merci à tous pour la rectification ("F30,F33")

mapomme, je viens de m'apercevoir qu'il fallait placer en début de feuille
Option Explicit
Dim dejaFait As Boolean

je reteste..... je reviens le temps de rouvrir le classeur

merci
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
0
Affichages
538
Réponses
2
Affichages
718
Réponses
3
Affichages
555
Compte Supprimé 979
C
Retour