Multiple trie mais perdu [ résolu]

Bonjour à tous :slight_smile: , avant de poster j’ai regarder le soucis d’autre forumer mais aucun correspond au mien( .
Je souhaite comparer deux onglets ( Recette /Prod) de la façon suivante c’est à dire qu’il compare par Sicovam ( Colonne D)/par parent-Sector ( C) pour enfin me dire entre mes deux onglets les Sector Name qui sont présent dans Recette mais pas dans PROD.

Je ne vois pas du tout comment procéderClasseur1F.xlsx (807,6 Ko)
?

Bonjour

Une proposition qui te colorise les deux feuilles avec les données en colonne C & D communes
Donc les autres sont uniques

Vu le nombre de données pour être rapide, il faut passer par une macro type Dictionary (dictionnaire)

Sub ColoriageCommuns()
  Dim NCol%, DernLigF1%, DernligF2%, i%, k%
  Dim A, B, MonDico, Temp$, F1, F2
  NCol = 2        'Colonnes C&D
  Application.ScreenUpdating = False
  Set F1 = Sheets("Recette")
  Set F2 = Sheets("PROD")
  F1.Range("A1").CurrentRegion.Interior.ColorIndex = xlNone 'Ote les couleur sur feuille Recette
  F2.Range("A1").CurrentRegion.Interior.ColorIndex = xlNone 'Ote les couleur sur feuille PROD
  DernLigF1 = F1.Range("A" & Rows.Count).End(xlUp).Row 'Dernière ligne feuille Recette
  DernligF2 = F2.Range("A" & Rows.Count).End(xlUp).Row 'Dernière ligne feuille PROD
  A = F1.Range("c2:D" & DernLigF1).Value 'Défini la plage de recherche feuille Recette
  B = F2.Range("c2:D" & DernligF2).Value 'Défini la plage de recherche feuille PROD
  Set MonDico = CreateObject("Scripting.Dictionary")
  For i = 2 To UBound(A) 'Boucle sur Feuille Recette et place en mémoire (Temp) les données
    Temp = ""
    For k = 1 To 2: Temp = Temp & A(i, k): Next k
    MonDico(Temp) = i
  Next i
  For i = 1 To UBound(B) 'Boucle sur Feuille Prod et place en mémoire (Temp) les données
    Temp = ""
    For k = 1 To 2: Temp = Temp & B(i, k): Next k 'Boucle sur les deux (Temp) du dico et colorise si il y a égalité
    If MonDico.exists(Temp) Then
      F1.Cells(MonDico(Temp), 1).Resize(, 7).Interior.ColorIndex = 4 'colorise les doubles en feuille Recette
      F2.Cells(i, 1).Resize(, 7).Interior.ColorIndex = 4 'colorise les doubles en feuille PROD
    End If
  Next

End Sub

Classeur1F.xlsm (829,4 Ko)

1 « J'aime »

super !! merci je teste :sunglasses:

Hello, super idée que de colorier ce qui est commun ! j’ai regardé et il y’a un bugue :sweat_smile:

exemple avec la ligne 6 qui est blanche dans Recette ALORS que je retrouve la même en PROD ligne 5 ( mais verte).

Comment cela se fait -il?
Les deux lignes devraient être coloriées?

En te remerciant :slight_smile:

Hello , alors scotché? :grin:

Bonjour,

Pas du tout :star_struck:
Classeur1F.xlsm (902,0 Ko)

Ca semble etre top. quel était le soucis? j’ai regarde le code je le comprend mais suis incapable de le refaire. comment pourrais je procéder pour monter en compétence sur cette techno?

Re,

A force d’exercer cela devient automatique, mais en étant honnête, le principe des macros avec dictionnary et les méthodes Tableaux ne sont pas les plus simple à mettre en place quand on débute.

Si le problème est résolu, n’oublie pas de passer le post en résolu :wink:

par quoi puis je commencer? :slight_smile: hésite pas à me conseiller

Re,

Commence déjà par maîtriser les boucles simples, puis doubles, entre feuilles, classeurs sur des exemples que tu te monte toi-même avec une cinquantaine de lignes.
Cela donne déjà un bon début à la compréhension du VBA, ensuite, pour des grosses BDD, il faudra passer soit par des Tableaux ou par le Dictionnary qui est sur le principe de mettre en mémoire les données pour seulement les retranscrire ensuite après traitement à une vitesse rapide, sinon par simple boucle tu auras le même résultat mais de 1 à 2 sec, tu iras de 1 à 10 minutes suivant la taille à gérer.