Problème Macro

XkevinX

XLDnaute Junior
Bonjour le Forum,

Débutant sur le VBA, je rencontre un problème.

Alors j'ai un petit souci sur une macro qui doit vérifier des données avant de valider l'enregistrement du classeur.

J'ai l'erreur Incompatibilité de type (13) dans le IF.

Voici le code :
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call ErreurDepart
End Sub

Sub ErreurDepart()
Dim NumLigne As Integer
Dim m As Integer

 For NumLigne = 9 To Range("J65536").End(xlUp).Row
  For m = 9 To Range("J65536").End(xlUp).Row
   If Range("J" & NumLigne).Value <> 0 And Range("M" & m).Value = "#N/A" Then
    MsgBox ("Il y a une erreur dans l'heure de départ dans la cellule J" & NumLigne)
        Else: ThisWorkbook.Save
   End If
  Next m
 Next NumLigne
 Exit Sub
End Sub

La ligne posant problème est :
Code:
 If Range("J" & NumLigne).Value <> 0 And Range("M" & m).Value = "#N/A" Then

Le #N/A est le retour d'une formule dans la cellule Mx qui prend en paramètre la cellule Jx.

EDIT: La colonne M est déjà remplie de #N/A par défaut car la colonne J est vide. L'utilisateur complète la colonne J.

Je vous remercie par avance.

Cordialement,
 

WUTED

XLDnaute Occasionnel
Re : Problème Macro

Re,

En réalité, cela ne fonctionne pas, je me suis penché un peu sur ce que tu voulais faire et sur ce que tu faisais en réalité, si tes données sont fausses, ta msgbox apparait mais l'enregistrement a quand même lieu. Voici la dernière version du code, simplifié et qui devrait correctement empêcher la sauvegarde :

VB:
Private Erreur As Boolean
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        Call ErreurDepart
        If Erreur = True Then
            Cancel = True
            Erreur = False
        End If
End Sub
Sub ErreurDepart()
 Dim NumLigne As Integer
 For NumLigne = 9 To Range("J65536").End(xlUp).Row
   If Range("J" & NumLigne).Value <> 0 And IsError(Range("M" & NumLigne).Value) Then
      MsgBox ("Il y a une erreur dans l'heure de départ dans la cellule J" & NumLigne)
      Erreur = True
      Exit For
   End If
 Next NumLigne
End Sub
 

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz