XL 2016 RESOLU. VBA aide adaptation code VBA de rechercher d’erreurs dans une feuille

richard31

XLDnaute Occasionnel
Bonjour!

j’ai trouvé un code VBA qui permet de rechercher les erreurs dans un classeur et d’afficher ensuite une fenêtre qui liste les cellules en erreurs. Voici le lien très bien expliqué avec deux vidéos (je suis mauvais en VBA ^^):http://www.xlerateur.com/divers/2016/11/24/vba-ajouter-un-outil-de-recherche-derreur-5426/

Le souci est que cela ne fonctionne pas si on à des codes d’erreurs Excel classiques (#NUL!
#DIV/0!
#VALEUR!
#REF!
#NOM?
#NOMBRE!
#N/A

L’utilisateur ne scanne que le MOT “erreur” c’est bête car je trouve ça super ! SI on à un gros fichier pour s’assurer qu’il n’y à pas d’erreurs de formules liens ou autre.

Qui serai le regarder pour qu’en fait il scanne tous les classeurs et identifie les erreurs ( en indiquant la feuille , la ou les cellules ) ce que fait cet outil mais pas correctement …
 

Pièces jointes

  • navigation-erreurs 1.xlsm
    18.6 KB · Affichages: 13

richard31

XLDnaute Occasionnel
la liaison ne remonte pas en erreur . Il y à que si on va voir la formule. D' ou le souci bien sur . Il faudrait enlever tous les SIERREUR mais je ne peux pas :(
mais c'est déjà énorme ton coup de main ! ça évite les erreurs de calculs. Et pour le reste c'est assez simple de faire une recherche F5 avec les options d'analyse dans les formules. j'ai enregistré la macro pour mais impossible à rajouter avec le reste ..
 

richard31

XLDnaute Occasionnel
la macro enregistrée donne ça :

Cells.Find(What:="#REF", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate


mais je sais pas la rajouter dans l outil ^^
 

Dranreb

XLDnaute Barbatruc
Essayez comme ça :
VB:
Sub AfficherUF_Erreur()
   Dim Wsh As Worksheet, Cel As Range, RngUR As Range, Adr As String
   For Each Wsh In ActiveWorkbook.Worksheets
      On Error Resume Next
      Set RngUR = Wsh.UsedRange
      AjoutLbxErr RngUR.SpecialCells(xlCellTypeConstants, xlErrors), Wsh.Name
      AjoutLbxErr RngUR.SpecialCells(xlCellTypeFormulas, xlErrors), Wsh.Name
      Err.Clear
      Set Cel = RngUR.Find(What:="#REF!", LookIn:=xlFormulas, LookAt:=xlPart, _
         SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
      If Err Then Set Cel = Nothing
      On Error GoTo 0
      If Not Cel Is Nothing Then
         Adr = Cel.Address
         Do: UF_Erreurs.ListBoxErreurs.AddItem Cel.Text
            UF_Erreurs.ListBoxErreurs.List(UF_Erreurs.ListBoxErreurs.ListCount - 1, 1) = Wsh.Name
            UF_Erreurs.ListBoxErreurs.List(UF_Erreurs.ListBoxErreurs.ListCount - 1, 2) = Cel.Address(False, False)
            UF_Erreurs.ListBoxErreurs.List(UF_Erreurs.ListBoxErreurs.ListCount - 1, 3) = Cel.FormulaLocal
            Set Cel = RngUR.FindNext: Loop Until Cel.Address = Adr
         End If
      Next Wsh
   If UF_Erreurs.ListBoxErreurs.ListCount = 0 Then
      MsgBox "Aucune cellule en erreur trouvée dans ce classeur", vbInformation, "Voir les erreurs"
   Else: UF_Erreurs.Show 0: End If
   End Sub
Private Sub AjoutLbxErr(ByVal RngErr As Range, ByVal NomFeuil As String)
   Dim Cel As Range
   For Each Cel In RngErr
      UF_Erreurs.ListBoxErreurs.AddItem Choose((CLng(Cel.Value) - 1993) \ 7, _
         "#NUL!", "#DIV/0!", "#VALEUR!", "#REF!", "#NOM?", "#NOMBRE!", "#N/A")
          UF_Erreurs.ListBoxErreurs.List(UF_Erreurs.ListBoxErreurs.ListCount - 1, 1) = NomFeuil
          UF_Erreurs.ListBoxErreurs.List(UF_Erreurs.ListBoxErreurs.ListCount - 1, 2) = Cel.Address(False, False)
          UF_Erreurs.ListBoxErreurs.List(UF_Erreurs.ListBoxErreurs.ListCount - 1, 3) = Cel.FormulaLocal
      Next Cel
   End Sub
 

Statistiques des forums

Discussions
314 848
Messages
2 113 547
Membres
111 897
dernier inscrit
LARRALDES