Pb macro

Résolu
Bonjour,
J'ai fait une macro mais j'ai un pb. Voici la macro

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Sheets("Feuil1").Range("J6") = "A" Then
If Sheets("Feuil1").Range("I15") < 10000 Then
MsgBox "Attention le montant de la commande est inférieur à 10000€ "
Cancel = True
If Sheets("Feuil1").Range("I6") = "O" Then
If Sheets("Feuil1").Range("I7") = "N°ORAN :" Then
MsgBox "Merci d'indiquer le numéro d'ORAN dans la cellule I7"
End If
End If
End If
End If
End Sub

Tout va bien lorsque je teste ma 1ère condition. Le classeur ne se ferme pas. Par contre, lorque la condition pour la cellule I6 n'est pas respecté, il ne m'empeche pas de sortir du classeur. Je sais qu'il ne me manque pas grand chose mais je ne trouve pas. Merci d'avance
Configuration: Windows XP Internet Explorer 7.0

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonsoir,

    Pas sûr d'avoir compris tes conditions de sortie (plusieurs interprétations possibles vu que ton code est à-priori faux) mais essaie comme ça :
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        If Sheets("Feuil1").Range("J6") = "A" And Sheets("Feuil1").Range("I15") < 10000 Then
            MsgBox "Attention le montant de la commande est inférieur à 10000€ "
            Cancel = True
        End If
        If Sheets("Feuil1").Range("I6") = "O" And Sheets("Feuil1").Range("I7") = "N°ORAN :" Then
            MsgBox "Merci d'indiquer le numéro d'ORAN dans la cellule I7"
            Cancel = True
        End If
    End Sub
    

    eric
    1. Magnifique, merci ça marche, et maintenant si je voulais encore interdire d'autres valeurs dans la cellule J6 comment je ferais?? Merci en tout cas elle fonctionne bien
      1. Contributeur
        Ben tout dépend du nombre de valeurs à tester et si c'est toujours suivi du même test sur I15...
        1. Oui ce serait pour une dizaine de valeurs. Je vais esssayer avec Or et on verra bien le résultat. Merci Pb résolu
          1. Contributeur
            Tu peux faire comme ça, ça sera plus court :
            if Sheets("Feuil1").Range("I15") < 10000 Then
            select case Sheets("Feuil1").Range("J6")
            case "A" ,"B","C"
            MsgBox "Attention le montant de la commande est inférieur à 10000€ "
            Cancel = True
            end select
            End If

            eric