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 :

utilisation dico pour identifier doublons


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    ingenieur BE
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Par défaut utilisation dico pour identifier doublons
    Bonjour,

    Petit soucis dans l'utilisation des dictionnaires.
    Mon code est sensé passer en revue 3 colonnes de valeurs et d'identifier les doublons pour les traiter ensuite. Je n'ai pas d'erreur mais il ne trouve aucun doublon alors qu'il y en a
    Merci d'avance ...

    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
    Sub TrouveDoublon(lig)
    ReDim element(nbnodes) As Variant
     
    Dim tab1, elm
    Set tab1 = CreateObject("Scripting.Dictionary")
     
    For col = 1 To 3
    For Compteur = 1 To col1
        elm = CStr(Cells(Compteur, 2 * col + 1))
        If elm <> "" Then
        If tab1.exists(elm) Then
            traiter_doublons elm
            Cells(Compteur, 2 * col + 1).Interior.ColorIndex = 4
        Else: stocker_elm elm, el, lig
        End If
        Else
        End If
     
    Next
    Next
     
    End Sub

  2. #2
    Membre du Club
    Homme Profil pro
    Responsable marketing opérationnel
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable marketing opérationnel
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Par défaut
    Bonjour,

    moi pour détecter les doublons j'utilise cette formule qui m'évite de passer par VBA :
    =NB.SI($B$15:$B$2770;B24)>1

    La colonne B, ligne de 15 à 2770, contient la liste des mots. En résultat j'ai VRAI s'il y a doublon

    Ca ne répond pas vraiment à ta question mais c'est une piste qui peut te faire gagner du temps

  3. #3
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    penses à intégrer des balises code "#", sinon inspires-toi de cette contribution :

    http://www.developpez.net/forums/d13...bles-tableaux/

    bonne journée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Invité
    Invité(e)
    Par défaut bonjour, regarde ça
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Sub test()
    Dim MyRange As Range
    Dim Feuille As Worksheet
    Dim lig As Long
    Dim Doublon As New Collection
    Set Feuille = ActiveWorkbook.Sheets(1)
    Set MyRange = Feuille.UsedRange
    For lig = 2 To MyRange.Rows.Count
        TrouveDoublon lig, Feuille, Doublon
        DoEvents
    Next
    End Sub
    Sub TrouveDoublon(lig As Long, Feuille As Worksheet, Doublon As Collection)
    ReDim element(nbnodes) As Variant
    Dim MyRange As Range
    Dim elm
     
    If MethodeHighlander(Feuille.Range(Feuille.Cells(lig, 1).Address & "," & Feuille.Cells(lig, 2).Address & "," & Feuille.Cells(lig, 3).Address), Doublon) = True Then
       Feuille.Range(Feuille.Cells(lig, 1), Feuille.Cells(lig, Feuille.UsedRange.Columns.Count)).Interior.ColorIndex = 4
    Else
       '????? stocker_elm elm, el, lig
    End If
     
     
    End Sub
    Function MethodeHighlander(MyRange As Range, Doublon As Collection) As Boolean
    'La Méthode Highlander il ne peut en rester qu'un.
    Dim Cels As Integer
    Dim Text As String
    Text = "T"
     
    For Cels = 1 To MyRange.Count
        Text = Text & "_" & Trim("" & MyRange(1, Cels))
    Next
    On Error Resume Next
    'On peut ajouter dans une collection un enregistrement en lui donnant un nom.
    'Le problème est qu'elle ne supporte pas les doublons.
    'On utilise les messages d'erreur pour définir les doublons.
    Doublon.Add txt, Text
    If Err <> 0 Then
        MethodeHighlander = True
        Err.Clear
    End If
    On Error GoTo 0
    End Function

Discussions similaires

  1. formule ou macro pour identifier les doublons
    Par TICHKA dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/02/2014, 12h43
  2. Réponses: 198
    Dernier message: 21/08/2011, 12h49
  3. Utiliser hylafax pour envoyer des fax
    Par ggnore dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 08/07/2004, 21h57
  4. utiliser "if" pour faire deux actions differente
    Par vampyer972 dans le forum C
    Réponses: 2
    Dernier message: 09/05/2004, 10h12

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