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 :

Help,Detection et transfert doublons avec vlookup


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur Microsoft Share Point
    Inscrit en
    Avril 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur Microsoft Share Point
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 33
    Par défaut Help,Detection et transfert doublons avec vlookup
    Bonjour la communauté,
    je vous consulte après deux jours de recherches personelles ,


    J'ai des valeurs qui se repetent dans feuil1 exemple dans la colonne B les 'X'.
    Je dois remplir les lignes des doublons x sachant que les valeurs viennent de la feuille 2 et


    feuil1 :
       A B    Y    Z 
    1
    2
    3    X vide vide
    4    X  vide vide
    5
    feuil 2:

       Z B     Y               Z 
    1
    2
    3    X valeur a récupérer
    4    X valeur a récupérer
    5
    Voici le code (modifié d'un tutoriel développez.net), j'ai mis en couleur les doublons ça marche bien , mais la fonction vlookup ne me récupére pas les valeurs voulues :
    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
    Option Explicit
     
    Sub test()
     
    IdentifieDoublons Range("K2:K1000"), Range("C5:E65000")
     
    End Sub
     
     
    Sub IdentifieDoublons(Plage As Range, plagesortie As Range)
        Dim Cell As Range
        Dim Un As Collection
        Set Un = New Collection
     
        On Error Resume Next
     
        'Boucle sur la plage de cellule
        For Each Cell In Plage
            Dim i As Integer
            i = 0
            i = i + 1
            'Pour ne pas prendre en compte les cellules vides
            If Cell <> "" Then
                'Ajoute le contenu de la cellule dans la collection
                Un.Add Cell, CStr(Cell)
     
                'Si la procédure renvoie une erreur, cela signifie que l'élément
                'existe déjà dans la collection et donc qu'il s'agit d'un doublon.
                'Dans ce cas la macro colorie la cellule en vert.
                If Err <> 0 Then Cell.Interior.ColorIndex = 18
     
                Range("Z" & i).Value = Application.WorksheetFunction.VLookup(Err.Offset(0, -1).Value, plagesortie, 2)
     
            End If
        Next Cell
     
        Set Un = Nothing
    End Sub
    Je vous remercie pour votre aide
    Cordialement

  2. #2
    Invité
    Invité(e)
    Par défaut
    Il y a trois erreurs dans ton code:

    - Tu réinitialises i à chaque itération de la boucle 'for each'
    - L'appel à 'Err.Offset(0, -1).Value' n'existe pas en vba
    - Tu ne réinitialise pas l'erreur

    Je te propose par exemple:
    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
    Option Explicit
     
    Sub test()
        IdentifieDoublons Range("K2:K1000"), Range("C5:E65000")
    End Sub
     
    Public Sub IdentifieDoublons(Plage As Range, plagesortie As Range)
        Dim Cell As Range
        Dim Un As Collection
        Set Un = New Collection
        Dim i As Integer
     
        On Error Resume Next
     
        i = 0
        'Boucle sur la plage de cellule
        For Each Cell In Plage
     
            i = i + 1
            'Pour ne pas prendre en compte les cellules vides
            If Cell <> "" Then
                'Ajoute le contenu de la cellule dans la collection
                Un.Add Cell, CStr(Cell)
     
                'Si la procédure renvoie une erreur, cela signifie que l'élément
                'existe déjà dans la collection et donc qu'il s'agit d'un doublon.
                'Dans ce cas la macro colorie la cellule en vert.
                If Err <> 0 Then Cell.Interior.ColorIndex = 18
     
                Range("Z" & i).Value = Application.WorksheetFunction.VLookup(Cells.Offset(0, -1).Value, plagesortie, 2, False)
                Err.Clear
     
            End If
        Next Cell
     
        Set Un = Nothing
    End Sub
    Par ailleurs il faut éviter de mettre un 'On Error Resume Next' dans ton code. Il vaut mieux traiter individuellement chaque erreur.

Discussions similaires

  1. [XL-2010] Doublons avec vlookup() ou index()
    Par Xibalba dans le forum Excel
    Réponses: 2
    Dernier message: 04/05/2014, 15h20
  2. [SSIS] [2K8] Detection de doublons avec SSIS
    Par nacimoun dans le forum SSIS
    Réponses: 1
    Dernier message: 21/09/2009, 17h32
  3. help sur un petit code avec XMLHttpRequest et setTimeout
    Par grinder59 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 01/10/2005, 10h22
  4. Detection d'une fenetre avec la souris
    Par vivi2701 dans le forum C++
    Réponses: 6
    Dernier message: 09/06/2005, 13h37
  5. transfert ftp avec le composant
    Par sillycoder dans le forum Composants VCL
    Réponses: 3
    Dernier message: 19/05/2005, 09h35

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