Erreur définie par l'application ou par l'objet

Bonjour,

J'utilise le code ci-dessous pour surligner les doublons d'une base de données (26 colonnes et 45 000 lignes pour une BDD et 90 000 pour l'autre)

Prise en compte que de cinq colonnes pour vérifier les doublons.

Ce code fonctionne bien avec la BDD de 45 000 ligne mais plante systématiquement avec la BDD de 90 000 lignes.

erreur1

Il me surligne la ligne

nocoul = (Application.Match(Clé, mondico.keys, 0)) Mod UBound(couleurs)

Option Explicit
Dim nocoul As Double
Dim couleurs
Dim mondico
Dim Clé As String
Dim c As Variant
Sub SurligneDouBlon()
Sheets("Feuille1").Select
    couleurs = Array(3, 4, 6, 7, 8, 15, 17, 19, 20, 22, 24, 26, 27, 28, 35, 36, 37, 38, 40, 43)

    Set mondico = CreateObject("Scripting.Dictionary")
    For Each c In Range("A3", [A100000].End(xlUp))
      Clé = c.Offset(, 2) & c.Offset(, 4) & c.Offset(, 6) & c.Offset(, 10) & c.Offset(, 11)
      mondico.Item(Clé) = mondico.Item(Clé) + 1
    Next c

    For Each c In Range("A3", [A100000].End(xlUp))
        Clé = c.Offset(, 2) & c.Offset(, 4) & c.Offset(, 6) & c.Offset(, 10) & c.Offset(, 11)

        nocoul = (Application.Match(Clé, mondico.keys, 0)) Mod UBound(couleurs)
        If mondico.Item(Clé) > 1 Then
        c.Resize(, 26).Interior.ColorIndex = couleurs(nocoul)
        Else
        End If
    Next c
End Sub

Il me semble que c'est un problème de dépassement de capacité puisque ça marche avec 45 000 lignes.

Mais comment le résoudre ?

Merci d'avance pour vos réponses

Patrick

Bonsoir Patrick,

Le message d'erreur 1004 indique que la méthode Match de l'objet Application n'a pas trouvé de correspondance pour la clé spécifiée dans la collection de l'objet mondico.

Le souci vient certainement des données qui sont déjà présentent

A+

Merci Bruno,

en fait j'ai fais un essai en traitant ma BDD de 90000 ligne en deux fois.

et ça à marché

Je vais essayer de voir sur quelles lignes ça plante. Et comprends le problème.

Re,

Au moment du message, il faut cliquer sur débogage et mettre le curseur de la souris sur la variable "Clé"

Cela devrait vous donner la référence qui fait planter

A+

Merci pour votre aide.

J'ai fais un teste ce matin, et Excel c'est carrément bloqué.

Impossible d'y accéder, j'ai du passer par le gestionnaire des taches pour le fermer

Je fais d'autres essais demain dans la journée et je recontacte le Forum.

Merci et bonne soirée

Patrick

Voila, ce matin j'ai refais des essais.

C'est très long (+ de 20 mn), avec la BDD de 45000 données mais ça passe à chaque fois.

Un aperçue du gestionnaire des taches au plus haut des besoins avec cette BDD

ressourcepetitebdd

Avec la BDD de 90 000 données, ça plante, mais pas toujours à la même ligne et les valeurs sont normales.

Le traitement de cette BDD demande énormément de ressource ?

ressourcegrandebdd

Avec la BDD de 90 000 lignes, parfois ça plante l'affichage (écran noir, ligne double des entête)

Obligé de passer par les gestionnaire des tache pour mettre fin a l'exécution d'Excel.

Ca à même bloqué une fois le PC (Obligé de faire un arrêt forcé par le bouton M/A)

Pour info mon PC est un MSI P100 avec Intel(R) Core(TM) i7-9700KF CPU @ 3.60GHz 3.60 GHz et 32 Go de Ram.

Il y a peut-être une autre façon de faire le VBA qui demande moins de ressource ?

Merci d'avance pour votre aide.

Rechercher des sujets similaires à "erreur definie application objet"