Comparaison de liste et doublon

Bonjour.

J'ai crée une macro dont voici les objectifs:

  • il faut comparer deux listes de nombres, la première dans la colonne A et la deuxième en B
  • le but est de savoir si on a exactement deux listes identiques. Ce genre de macro pourrait servir éventuellement lors d'inventaire. On fait un comptage avec des références de produits (liste 1). Pour valider le première comptage, on envoie recenser les références de produits par une autre personne de nouveau (liste 2).

La macro que j'ai crée prends un élément de la première liste et la compare à tous les éléments de la deuxième liste et ainsi de suite...

Sub compa()
    ActiveWorkbook.Worksheets(1).Name = "compa"

    Dim i As Integer, j As Integer
    Dim compteur As Integer

    For i = 2 To 10
        For j = 2 To 10
            If Cells(i, 1) = Cells(j, 2) Then
                compteur = compteur + 1
            End If
        Next j
    Next i

    Range("E4").Value = compteur / 9

End Sub

Quand les deux listes contiennent les mêmes références une fois chaque une, la macro est pertinente.

Mais quand une liste contient deux fois la même référence, et que cette liste ne contient pas toutes les références de l'autre liste, j'ai quand même une ressemblance de 100%.

Comment pourrais-je modifier la macro?

Merci.

Bon week-end.

10compa.xlsm (16.39 Ko)

Bonjour

Une méthode

Option Explicit

Sub compa()
Dim i As Integer
Dim compteur As Integer

  ActiveWorkbook.Worksheets(1).Name = "compa"
  For i = 2 To 10
    If Application.CountIf(Range("B2:B10"), Range("A" & i)) = 1 Then
        compteur = compteur + 1
      End If
  Next i
  Range("E4").Value = compteur / 9
End Sub

Merci BANZAI64.

Bon week-end.

Bonjour,

Une autre technique avec des plages dynamiques.

2 noms à défnir (déjà défini dans le classeur joint) via ctrl-F3

Liste1 =>

=DECALER(compa!$A$2;;;NBVAL(compa!$A:$A)-1;1)

Liste2 =>

 =DECALER(compa!$B$2;;;NBVAL(compa!$B:$B)-1;1)

Puis la macro:

Sub compa()

Dim estValTrouvee() As Boolean
Dim i As Integer, j As Integer, compteur As Integer

ReDim estValTrouvee(1 To Range("Liste1").Cells.Count)

    For i = LBound(estValTrouvee) To UBound(estValTrouvee)
        For j = 1 To Range("Liste2").Cells.Count
            If Range("Liste1").Cells(i, 1).Value = Range("Liste2").Cells(j, 1).Value And estValTrouvee(i) = False Then
                estValTrouvee(i) = True
                compteur = compteur + 1
            End If
        Next j
    Next i

    Range("E4").Value = compteur / Range("Liste1").Cells.Count

End Sub
14compa.xlsm (19.12 Ko)

Merci Gaugin.

Je ne connaissais pas la formule "décaler".

Et ton algo et pas mal aussi.

Rechercher des sujets similaires à "comparaison liste doublon"