Compter le nombre d'erreur dans un tableau structuré

Bonjour le forum

Y a t-il un moyen (avec ou sans VBA) de compter le nombre d'erreur dans un tableau structuré ?

Je m'explique, j'ai un tableau structuré dans lequel se trouve des validations de données. Si l'utilisateur rentre une donnée qui ne correspond pas aux restriction, la saisie est bloquée. Le soucis est qu'il est possible d'importer des données depuis un autre fichier. Les données s'ajoutent automatiquement au tableau, mais il est possible qu'il y ai eu des erreurs de saisie dans le fichier où sont importé les données !

Je cherche donc un moyen de compter le nombre d' "Erreur de validation de données" pour indiquer à l'utilisateur combien d'erreurs sont présente sur la feuille afin de les corrigées.

Par avance, merci de l’intérêt porté au sujet

sans titre

Salut CGautier,

à tester

=SOMMEPROD(--ESTERREUR(A2:D1000))

Ou:

Sub Nbr_Erreurs()
Dim rng As Range, rngc As Range
    Set rng = Range("A2:D1000") ' plage à adapter
    On Error Resume Next
    Set rngc = rng.SpecialCells(xlCellTypeFormulas, xlErrors)
    If Not rngc Is Nothing Then
      rngc.Select ' pour sélectionner les céllules concernées
      MsgBox rngc.count & " erreurs dans les céllules: " & rngc.Address(0, 0)
    End If
End Sub

Bonjour m3ellem1,

Merci du retour, malheureusement ça n'a pas l'air de fonctionner...

Hmmm un fichier test peut etre?

Je peux pas reproduire l‘erreur chez moi

Bonjour

Hors VBA, tu peux utiliser Données, Validation, entourer les données non valides.

En VBA le seul moyen est de tester la règle de validation car ce n'est pas une erreur de calcul

Dans les 2 cas il faut que l'importation n'ait pas effacé la règle de validation...

Bonjour 78chris

Alors non les données importées n'effacent pas les règles de la validation de données. J'ai pensé à utiliser l'entourage des données erronées. Le truc c'est que cette méthode n’empêchera pas de saisir après importation autre chose que ce qui est définit ...

Et comment s'y prendre pour le faire en VBA ?

Pour chaque cellule d'une colonne je test la cellule à la liste de données de validation ?

Quelque chose dans ce style ?

For i = 2 to 100
Test="Nok"
for y = 2 to 10
if Feuil1.cells(i,1)=feuil2.cells(i,1) then Test="Ok"
next y
if Test="Nok" then CompteurErr=CompteurErr+1
next i

En admettant que je test les cellules de la feuille1 par rapport a la liste de la validation de données se trouvant sur la feuille 2

RE

Si les règles sont présentes, on ne pourra saisir n'importe quoi mais ce qui est importé (et éventuellement mis en évidence pas les cercles rouges) reste erroné...

En VBA :

Dim cellule As Range
Dim CompteurErr As Long

    For Each cellule In ActiveSheet.Range("A1:A100").SpecialCells(xlCellTypeAllValidation)
        If Not cellule.Validation.Value Then
            CompteurErr = CompteurErr + 1
        End If
    Next

Merci je reste ça lundi, bon weekend

Bonjour,

un essai fait en aveugle faute de fichier de travail

Sub testTraitementAlertes()
    ' traitement des alertes d'erreurs
    Dim pl As Range, c As Range, nbErr As Long
    On Error GoTo fin
    Set pl = Cells.SpecialCells(xlCellTypeAllValidation)
    On Error GoTo 0
    For Each c In pl
        If c.Errors.Item(xlListDataValidation).Value Then
            nbErr = nbErr + 1
        End If
    Next c
    If nbErr = 0 Then
        MsgBox "Pas d'erreur de validation"
    Else
        If MsgBox("Erreurs de validation : " & nbErr & vbLf & "Voulez-vous les traiter ?", vbYesNo + vbQuestion, "Contrôle validations") = vbYes Then
            Application.Dialogs(xlDialogErrorChecking).Show
        End If
    End If
fin:
End Sub

Donc non testé...

Théoriquement il devrait te donner le compte exact, et la possibilité de les traiter en passant de l'une à l'autre.

eric

Edit : remplacé ActiveCell par Cells (distraction...)

Merci 78chris, merci eriiic pour vos suggestions !

Je n'ai pas partagé le fichier étant donnée que je travail sur un fichier d'entreprise, je m'en excuse

En tout cas, grâce à vous deux et à vos compétence mon problème est résolu ! Encore merci à vous

A bientôt, Gautier

@Eric,

l'idée est franchement pas mal, j'essaye depuis tout à l'heure d'améliorer ton code.

La le code permet de cheker la feuille active, mon classeur compte environ 150 feuilles à vérifier.

Je voulais garder l'idée de la boite de dialogue mais la recréer avec un userform ouvert en modal avec un bouton "Suivant" permettant de sélectionner une à une les cellules en erreur et de passer a la feuille suivante. Un peu à la manière d'un FindNext(c).

Mais là je tourne en rond

Bonjour,

pourquoi vouloir récréer ce qui t'es offert sur un plateau par excel ?

Démarre par une simple boite de dialogue pour savoir si l'utilisateur veux traiter toutes les feuille ou seulement l'active.

Et lance en boucle sur toutes les feuilles si besoin, en les activant.

De toute façon il ne les fera pas toutes en même temps...

eric

Rechercher des sujets similaires à "compter nombre erreur tableau structure"