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 :

Macro qui compare 2 colonnes de 2 feuilles excel et qui supprime les différences.


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 17
    Points : 6
    Points
    6
    Par défaut Macro qui compare 2 colonnes de 2 feuilles excel et qui supprime les différences.
    Bonjour, j'ai un problème, Voilà :

    Macro qui compare la colonne B de la 1ere feuille a la colonne A de la 2eme et qui supprime les lignes qui correspondent pas sur la 1ere

    Exemple :

    Feuille1
    Colonne A Colonne B

    aaa@google.com google.com
    assdsa@hotmail.com hotmail.com <=== existe pas supprimer la ligne
    kmlkmk@msn.fr msn.fr
    kmkmk@hotmail.fr hotmail.fr <=== existe pas supprimer la ligne


    Feuille2
    Colonne A

    google.com
    voila.fr
    msn.com
    neuf.fr
    laposte.net
    msn.fr

    Si quelqu'un peut me mettre sur une piste, je suis ouvert a tout!!!

  2. #2
    Membre régulier
    Homme Profil pro
    Chargé d'Etudes Statistiques
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'Etudes Statistiques
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Points : 98
    Points
    98
    Par défaut
    peux-tu reformuler ta demande ? ce n'est pas très clair
    les données des deux colonnes doivent correspondre en ayant des cellules identiques ?

  3. #3
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut SUPPRESSION
    Bonjour,

    Tu peux

    - dans ta feuille 1, rechercher la postion de ton indice dans la colonne correspondante de la feuille2 par la fonction Equiv

    en VBA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheet.Function.Match
    - Si la fonction renvoie une erreur, alors tu supprimes la ligne

    Reviens si besoin.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  4. #4
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    non les cellules ne correspondents pas, en fait il s'agit d'une liste d'adresses mails, ou j'ai séparer le nom de domaine dans la 2eme colonne afin de comparer ces domaines a une liste de top domaines sur une autre feuille.

  5. #5
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut compare colonne
    Salut,

    Et de fait, tu peux comparer les indices de ta colonne 2 par rapport à ta base de "top".

    Ici, j'ai j'ai appelé ta feuille de top "base", et celle où tu dois supprimer les lignes "mafeuille"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Sub essai()
    Dim colonne As Range
    Application.ScreenUpdating = False
    Max = Sheets("mafeuille").Range("A" & Rows.Count).End(xlUp).Row
    With Sheets("base")
        Set colonne = .Range(.Range("A1"), .Range("A" & Rows.Count).End(xlUp))
    End With
    For i = Max To 1 Step -1
        If IsError(Application.Match(Sheets("mafeuille").Cells(i, 2), colonne, 0)) Then Sheets("mafeuille").Cells(i, 2).EntireRow.Delete
    Next
    Set colonne = Nothing
    End Sub

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  6. #6
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Désolé j'ai testé ton code et cela supprime absolument tout dans "mafeuille".

    Cordialement Antoine.

  7. #7
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonjour
    Sans utiliser la colonne B de la feuille Feuil1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim i As Long, LastLig As Long
    Dim c As Range
     
    Application.ScreenUpdating = False
    With Sheets("Feuil1")
        LastLig = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = LastLig To 2 Step -1
            Set c = Sheets("Feuil2").Range("A:A").Find(Split(Range("A" & i).Value, "@")(1), lookat:=xlWhole)
            If Not c Is Nothing Then
                .Rows(i).Delete
                Set c = Nothing
            End If
        Next i
    End With
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  8. #8
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Rien ne fonctionne, j'abandonne.

    Merci,
    Antoine.

  9. #9
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut recherche
    Salut,

    J'ai testé sans problème.

    - Regarde bien si les adresses (feuille, colonne) que j'ai mises dans mon code sont adaptées à tes données
    Exemple Cells(i,2) correspond à la cellule colonne B ligne i.
    Précise bien dans quelles colonnes se trouvent tes données.

    - En ce qui concerne le rapprochement, pour une cellule commune aux 2 feuilles, effectue un test avec la fonction Equiv de cette façon.

    =Equiv(valeur cherchée de la feuille "mafeuille", colonne de "base" où doit se trouver la valeur cherchée, 0)

    Si tu obtiens une erreur, alors il doit y avoir un problème dans tes occurences de la colonne B de ta 1ère feuille;

    - En dernier recours, joins un fichier simplifié

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  10. #10
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut recherche
    Salut à toi mercatog,

    Dans ton code, j'ai l'impression qu'il faut écrire

    Antoine,

    J'ai un niveau plus que modeste (presque ridicule comparé à mercatog et les autres). Malgré tout, si j'avais abandonné dès qu'une difficulté se présentait, je n'effectuerais pas mes développements actuels. En VBA, je pense, il faut galèrer au début et même après. C'est cette galère qui fait progresser.

    Alors, continue...

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  11. #11
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    @ MarcelG: ça dépends s'il veut supprimer de la feuille Feuil1 les lignes dont les adresses contiennent l'un des domaines existants en feuille Feuil2 ou les laisser.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  12. #12
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 17
    Points : 6
    Points
    6
    Par défaut J'essaye de recapituler
    Feuil1 (mon top domaine qui bouge pas)
    ColA

    hotmail.com
    hotmail.fr
    msn.com
    live.com
    live.fr
    gmail.com
    yahoo.fr
    yahoo.com
    free.fr
    orange.fr
    wanadoo.fr
    aliceadsl.fr
    laposte.net
    neuf.fr
    sfr.fr
    voila.fr


    Feuil2
    ColA | ColB

    anne.sauthier@wanadoo.fr | wanadoo.fr
    annette.k@wanadoo.fr | wanadoo.fr
    annie.subiger@numericable.net | numericable.fr
    arnaud.decharmoy@laposte.fr | laposte.net
    audrey.denni@orange.fr | orange.fr
    bluteau.valerie@neuf.fr | neuf.fr
    c.mathieu87@neuf.net | neuf.fr
    callmemadeleine@yahoo.fr | yahoo.net
    carin44@hotmail.fr | hotmail.fr
    cyril.page0850@ac-creteil.fr | ac-creteil.fr

    Si Feuil2.ColB appartient pas à la Feuil1.ColA alors Supprimer la ligne complete de Feuil2.ColB

  13. #13
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Adapte les codes qu'on te propose
    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
    sub macro()
    Dim i As Long, LastLig As Long
    Dim c As Range
     
    Application.ScreenUpdating = False
    With Sheets("Feuil2")
        LastLig = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = LastLig To 2 Step -1
            Set c = Sheets("Feuil1").Range("A:A").Find(Split(Range("A" & i).Value, "@")(1), lookat:=xlWhole)
            If Not c Is Nothing Then
                .Rows(i).Delete
                Set c = Nothing
            End If
        Next i
    End With
    end sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  14. #14
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    J'essaye tout à chaque fois, mais le VBA, est vraiment pas mon truc, je préfère le PHP..

    "L'indice n'appartient pas à la selection"

    Antoine.

  15. #15
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Malheureusement pour toi ici c'est le forum vba Excel.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  16. #16
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    Donc il faut bien comparer les caractères de la colonne B, car cux-ci peuvent être différents de l'extraction de la cellule correspondante colonne A (exemple callmemadeleine). Ou je suis fatigué ?

    Quoi qu'il en soit, Antoine, as-tu fait le test avec la fonction Equiv?

    Cordialement.

    Marcel.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  17. #17
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Citation Envoyé par a.saussois Voir le message
    "L'indice n'appartient pas à la selection" ??

    Antoine.
    Ta première feuille s'appelle bien Feuil1?
    et ta 2ème feuille, c'est bien Feuil2?
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  18. #18
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 17
    Points : 6
    Points
    6
    Par défaut Bonjour, je reviens vers vous à nouveau
    Bonjour,

    J'ai réussi à tout placer dans le même classeur, j'ai 3 colonnes, je voudrais comparer si les valeurs de la colonne C correspondent à celles de la colonne B, et si elle ne correspondent pas, supprimer les adresses en colonne A.

    col A: (correspond a des adresses mails)

    aaa.gmail.com
    bbb.numericable.com
    ccc.hotmail.fr
    ddd.hotmail.com
    eee.free.fr

    col B: (correspond a un top qui ne change pas de 15 noms de domaine)

    gmail.com
    free.fr
    hotmail.fr

    col C: (correspond au nom de domaine de l'adresse en col A)

    gmail.com
    numericable.com
    hotmail.fr
    hotmail.com
    free.fr



    Fichier test : ftp://a.saussois@ftpperso.free.fr/test.xls



    Cordialement,
    Antoine.

  19. #19
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut suppression
    Bonsoir,

    Il ne faut pas que tes colonnes se suivent car cela deviendrait ingérable!

    Ici les colonnes A et C sont liées donc elles peuvent être rapprochées.
    (les valeurs de la 2ème ne sont qu'une extraction de lcelles de la 1ère).

    Il te faut rapprocher tes colonnes A et C dans une feuille nommée par exemple "mafeuille", et par ailleurs conserver les 3 valeurs de la colonne B dans une feuille nommée "Table".

    Ensuite, tu peux adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Sub essai()
    Dim colonne As Range
    Application.ScreenUpdating = False
    Max = Sheets("mafeuille").Range("A" & Rows.Count).End(xlUp).Row
    With Sheets("Table")
        Set colonne = .Range(.Range("A1"), .Range("A" & Rows.Count).End(xlUp))
    End With
    For i = Max To 1 Step -1
        If IsError(Application.Match(Sheets("mafeuille").Cells(i, 2), colonne, 0)) Then Sheets("mafeuille").Cells(i, 2).EntireRow.Delete
    Next
    Set colonne = Nothing
    End Sub
    Je n'arrive pas à lire ton classeur.
    Peux-tu le joindre à la discussion, s'il te plaît.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  20. #20
    Futur Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 17
    Points : 6
    Points
    6
    Par défaut PJ
    Voilà ma pièce jointe!
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Comparer les valeurs de deux colonnes d'une feuille excel
    Par charrynsasi dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/12/2012, 14h40
  2. [XL-2003] Comparer 2 colonnes dans 2 feuilles différentes
    Par MaverickRozay dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/04/2012, 08h39
  3. [XL-2003] Comparer 2 colonnes dans une feuille
    Par Mimosa777 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 07/05/2010, 16h59
  4. Comparer des colonnes dans 2 feuilles différentes et supprimer les doublons
    Par eudeline91 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/04/2008, 09h24
  5. Comparer 3 colonnes dans 2 feuilles
    Par Mimosa777 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 08/04/2008, 20h57

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