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

  • Initiateur de la discussion Initiateur de la discussion noemie45
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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:
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:
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
 
Re : macro : si #n/a alors msg box sinon "ok"

Re,

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

Dans ce cas il faut contrôler et empêcher les saisies erronnées
......... j'ai horreur de voir des erreurs sur une feuille Excel 😡😡😡

à+
Philippe
 
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

Dernière édition:
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
 
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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
837
Réponses
8
Affichages
748
Retour