Message d'erreur en fonction de cases remplies ou non

Greeegoryyy -  
 Greeegoryyy -
Bonjour,

J'ai un petit problème concernant le code suivant :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Dim rep As Integer
Dim Lig As Long

Lig = 4 ' Première ligne à vérifier

Do While Not IsEmpty(Range("A" & Lig))

If (Worksheets("Feuil1").Cells(Lig, 37).Value <> "0") Or (Worksheets("Feuil1").Cells(Lig, 37).Value <> "4") Then
SaveAsUI = False
Cancel = True
rep = (MsgBox("Vous ne pouvez pas sauvegarder si une des cases n'est pas remplieaa !"))
ElseIf (Worksheets("Feuil1").Cells(Lig, 36).Value <> "0") Or (Worksheets("Feuil1").Cells(Lig, 36).Value <> "4") Then
SaveAsUI = False
Cancel = True
rep = (MsgBox("Vous ne pouvez pas sauvegarder si une des cases n'est pas rempliezz !"))
ElseIf (Worksheets("Feuil1").Cells(Lig, 35).Value <> "0") Or (Worksheets("Feuil1").Cells(Lig, 35).Value <> "4") Then
SaveAsUI = False
Cancel = True
rep = (MsgBox("Vous ne pouvez pas sauvegarder si une des cases n'est pas remplieee !"))
ElseIf (Worksheets("Feuil1").Cells(Lig, 34).Value <> "0") Or (Worksheets("Feuil1").Cells(Lig, 34).Value <> "21") Then
SaveAsUI = False
Cancel = True
rep = (MsgBox("Vous ne pouvez pas sauvegarder si une des cases n'est pas rempliess !"))
Else
SaveAsUI = True
Cancel = False
End If

Lig = Lig + 1

Loop

End Sub


Je ne comprend pas car, peut importe si la cellule vérifiée de la première condition vaut 4 ou 0, il suit le then et me renvoie le premier messagebox, au lieu de, comme prévu, passer au elseif.

Merci d'avance pour vos réponse, cordialement.

3 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour
    Essaye un AND au lieu fu OR
    1
  2. Greeegoryyy
     
    Non je n'obtiendrais pas le résultat attendu, puisque ça passerait au elseif si les deux conditions sont réunies, et pas si au moins une des deux est présente.
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
       
      Dans ce cas tu gardes tes OR ... mais... a la place de <> .. tu mets du =
      0
  3. Greeegoryyy
     
    Je suis en train d'essayer avec les And, je crois bien que ça fonctionne... Je continue mes tests, si ça fonctionne je te remercie beaucoup de tes réponses jordane45 !
    0