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 :

Trouver des doublons dans une colonne A et une colonne B et les écrire dans une colonne C


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    ingénieur en gestion
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : ingénieur en gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Trouver des doublons dans une colonne A et une colonne B et les écrire dans une colonne C
    Bonjour à tous,

    Je cherche une manière pour rechercher des doublons entre une colonne A et B et les écrire dans une colonne C. De cette manière, je pourrais voir dans mon fichier quel n° de produit est commandé ou non. J'ai fait un code mais le problème c'est qu'il compare uniquement ligne par ligne et moi je souhaiterai que ce code compare toutes les cellules de la colonne A avec toutes les cellules de la colonne B.

    Voici le code:

    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 Macro()
     
    Dim Plage As Range, C As Range
    Dim i As Long
    Dim Msg As String
     
    Set Plage = Application.InputBox("Sélectionnez la plage.", Type:=8) ' créer une Box qui demande d'insérer la plage à analyse
     
    For Each C In Plage.Columns(1).Cells ' pour chaque plage de cellule C dans la plage de cellule "Plage"
        If (C <> C.Offset(0, 1)) Then ' si la cellule correspond à la cellule de la colonne à coté
            i = i + 1 'compte
        End If
    Next
     
    If i = 0 Then
        Msg = " Toutes les valeurs sont Ok par deux"
        Msg = "Il y a des valeurs différentes sur " & i & "lignes!"
    End If
    Z = MsgBox(Msg, vbInformation) ' créer un message entouré d'une case d'information
     
     
    End Sub
    Je tiens aussi à préciser que j'aimerai que la macro me sorte les n° de produits et pas qu'il me les compte.

    Merci de m'aider

  2. #2
    Membre éclairé Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Points : 758
    Points
    758
    Par défaut
    Bonjour,

    Avant toute chose, est ce qu'il peut y avoir des doublons dans la colonne A uniquement ? Ou dans la B uniquement ?

    Si oui, on peut utiliser une méthode avec des dictionnaires / collections. Sinon, une simple boucle sur la colonne A, avec un "find" sur la colonne B a chaque itération peut suffir.
    Citation Envoyé par Oscar Wilde
    Je déteste les discussions: elles vous font parfois changer d'avis.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    ingénieur en gestion
    Inscrit en
    Février 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : ingénieur en gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    En fait, le but est de trouver les n°de produit qui se trouve dans la colonne A et qui sont identique à la colonne B! Il n'y aura donc pas deux même n° de produit dans la même colonne.

    Je voudrais ajouter que je ne suis vraiment pas très douée donc j'aurais besoin d'aide pour construire le code.

  4. #4
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Bonjour

    C'est faisable par un filtre avancé avec extraction : pourquoi VBA ?
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  5. #5
    Membre éclairé Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Points : 758
    Points
    758
    Par défaut
    Tu peux essayer un truc du genre :

    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
    Dim lastLine As Single
     
    Dim Adic As Object
    Dim I As Single
    Dim J As Single
     
    Set Adic = CreateObject("Scripting.dictionary")
     
    'On spécifie l'objet sur lequel on travail : ta feuille
    With Worksheets("maFeuille")
     
        'On cherche la dernière valeur de la colonne A
        lastLine = .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
     
        'On remplit le dictionnaire
     
        For Each c In Range("A1", .Range("A5").End(xlDown))  'si la liste est dans la colonne A et commence en A1
            'on teste si la valeur de la cellule n'est pas déjà dans le dictionnaire
            'si c'est le cas on utilise cette valeur comme nouvelle cké et comme nouvel item
            If Not Adic.Exists(c.Value) Then Adic.Add c.Value, c.Value
        Next c
     
        lastLine = .Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row
     
        J = 1
        'On parcours la colonne B
        For I = 1 To lastLine
            If Adic.Exists(.Cells(I, 2).Value) = True Then
                .Cells(J, 3).Value = .Cells(I, 2).Value
                J = J + 1
            End If
        Next I
     
    End With
    En gros, j'utilise le principe du dictionnaire : dans un dictionnaire (type Larousse ou Robert), chaque entrée, chaque mot est unique ? En revanche, il n'y a pas de tel restriction sur la définition. En VBA, c'est pareille, chaque Clef est unique, et c'est cette propriété là que je vais utiliser.

    Je définis d'abord un dictionnaire sur l'ensemble de la colonne A (merci excelabo), et je tente d'ajouter les valeurs de la colonne B dans mon dictionnaire. Si je ne peux pas, c'est qu'il y a un doublons : je prend alors cette valeur pour l'inscrire dans la colonne C.

    Voilà, si tu as des questions !
    Citation Envoyé par Oscar Wilde
    Je déteste les discussions: elles vous font parfois changer d'avis.

Discussions similaires

  1. [WD18] Trouver des doublons d'enregistrement avec une requete SQL
    Par bruno.a dans le forum WinDev
    Réponses: 14
    Dernier message: 23/10/2014, 17h20
  2. Trouver des doublons dans une 2eme table
    Par hammag dans le forum SQL
    Réponses: 2
    Dernier message: 13/08/2013, 17h04
  3. Requête pour trouver des doublons
    Par islande dans le forum Langage SQL
    Réponses: 6
    Dernier message: 22/03/2012, 18h01
  4. trouver des doublons
    Par aml77 dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 22/02/2011, 16h22
  5. Trouver des doublons de groupe de valeurs
    Par Grodard dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/03/2009, 20h04

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