Microsoft 365 Succession de conditions avant de fermer le fichier

  • Initiateur de la discussion Initiateur de la discussion raf26
  • 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 !

raf26

XLDnaute Occasionnel
Bonjour,

J'ai sur mon fichier des contrôles en BeforeClose

Différentes alertes qui s'affichent suivant conditions.

Chacune marche si elle est seule dans le BeforeClose

Problème , je n'arrive à faire enchainer les conditions pour déclencher chaque msgbox :

  1. pour les 2 premières : si oui je retourne en feuille1 / si non je passe à la condition suivante
  2. pour la 3ème, si condition = oui message info, clique ok et ensuite affichage usf / si condition = non ignore et affichage usf
  3. enfin si aucunes des 3 premières conditions réunies, si condition dernière condition = oui affichage usf / si condition = non fermeture du fichier
  4. si aucune des 4 conditions, fermeture du fichier
Il y a surement des trucs mal placés ou absent, mais je ne vois pas quoi.



Ci-dessous mon code que j'ai aéré pour être plus lisible
------------------------------------------------------------------------------------------------------------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)

'1ere condition

With Sheets("FEUILLE1")

If Range("M10").Value Like "*MAJUSCULES*" And .Range("S148") < 800 Then

If MsgBox("mon texte" & Chr(13) & Chr(10) & "ma question ?", vbQuestion + vbYesNo, "- - - ATTENTION - - -") = vbYes Then

Cancel = True

Exit Sub

End If

End If

End With

'2ème condition

With Sheets("FEUILLE1")

If Range("M10").Value Like "*minuscules*" And .Range("S148") < 800 Then

If MsgBox("mon texte" & Chr(13) & Chr(10) & "ma question ?", vbQuestion + vbYesNo, "- - - ATTENTION - - -") = vbYes Then

Cancel = True

Exit Sub

End If

End If

End With

'3ème condition


If Sheets("FEUILLE1").Range("M10") = "blablabla" Or Sheets("FEUILLE1").Range("G7") = "" Then

If Sheets("feuille2").Range("I18") > 0 Or Sheets("feuille2").Range("I20") > 0 Then

MsgBox "mon texte", vbInformation, "- - - ATTENTION - - -"

End If
Else

'4ème condition

If Sheets("FEUILLE1").Range("G10").Value Like "@ blabla @" Then
UserForm3.Show
End If
End If
End Sub

--------------------------------------------------------------------------------------------------------------

Merci d'avance pour votre aide.

Bonne soirée.
 
Bonjour
Voilà le fichier à vérifier , j'ai balayé les tests .... il n'y avait pas beaucoup de modif à faire ??
juste un Pb de format pour le mail > mettre "texte" et pas standard
Regarde et dis moi ce qu'il en est
 

Pièces jointes

Hervé,

Tout d'abord, je tiens à te remercier pour ton retour rapide.

J'ai bien rectifié le format pour la cellule mail (passé en texte).

Il me reste 2 problèmes :

- Cas ou les 3 premières conditions ne sont pas présentes, le controle mail ne s'effectue pas.

- Cas ou la 3ème condition ok déclenche la msgbox et 4ème ok mail renseigné mais le clic ok de la msgbox 3 ne ferme pas le fichier.

Ci-joint le fichier avec les annotations sur l'onglet NUM1.

Edit :

Je me demande si le mieux pour la 4ème condition (contrôle du mail) n'est pas de la placer dans l'évènement Worksheet_Change ou Worksheet_Calculate de l'onglet NUM1.
Je ne suis pas obligé d'attendre la fermeture du ficher pour recevoir cette alerte.

Et placé ailleurs que dans Before_Close.......cela résoudrait mon problème 🙂

Cordialement
 

Pièces jointes

Dernière édition:
Je viens de revérifier , sauf que j'ai ajouté à la fin cancel= false puisque tout a été balayé et que le but est quand même de fermer le fichier , normalement tout fonctionne
voir images : , 1er test et les 2 étapes pour le test 2
j'ai fait ce qui est marqué

mail.jpg
cond4-1.jpg
cond4-2.jpg
 
De rien ... si cela te va
Astuce : pas de secret , si tu veux apprendre + vite , va comme j'ai dis en mode "debug " mets des point d'arrêt , et avance en 'pas à pas ' (F8) , à chaque ligne jaune tu peux survoler le curseur juste sur une variable , tu auras sa valeur , un coup de F8 et tu auras sa nouvelle valeur après exécution
Très intéressant pour les IF ..... tu vois de suite comment il s'exécute ( comme ici) c'est comme ça que j'ai vu que "@ non renseigné @" n'allait pas, pourtant c'était écrit PAREIL ? et en vérifiant j'ai modifié en format Texte !
Voilà , donc tout va bien ?
Bonne continuation
 
Bien merci ... c'est le but de ce forum
A toi de jouer maintenant
Là je suis sur un autre cas ... ( mais en perso)
Bonne continuation , ce forum est le meilleur de tous .... comme la Pub , pas de blablabla mais des résultats
 
- 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

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
234
Réponses
4
Affichages
139
Retour