IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Erreur d'exécution '13' - Macro doublon avec valeurs inverses


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    BTP
    Inscrit en
    Octobre 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : BTP

    Informations forums :
    Inscription : Octobre 2014
    Messages : 18
    Par défaut Erreur d'exécution '13' - Macro doublon avec valeurs inverses
    Bonjour,

    Je cherche à identifier les doublons de valeurs dans un fichier de 300 000 lignes.
    Les valeurs à analyser sont sur la colonne AA, exemple :

    N AA
    Ligne 1 : - 90 000
    Ligne 32 : TEST 90 000
    Ligne 402 : 90 000

    L'analyse doit pouvoir afficher les cellules (coloration de cellule) uniquement si l'une des lignes en doublon comporte le texte "TEST" en colonne N.

    J'étais parti sur la macro ci-dessous, mais j'obtiens un message d'erreur à l’exécution...
    Erreur d'exécution '13'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub MarqueLesDoublonsPositifNegatif()
    Dim plg()
    ReDim Preserve plg(1)
    plg(1) = Cells(1, 1)
    x = 1
    For i = 2 To Range("A65536").End(xlUp).Row
    If IsError(Application.Match(Cells(i, 1), plg, 0)) Then
    x = x + 1
    ReDim Preserve plg(x)
    plg(x) = Cells(i, 1)
    End If
    Next
     
    For i = LBound(plg) + 1 To UBound(plg)
    x1 = Application.CountIf(Range("A1:A10"), plg(i))
    y2 = Application.CountIf(Range("A1:A10"), plg(i) * -1)
    w = Application.Min(x1, y2)
    For y = 1 To Range("A65536").End(xlUp).Row
    If Cells(y, 1) = plg(i) And t < w Then
    t = t + 1
    Cells(y, 1).Interior.ColorIndex = 43
    Else
    Exit For
    End If
    Next
    t = 0
    Next
    Si vous avez une idée du problème et comment je peux améliorer cela, merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Certaines de tes variables ne sont pas typées. Commence par ce faire, en gardant à l'esprit la limite de chaque type, notamment numérique.

  3. #3
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    J'ajouterais des Range et des Cells sans préciser ni la feuille ni la propriété !
    Voir : https://www.developpez.net/forums/d1...tes-utilisees/

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Si j'ai compris le contenu de ta macro, il s'agit simplement de mettre en vert les cellules qui sont en double dans la colonne A ?

    Si c'est simplement ça, pas besoin de VBA.
    Une simple mise en forme conditionnelle fera ça plus simplement, plus dynamiquement et plus rapidement.

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    non menhir
    les double oui mais ceux qui on "TEST*" en colonne "N" sur une de leur ligne

    EN vba je prendrait la chose a l'envers
    filtre sur colonne "N" critere"test*"
    et control du countif de la valeur en colonne A de chaque valeur du specialcells de la colonne "N"
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    les double oui mais ceux qui on "TEST*" en colonne "N" sur une de leur ligne
    C'est toujours possible de le faire avec une MFC plus simplement qu'avec une macro.
    Il faut juste mettre dans la MFC une formule avec un AND() et un NB.SI().

    Au passage, le NB.SI() serait plus efficace dans ce cas qu'un EQUIV() (le MATCH() se trouvant dans le code) en évitant d'avoir à utiliser une gestion d'erreur.

Discussions similaires

  1. Doublons avec valeurs doublés
    Par maria_ dans le forum SAS Base
    Réponses: 3
    Dernier message: 01/06/2012, 15h34
  2. Réponses: 1
    Dernier message: 20/10/2010, 23h55
  3. [WD12] exécuter une macro excel avec ole automation
    Par Ratafia67 dans le forum WinDev
    Réponses: 2
    Dernier message: 15/04/2010, 07h57
  4. Macro variable avec valeur contenant &
    Par Fatah93 dans le forum Macro
    Réponses: 2
    Dernier message: 19/05/2008, 15h11
  5. Peux-t'on exécuter des macros excel avec Open Office
    Par Lexot2 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/09/2006, 22h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo