Bonjour à tous , 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 »
Hello, super idée que de colorier ce qui est commun ! j’ai regardé et il y’a un bugue
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
Bonjour,
Pas du tout
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
par quoi puis je commencer? 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.