Problème avec MsgBox

Piaf79

XLDnaute Junior
Bonsoir à tous,

J'ai un code qui doit ouvrir un MsgBox si les conditions ne sont pas respectées :

Code:
Sub MesPerso3(Art, Col)
        MsgBox "Veuillez renseigner l'intégralité des champs avant de débuter la saisie des données.", vbExclamation, "Module de gestion"
        ActiveCell.ClearContents
End Sub

Mon soucis est que la MsgBox s'affiche et la cellule active se vide mais ensuite impossible de fermer la MsgBox après avoir cliqué sur "OK".

Quelqu'un à t il une idée, une solution à me proposer ?

Bonne fin de soirée.

Piaf 79
 

leakim

XLDnaute Occasionnel
Re : Problème avec MsgBox

Bonsoir,

essais avec
Code:
Sub MesPerso3(Art, Col)
        If MsgBox("Veuillez renseigner l'intégralité des champs avant de débuter la saisie des données.", vbExclamation, "Module de gestion") = vbOK Then
        activecell.ClearContents
End Sub

Cordialement,

Leakim
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Problème avec MsgBox

Bonsoir Piaf79,

N'ayant pas de fichier exemple, il est difficile de se prononcer. Un cas qui me vient à l'esprit est celui où votre procédure MesPers3 serait appelée via une procédure évènementielle de feuille de type Worksheet_Change(ByVal Target As Range).

Dans ce cas:
  • la procédure MesPerso3 affiche la boite de dialogue MsgBox
  • un clique sur le bouton referme la boîte de dialogue Msgbox
  • on efface ensuite la cellule ActiveCell
  • ce faisant, Excel détecte une modification de la cellule ActiveCell
  • Excel relance donc la procédure évènementielle Worksheet_Change(...) qui elle-même relance MesPerso3
  • la procédure MesPerso3 affiche la boite de dialogue MsgBox
  • un clique sur le bouton referme la boîte de dialogue Msgbox
  • on efface ensuite la cellule ActiveCell
  • ce faisant, Excel détecte une modification de la cellule ActiveCell
  • Excel relance donc la procédure évènementielle Worksheet_Change(...) qui elle-même relance MesPerso3
  • la procédure MesPerso3 affiche la boite de dialogue MsgBox
  • un clique sur le bouton referme la boîte de dialogue Msgbox
  • on efface ensuite la cellule ActiveCell
  • ce faisant, Excel détecte une modification de la cellule ActiveCell
  • Excel relance donc la procédure évènementielle Worksheet_Change(...) qui elle-même relance MesPerso3
  • la procédure MesPerso3 affiche la boite de dialogue MsgBox
  • etc.
  • et ainsi de suite, jusqu'à la fin des temps... (et c'est loin la fin des temps!)
    • à moins d'appuyer sur Ctrl+Pause

Pour éviter cela, il faut empêcher la détection des évènements par Excel avant d'effacer la cellule ActiveCell et la rétablir après l'effacement.

On remplace :
Code:
ActiveCell.ClearContents
par :
Code:
Application.EnableEvents = False
  ActiveCell.ClearContents
  Application.EnableEvents = True
Mais toute cette prose n'est que conjecture oiseuse puisqu' aucun fichier n'a été fourni...:(
 
Dernière édition:

Piaf79

XLDnaute Junior
Re : Problème avec MsgBox

Bonjour à tous les deux, le forum,

- Leakim : j'avais déjà essayé cette solution mais cela ne fonctionnait pas non plus.
- Mapomme : vous avez bien cerné la chose et la modification de mon code par le votre résout parfaitement mon problème.

Merci pour vos deux réponses et m'avoir permis d'avancer sur mon fichier.

Bon dimanche.
Piaf79
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 098
Membres
103 116
dernier inscrit
kutobi87