Comparer deux onglets excel

Bonjour,

Je souhaiterais comparer deux onglets excel. Dans un premier onglet, j'ai une base de données d'un grand nombre d'entreprises.

Dans le deuxième onglet, j'ai juste les entreprises que je veux, j'aimerais donc pourvoir supprimer automatiquement les entreprises du premier onglet qui ne se trouvent pas dans le deuxième.

Comment faire ? Je pense qu'il faut une macro en VBA.

Merci d'avance

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    Ajoutes une colonne au 1er onglet avec une formule du type:
    =NB.SIEntreprises_du_2°_onglet;Entreprise)

    Puis tu filtres sur 0 et tu supprimes les lignes
    1. Merci de vos réponse mais j'ai essayé et la formule ne fonctionne pas !
      1. «la formule ne fonctionne pas» ???

        Ne serait-ce pas plutôt les noms des entreprises qui seraient libellés différemment ?

        Il faut que les noms soient identiques dans les 2 listes !

        Si ce n'est pas le cas, tu n'as plus qu'a supprimer les entreprises manuellement !
        1. Contributeur
          Bonjour

          Utiliser =supprespace(a1) pour enlever les espaces parasites
          ou si vous avez un numéro fournisseur comparer sur les numéros
          1. Bonsoir,

            Je vous propose cette macro. Essayez là en adaptant les plages de cellules à votre fichier.

            Sub suppression_entreprises()
            Dim rng_liste_ent, rng_critere, resultat, rng_ent As Range
            Dim ent_a_supp, ent As String

            Sheets(1).Activate
            Set rng_liste_ent = Range(Range("A2"), Range("A2").End(xlDown))
            Sheets(2).Activate
            If Range("A1").Offset(1, 0).Value <> "" Then
            Set rng_critere = Range(Range("A2"), Range("A2").End(xlDown))
            Else
            Set rng_critere = Range("A2")
            End If

            Sheets(1).Activate
            For Each cell In rng_liste_ent
            cell.Select
            Set rng_ent = ActiveCell
            ent = ActiveCell.Value
            Sheets(2).Activate
            Set resultat = rng_critere.Cells.Find(what:=ent, searchorder:=xlByRows, searchdirection:=xlNext)

            If resultat Is Nothing Then
            ent_a_supp = ent_a_supp & rng_ent.Address(0, 0) & ","
            End If

            Sheets(1).Activate
            Next cell

            Range(Left(ent_a_supp, Len(ent_a_supp) - 1)).Select
            Selection.EntireRow.Delete
            Range("A1").Select

            End Sub

            En espérant que cela puisse vous aider!
            N'hésitez pas si soucis.

            Bonne soirée
            1. Contributeur
              Bonjour

              =NB.SI(Feuil1!$A$1:$A$100;Feuil2!$A1)
              ou A colonne des entreprises
              1. C'est plutôt l'inverse :
                =NB.SI(Feuil2!A:A;A2)
                sur la feuille 1 ou il faut supprimer les excédents