Macro pour vérifier erreur dans plage de donnée

Bonjour le forum

J'ai une plage de donnée (J4:J52) qui est conditionnée par une autre plage.

En effet, j'ai mi des formules qui lorsque les conditions sont vérifiées, la plage serait bien renseignée.

Je ne veux pas devoir revenir consulter la plage pour savoir si tout est bien renseigné.

Voila pourquoi je souhaite avoir une macro dans module qui me permettra :

  • si y'a pas d'erreur, que la macro s'exécute
  • sinon si y'a erreur, qu'il me liste les cellule ou il y'a les erreurs afin que je puisse y apporter les corrections necessaires avant d'exécuter à nouveau la macro.
Ci-joint le fichier.

23estrerreur.xlsx (11.17 Ko)

Bonjour Zombe

Le fichier ne contient pas de formules?

cordialement

Salut Amadéus

Merci d'avoir accorder comme d'habitude de l'importance à mon sujet.

Ci-joint un fichier avec quelque formule.

Pour moi, étant donné que l'on connait le symbole des erreurs (comme par exemple #REF!

#VALEUR, ERROR, #/NA...) on pouvait réaliser ce que j'ai sollicité.

Je reste à votre dispositions pour d'autres complements d'informations.

19estrerreur.xlsx (16.66 Ko)

Bonjour

change les formules en J8 et J9 pour avoir une vraie valeur d'erreur

Code Module

Sub AdressesCellulesErreurs()
    Dim Plage As Range, Cible As Range
    'Recherche dans la plage J4:J52
    Set Plage = Range("J4:J52")
    On Error Resume Next
    Set Cible = Plage.SpecialCells(xlCellTypeFormulas, xlErrors)
    Cible.Interior.ColorIndex = 3
    If Not Cible Is Nothing Then MsgBox "Erreur sur les cellules " & Cible.Address(0, 0)
End Sub

Cordialement

26estrerreur.zip (13.56 Ko)

Salut Amadéus

Merci pour votre code.

Il fonctionne bien suivant les critères que j’avais définis. Je l’ai fais testé par d’autres utilisateurs qui m’ont fait des observations ; ce qui me ramène vers vous pour une prise en compte de leurs sollicitations si possible.

En effet, j4 :j52 tire leur source da la plage b4 :b52. Etant donné que les erreurs dans la plage j4 :j52 sont fonction de ce qu’on a saisi en b4 :b52.

Pour résumer, je souhaite que si y’a erreur dans J10 par exemple, qu’il signal b10 et non j10 etc?

Je n’avais pas fais attention à cela.

NB: Est-ce que le code est fonctionnel dans une feuille protégée?

Aussi, avec le code ci-dessous, j'appelle la macro AdressesCellulesErreurs. je souhaite que si y'a erreur dans J2:j52, que la macro suivante ne soit pas appeler mais si y'a pas d'erreur dans j2:j52 que la macro activesimple soit appellée.

 'GESTION CLIENT SUR COMPTE  PARTICULIER  
ElseIf Range("B4").Value = "COMPTE PARTICULIERS" Then
    If Target.Address = "$B$5" And Target.Value <> "" Then
    Range("C5").Select
ElseIf Target.Address = "$C$5" And Target.Value <> "" Then
    Range("B7").Select
ElseIf Target.Address = "$B$31" And Target.Value <> "" Then
    Range("B33").Select
ElseIf Target.Address = "$B$37" And Target.Value <> "" Then
    Range("B42").Select
    'ElseIf Target.Address = "$B$39" And Target.Value <> "" Then
    'Range("B42").Select
    Call Macro1
    [color=#BF0000]Call AdressesCellulesErreurs[/color]
    Call activesimple
    Range("B42").Select
ElseIf Target.Address = "$B$42" And Target.Value <> "" Then
    Range("B44").Select
ElseIf Target.Address = "$B$44" And Target.Value <> "" Then
    Range("B48").Select
ElseIf Target.Address = "$B$48" And Target.Value <> "" Then
    Range("B49").Select
    Call Macro10
    Call COPIER_SESAME
    Call COPIER_BSMS
    'Range("d3").Select
    Range("d3").Select
    Else: GoTo fin
    End If

Bonjour

Pour ce qui est des erreurs, tu peux remplacer le Code par celui-ci:

Sub AdressesCellulesErreurs()
    Dim Plage As Range, Cible As Range
    'Recherche dans la plage J4:J52
    Set Plage = Range("J4:J52")
    On Error Resume Next
    Set Cible = Plage.SpecialCells(xlCellTypeFormulas, xlErrors)
    Cible.Interior.ColorIndex = 3
    Cible.Offset(0, -8).Interior.ColorIndex = 3
    If Not Cible Is Nothing Then MsgBox "Erreur sur les cellules " & Cible.Offset(0, -8).Address(0, -0)
End Sub

Pour ce qui est de la Feuille protégée, la réponse esr non avec le Code en l'état. Eventuellement, il faut rajouter en début du Code

ActiveSheet.UnProtect "MDP"

(MDP étant le mot de passe de protection. Et, reprotéger avant le end Sub

ActiveSheet.Protect "MDP"

Cordialement

Merci Amadéus

Ca fonctionne comme souhaité.

Y'a une de mes questions qui vous a certainement échappée.

J'ai sollicité une condition dans l'exécution d'un code lié au code que vous venez de me proposer:

si votre code signale une erreur dans les plages spécifiée, que la macro activesimple ne soit pas appelée mais que B42 soit sélectionné.

si y'a pas d'erreur dans les plages, que la macro activesimple s'exécute et que B42 soit sélectionné.

Call AdressesCellulesErreurs
 Call activesimple

Bonne compréhension

Bonjour

Essaie en rajoutant après la ligne

  If Not Cible Is Nothing Then MsgBox "Erreur sur les cellules " & Cible.Offset(0, -8).Address(0, -0)

l'instruction suivante

If Not Cible Is Nothing Then Exit Sub
     Call activesimple
    End Sub

Cordialement

Salut Amadéus

C'est super.

Un grand merci à toi et que Dieu te bénisse.

Rechercher des sujets similaires à "macro verifier erreur plage donnee"