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 :

References Dictionnaire pour doublons [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Par défaut References Dictionnaire pour doublons
    Bonjour,
    Malgré ma lecture de quelques posts, sur la recherche de doublon et le tuto sur le dictionnaire, je sèche sur un point.
    Le dictionnaire a n'a qu'une valeur, pour la recherche de doublon, on regarde si la valeur existe déjà, par contre somment récupérer l'index (items ) du dictionnaire de la valuer déjà existante.

    En fait dans la boucle ci-dessous qui fonctionne, je voudrais informer l'utilisateur où le doublon a été trouvé afin qu'il puisse le corriger.
    MErci pour votre aide
    Denis
    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
    ' recherche des doublons
      Range("J2").Select
      colonne = ActiveCell.Column
      Haut = Selection.End(xlUp).Row
      Set tab1 = CreateObject("Scripting.dictionary")
      For compteur = 2 To Bas
        cle = CStr(Cells(compteur, colonne))
    If tab1.exists(cle) Then
    lig_exist = tab1(cle).items   ----> C'est ça que j'arrive pas à captuer
            couleur = 3
        Range(Cells(compteur, 10), Cells(compteur, 10)).Select
    MsgBox " attention cette valeur existe déjà en ligne " & tab1(cle) & lig_exist
    End
    Else
            tab1(cle) = 1
    '        couleur = 4
        End If
        Cells(compteur, colonne).Interior.ColorIndex = couleur
      Next
    End Sub

  2. #2
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Hello,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lig_exist = tab1.item(cle)
    JE pense que cela s'ecrit plutot ainsi

  3. #3
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Par défaut Ne marche pas
    Ne marche pas renvoie toujours 1.
    Bien essayé !

  4. #4
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Ou renseigne tu ton dictionnaire ?

    Test cette macro si ca fonctionne tu comprendra la marche a suivre pour ce que tu as besoin

    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
    Public Sub RechercheDoublon()
      Range("J2").Select
      colonne = ActiveCell.Column
      Haut = Selection.End(xlUp).Row
      Set tab1 = CreateObject("Scripting.dictionary")
      dim bas as integer
    bas = range("J" &rows.count).end(xlup).row
      For compteur = 2 To bas
        cle = CStr(Range("J" & compteur).Value)
            If Not tab1.exists(cle) Then
                tab1.Add cle, compteur
     
                    Else
     
                        MsgBox (" attention cette valeur existe déjà en ligne " & tab1.Item(cle))
                End If
        Cells(compteur, colonne).Interior.ColorIndex = 4
        Next
    End Sub

  5. #5
    Membre éclairé
    Inscrit en
    Août 2009
    Messages
    817
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 817
    Par défaut
    ben c'est ici :
    tab1(cle) = 1

    je vois bien mon tab1 qui se remplit.
    chaque fois il crée un ligne cela donne dans les variables locales
    Tab1
    CompareMode binarycompare
    Count 3
    Item 1 "Mavaleur lue" Variant/string
    Item 2 "Mavaleur lue" Variant/string
    Item 3 "Mavaleur lue" Variant/string etc ....

  6. #6
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Si tu regarde comment j'ai ecris le code :

    ton dictionnaire se remplit de la manière suivante
    si la valeur lue n'est pas dans le dictionnaire alors
    j'ajoute dans le dictionnaire
    Valeur lue , N° de Ligne de la valeur lue
    Sinon
    la valeur existe déjà je lit ou se trouve le N° de La Ligne de la valeur et j'envoi ca dans un message box

    Un dictionnaire se stocke de la manière suivante

    Dico.add Clé,item

    Pour notre cas la clé est la valeur lue et l'item le N° de ligne stockée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. message personnalisé pour doublon refusé
    Par schwarzy2 dans le forum IHM
    Réponses: 4
    Dernier message: 19/09/2007, 19h37
  2. [Plugin] Cherche plugin dictionnaire pour Javadoc
    Par pmartin8 dans le forum Eclipse Java
    Réponses: 11
    Dernier message: 15/12/2006, 15h50
  3. [C# 2.0] Quelle référence ajouter pour avoir SqlClient ?
    Par jimboo dans le forum Accès aux données
    Réponses: 4
    Dernier message: 28/09/2006, 16h54
  4. Réponses: 5
    Dernier message: 05/05/2006, 20h15

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