macro : si #n/a alors msg box sinon "ok"

noemie45

XLDnaute Occasionnel
Bonjour

j'ai fait une macro qui permet de pointer les cellules ou j'ai #n/a dans une colonne
j'essaye de mettre un msgbox pour dire que s'il n'y a pas #n/a c'est ok.
Mais ma macro tourne en boucle et j'ai toujours le message OK, est ce que vous pouvez m'aider?


Je ne mets pas de fichier exemple car la macro ne s'arrete jamais mais je vous mets le code


Sub suppressionLigne_SiErreur_NA2()
Dim x As Long

For x = 65536 To 1 Step -1

If WorksheetFunction.IsError(Range("Q" & x)) = True Then
If CVErr(xlErrNA) = Range("Q" & x) Then _
MsgBox ("la ligne " & x & " ne contient pas de valeur autorisée")
Else: MsgBox ("ok")
End If

Next x

End Sub
 

CBernardT

XLDnaute Barbatruc
Re : macro : si #n/a alors msg box sinon "ok"

Bonjour noemie45,

Essaye la syntaxe suivante :

Bien sûr le nom de la feuille est à adapter.

Sub suppressionLigne_SiErreur_NA2()
Dim Derlig As Long, x As Long
' Feuille active
With Sheets("Feuil1")
Derlig = .Range("Q65536").End(xlUp).Row
For x = Derlig To 1 Step -1
If IsError(.Range("Q" & x)) = True Then
MsgBox ("la ligne " & x & " ne contient pas de valeur autorisée")
End If
Next x
End With
End Sub
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : macro : si #n/a alors msg box sinon "ok"

Bonjour à tous,

Peux-tu essayer avec :

VB:
Sub Test()Dim X&, DerL&
DerL = Feuil1.Range("Q" & Rows.Count).End(xlUp).Row
MsgBox DerL


For X = DerL To 1 Step -1
If WorksheetFunction.IsError(Range("Q" & X)) = True Then
If CVErr(xlErrNA) = Range("Q" & X) Then
MsgBox ("La ligne " & X & " ne contient pas de valeur autorisée")
Else
MsgBox "OK"
End If
End If
Next X
End Sub

A+ à tous

Edition : Pas vu Bernard... Salut.
 
Dernière édition:

noemie45

XLDnaute Occasionnel
Re : macro : si #n/a alors msg box sinon "ok"

Merci mais

Bernard : je ne veux pas supprimer ma ligne, je souhaite avoir des msg box

JCL : qaund je fais un copier/coller du code j'ai une erreur sur
Sub Test()Dim X&, DerL&
je ne sais pas ce que cela signifie!! je suis une vrai débutante en macro

Philippe : ce message d'erreur est fait pour alerter un pb de saisie, donc je souhaite garder cette erreur.


Je suis preneuse de vos conseils pour mon pb
 

JCGL

XLDnaute Barbatruc
Re : macro : si #n/a alors msg box sinon "ok"

VB:
Sub Test()
Dim X&, DerL&
DerL = Feuil1.Range("Q" & Rows.Count).End(xlUp).Row
For X = DerL To 1 Step -1
If WorksheetFunction.IsError(Range("Q" & X)) = True Then
If CVErr(xlErrNA) = Range("Q" & X) Then
MsgBox ("La ligne " & X & " ne contient pas de valeur autorisée")
Else
MsgBox "OK"
End If
End If
Next X
End Sub

Pasee les Dim à la ligne

A+ à tous
 

Pièces jointes

  • JC Test NA().xlsm
    40.3 KB · Affichages: 29
  • JC Test NA().xlsm
    40.3 KB · Affichages: 36
  • JC Test NA().xlsm
    40.3 KB · Affichages: 36
Dernière édition:

noemie45

XLDnaute Occasionnel
Re : macro : si #n/a alors msg box sinon "ok"

JCGL : La macro fonctionne parfaitement quand j'ai une erreur par contre quand il n'y pas d'erreur le msgbox "ok" ne s'affiche pas.

je ne comprends pas pkoi, j'ai bien ELSE: MsgBox "OK"

Merci pour votre aide
 

mutzik

XLDnaute Barbatruc
Re : macro : si #n/a alors msg box sinon "ok"

re,

1. tu es bien conscient que tu pars de la ligne 65536 pour remonter ... vers 1
2. essaie sur une 10ne de lignes avec tous les cas possibles
3. mets un bout de ton fichier
 

noemie45

XLDnaute Occasionnel
Re : macro : si #n/a alors msg box sinon "ok"

En faisant l'exemple sur 10 lignes, je me rends compte que pour chaque ligne ou je n'ai pas d'erreur, j'ai le msgbox "ok".

alors qu'en fait, je souhaiterais que si je rencontre une erreur, ça me signale l'erreur et si je n'ai pas d'erreur, j'ai un message global qui me dise que tout est ok.Sans valider ligne par ligne
 

Pièces jointes

  • JC Test NA().xlsm
    34.1 KB · Affichages: 21
  • JC Test NA().xlsm
    34.1 KB · Affichages: 23
  • JC Test NA().xlsm
    34.1 KB · Affichages: 22

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : macro : si #n/a alors msg box sinon "ok"

Re Bonjour à tous,

avec ce code:
Code:
Sub test()
    Dim X&, DerL&, test&
    DerL = Feuil1.Range("Q" & Rows.Count).End(xlUp).Row
    For X = 2 To Derl
        If WorksheetFunction.IsError(Range("Q" & X)) = True Then
            If CVErr(xlErrNA) = Range("Q" & X) Then
                MsgBox ("La ligne " & X & " ne contient pas de valeur autorisée"), vbCritical, "Erreur"
            test = 1
            End If
    End If
    Next X
If test = 0 Then MsgBox ("Aucune Erreur trouvée")
End Sub

à+
Philippe
 

Discussions similaires

Réponses
2
Affichages
166

Statistiques des forums

Discussions
312 371
Messages
2 087 697
Membres
103 644
dernier inscrit
bsalah