Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[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
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

++
 

joedu31

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

Ah oui, c'est une bonne idée

Et du coup, comment il faut l’intégrer dans la solution de Patrick? Définir une nouvelle variable? Je vois pas trop...
 

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
833
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…