VBA v6.5

Bonjour à tous,

J'ai un fichier récapitulatif des deals en cours qui est alimenté avec les nouveaux deals manuellement (car retraitement de données, onglet "deals 2015") et je reçois régulièrement une nouvelle extract Excel avec les nouveaux deals (onglets "new deals" que j'importe dans mon fichier). Entre deux mises à jour de mon onglet "deals 2015" à partir de la nouvelle extract, il peut arriver qu'un deal sorte et qu'un autre rentre sur une période antérieure (les deals sont affichés et classés par date). Il faut donc que j'applique ces changements sur mon onglet "deals 2015").

Mon objectif final est de faire matcher les deux onglets sur toutes les périodes : mon onglet alimenté manuellement vs celui que je reçois de ma source. Le risque opérationnel existe et je souhaite le réduire autant que possible.

Pour cela, j'ai une macro qui va me matcher les deals codes présents sur les périodes antérieures par mois ou trimestre sur les deux onglets (m'indiquant que le deal est toujours présent) en coloriant les cellules (des deux onglets) de manière à isoler les deals qui sortent, qui rentrent ou dont le montant varie entre deux majs.

Pour le moment la macro colorie bien les deals présents dans les deux onglets mais je bloque quand il s'agit de vérifier si le montant ne change pas pour ces deals.
Je souhaite que pour chaque deal déjà présent dans les deux onglets, excel vérifie que le montant reste inchangé (sur les deux onglets) et que si modification de montant il y a, il colorie la cellule du montant en rouge flashy.

NB :
Colonne E = deal code
Colonne J = montants

Le code ne fonctionne pas à partir de la ligne 31.

Je ne sais pas trop dans quel sens aller. Merci d'avance pour votre aide!

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
Sub New_prod_MFC()
'on désire comparer deux feuilles d'un même classeur
 
Dim Ret As Integer
Dim Msg As String
Dim MsgTitle As String
Msg = "Avez-vous séléctionné les mêmes périodes ?"
MsgTitle = "Contrôle"
Ret = MsgBox(Msg, vbYesNo, MsgTitle)
If Ret = vbNo Then
Exit Sub
Else
 
'on définit la couleur pour MFC
coul = 8
coul2 = 3
'pour chaque cellule de la colonne E de l'onglet "deals 2015"
For n = 2 To ActiveWorkbook.Sheets("deals 2015").Range("E65536").End(xlUp).Row
'pour chaque ligne de la colonne E de l'onglet source
  For m = 2 To ActiveWorkbook.Sheets("new deals").Range("E65536").End(xlUp).Row
 
    If InStr(ActiveWorkbook.Sheets("new deals").Range("E" & m), ActiveWorkbook.Sheets("deals 2015").Range("E" & n)) <> 0 Then
       ActiveWorkbook.Sheets("deals 2015").Range("E" & n).Interior.ColorIndex = coul
       ActiveWorkbook.Sheets("new deals").Range("E" & m).Interior.ColorIndex = coul
 
    End If
  Next m
Next n
 
For Each Cell In Worksheets("deals2015").Range("E:E")
If Worksheets("deals2015").Range("E" & n).Interior.ColorIndex = coul Then
 
'pour chaque cellule de la colonne E de l'onglet "deals 2015"
For n2 = 2 To ActiveWorkbook.Sheets("deals 2015").Range("J65536").End(xlUp).Row
'pour chaque ligne de la colonne E de l'onglet source
For m2 = 2 To ActiveWorkbook.Sheets("new deals").Range("J65536").End(xlUp).Row
 
           If ActiveWorkbook.Sheets("new deals").Range("J" & m2).Value <> ActiveWorkbook.Sheets("deals 2015").Range("J" & n2).Value Then
                ActiveWorkbook.Sheets("new deals").Range("J" & m2).Interior.ColorIndex = coul2
                End If
                End If
 
Next m2
Next n2
End Sub
Cordialement

Nevpen