Comparaison de deux tableaux et suppression de lignes

Bonjour,

Je dispose de deux tableaux.

Dans le premier (Classeur1) la liste de toutes les routes et ronds-points (ouverts à la circulation) d'une carte.

Dans le second (Classeur2), une liste de chemin empruntant certains de ces routes et ronds-points.

Je souhaite supprimer les chemins du second tableau si l'une des routes ou ronds-points du premier tableau est absente (donc fermé à la circulation).

J'ai codé en VBA une macro me permettant de comparer un à un les éléments du Classeur1 au Classeur2 puis de supprimer les lignes des chemins absents du Classeur2, mais ce ne sera pas optimisé quand le nombre d'éléments à analyser sera important.

Je souhaite savoir si une fonction d'Excel permet ce tri (ou filtrage ou pré sélection) "automatiquement" ?

Voir le fichier attaché pour l'exemple.

Merci,

Lucie

9plan.zip (12.31 Ko)

Bonjour

Il serait bien de préciser ta version d'autant que tu postes un xls, format périmé depuis 13 ans

Par ailleurs ton exemple n'est guère représentatif pour tous les chemins ont leurs points dans le listes des éléments ouverts

Edit : a noter qu'il s'agit d'un multipost avec des réponses aussi ailleurs

Bonjour le Fil,

Bonjour Chris,

Dans un module standard :

'Ajouter une référence à Microsoft Scripting Runtime
Option Explicit
Sub VerifierChemin()
Dim d As New Dictionary
Dim t As Variant
Dim r As String
Dim i As Long
Dim j As Long
  'Routes ouvertes
  t = Worksheets("Classeur1").Range("A1").CurrentRegion.Value
  For i = LBound(t) To UBound(t)
    d(t(i, 1)) = ""
  Next i
  'Chemins à vérifier
  t = Worksheets("Classeur2").Range("A1").CurrentRegion.Offset(0, 1).Value
  For i = LBound(t) To UBound(t)
    For j = LBound(t, 2) To UBound(t, 2)
      If Not IsEmpty(t(i, j)) Then
        If Not d.Exists(t(i, j)) Then
          ' mémoriser les chemins fermés
          r = r & "," & i & ":" & i
          Exit For
        End If
      End If
    Next j
  Next i
  r = Mid(r, 2)
  ' Effacer les chemins fermés
  If Not r = "" Then Worksheets("Classeur2").Range(r).Delete
End Sub

Merci à tous, je regarde vos codes.

Rechercher des sujets similaires à "comparaison deux tableaux suppression lignes"