Pb Macro condition cellule

Résolu
Bonjour,

J'ai un fichier contenant des informations. Dans une cellule, il y a 1 menu déroulant avec O ou N. Si c'est N, l'utilisateur peut fermer le fichier comme il veut. Si c'est O, il doit remplir obligatoirement une autre cellule. J'ai donc réalisé une macro pour cela. Elle fonctionne bien, mais en fait elle fonctionne trop bien. Lorsque c'est un O, Excel me dit de compléter la cellule, mais lorsque je la complète, il m'empêche quand même de fermer le fichier. Je ne sais pas quoi faire pour qu'il comprenne que j'ai bien rempli la cellule. Voici ma macro :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'avant la fermeture du classeur
If Sheets("Feuil1").Range("H6") = "O" Then
MsgBox "Complétez la cellule H7"
'Empêche la fermeture si la cellule H7 est vide
Cancel = True

End If 'fin de la condition

End Sub

Merci d'avance pour vos réponses.
Configuration: Windows XP Internet Explorer 7.0

5 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Salut,
    Tu ne mets pas, dans ton code la condition : "si H7 = ...".

    If Sheets("Feuil1").Range("H6") = "O" Then 'Si H6 = "O" alors...
    If Sheets("Feuil1").Range("H7") = "toto" then 'Si H7 = toto alors
    exit sub 'tout va bien, on sort de la macro
    else 'sinon ...
    MsgBox "Complétez la cellule H7"
    'Empêche la fermeture si la cellule H7 est vide
    Cancel = True
    End if
    End If 'fin de la condition
    1. Ah ok merci de ta réponse je vais essayer cela, et si ça marche je mettrai le pb en résolu

      Edit : J'ai essayé ce que tu m'as dis, et je te remercie de ta réponse, mais j'ai l'impression que dans ce que tu m'as donné je suis obligé de mettre une valeur dans la cellule H7. Or dans ma cellule, il faut qu'il y ait soit quelque chose, soit rien du tout.

      1. C'est bon j'ai tatonné et j'ai trouvé. Merci en tout cas; pb résolu
        1. Modérateur
          Salut,
          Effectivement d'après mon code :
          If Sheets("Feuil1").Range("H7") = "toto" then
          il devait y avoir écrit "toto" en H7. Je pensais qu'en écrivant toto dans le code tu l'aurais capté tout de suite...
          Si tu veux soit rien soit n'importe quoi tu dois écrire :
          If Sheets("Feuil1").Range("H7") <> "" then

          Ce qui donne la macro suivante :

          If Sheets("Feuil1").Range("H6") = "O" Then 'Si H6 = "O" alors...
          If Sheets("Feuil1").Range("H7") <> "" then 'Si H7 est différent de rien, alors
          exit sub 'tout va bien, on sort de la macro
          else 'sinon ...
          MsgBox "Complétez la cellule H7"
          'Empêche la fermeture si la cellule H7 est vide
          Cancel = True
          End if
          End If

          Cordialement,