Microsoft 365 Succession de conditions avant de fermer le fichier

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.
 

raf26

XLDnaute Occasionnel
Re bonjour,

Je vous joins un fichier épuré au max.

Dans la feuille données, j'ai récapitulé au mieux les étapes qui doivent apparaitre dans le BeforeClose.

J'espère avoir été assez clair.

Bonne journée à vous
 

Pièces jointes

  • test6.xlsm
    55.2 KB · Affichages: 9

raf26

XLDnaute Occasionnel
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

  • test6 (2).xlsm
    40.4 KB · Affichages: 7
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
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
 

herve62

XLDnaute Barbatruc
Supporter XLD
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
 

Discussions similaires

Réponses
2
Affichages
193
Réponses
2
Affichages
147

Statistiques des forums

Discussions
312 180
Messages
2 085 995
Membres
103 082
dernier inscrit
adri77