[RESOLU] : VBA: Macro classeur entier

joedu31

XLDnaute Nouveau
Bonjour à tous,

Je souhaiterai faire une macro sur l'ensemble du classeur, j'aimerai qu'elle permette de vérifier si la feuille ne comporte pas d'erreur, du genre (#...)
Excel - les messages d'erreurs

Si il a une case du classeur qui comporte une erreur, envoyer un message d'erreur a l'utilisateur en fesant la liste des feuilles dans une Message Box, puis un bouton Ok.


Auriez vous une idée de langage VBA pour résoudre cela?

Bien à vous,
Joe
 
Dernière modification par un modérateur:

Hieu

XLDnaute Impliqué
Re : VBA: Macro classeur entier, find Erreur (#)

Salut,

Perso, j'partirai comme ça

Code:
Sub lkj()
For Each o In Sheets
    For Each c In Cells
        If IsError(o.c) Then liste = liste & o.c.Address & " "
    Next c
Next o
MsgBox (liste)
End Sub

Bon, par contre, ça marche pas ^^

++
Hieu
 

Patrice33740

XLDnaute Impliqué
Re : VBA: Macro classeur entier, find Erreur (#)

Bonjour,

Essaies :
Code:
Option Explicit
Option Private Module
Public Sub ChercheErreurs()
Dim w As Worksheet
Dim c As Range
Dim m As String
    
  For Each w In ActiveWorkbook.Worksheets
    For Each c In w.UsedRange
      If IsError(c.Value) Then
        m = m & CStr(c.Value) & " - " & w.Name & "!" & c.Address(0, 0) & vbCr
      End If
    Next c
  Next w
  If m > "" Then
    MsgBox "Erreur(s) trouvée(s): " & vbCr & m
  Else
    MsgBox "Aucune erreur trouvée."
  End If
End Sub
 

joedu31

XLDnaute Nouveau
Re : VBA: Macro classeur entier, find Erreur (#)

Merci à vous,
ça marche impeccable Patrick, merci beaucoup Patrick :cool:
Je me rend compte que mon fichier peut pontentiellement avoir beaucoup d'erreurs, est ce faisable de rajouter un curseur pour visualiser l'ensemble des lignes? La message box est bloqué à 36 lignes à ce que je vois :[
 

Hieu

XLDnaute Impliqué
Re : VBA: Macro classeur entier, find Erreur (#)

Salut,

Tu peux faire une sortie via un fichier .txt à la place de ta msgbox

Code:
chemin = ThisWorkbook.Path & "\"
Set FSys = CreateObject("Scripting.FileSystemObject")
Set fic = FSys.createTextFile(Filename:=chemin  & "test.txt", overwrite:=True)
fic.WriteLine m

"m" étant la sortie de Patrice

++
 

Patrice33740

XLDnaute Impliqué
Re : VBA: Macro classeur entier, find Erreur (#)

Re,

Résultat dans une feuille Excel :
Code:
Option Explicit
Option Private Module
Public Sub ChercheErreurs()
Dim w As Worksheet
Dim c As Range
Dim m As String
  For Each w In ActiveWorkbook.Worksheets
    For Each c In w.UsedRange
      If IsError(c.Value) Then
        m = m & CStr(c.Value) & " - " & w.Name & "!" & c.Address(0, 0) & vbCr
      End If
    Next c
  Next w
  If m > "" Then
    Set w = Workbooks.Add(xlWBATWorksheet).Worksheets(1)
    m = "Erreur(s) trouvée(s): " & vbCr & m
    w.Range("A1").Resize(UBound(Split(m, vbCr))).Value = _
       WorksheetFunction.Transpose(Split(m, vbCr))
  Else
    MsgBox "Aucune erreur trouvée."
  End If
End Sub
 

Discussions similaires

Réponses
26
Affichages
762
  • Résolu(e)
Microsoft 365 FORMULE Excel VBA
Réponses
17
Affichages
723