Public Tablo ' tableau qui récupère la page d'un vendeur, en array pour accélerer, en public pour être partagé entre les deux macros
Sub Worksheet_Activate()
On Error GoTo Fin
Application.ScreenUpdating = False
Application.EnableEvents = False ' On bloque tout nouvel événement
Dim DLTDB%, F, DL%
DLTDB = Range("A65500").End(xlUp).Row ' mémorisation dernière ligne de TDB, utile lors du message final
For Each F In Worksheets ' Pour toutes les feuilles
If F.Name <> "Tableau de bord" Then ' Hormis Tableau de bord
With Sheets(F.Name)
DL = .Range("A65500").End(xlUp).Row ' Dernière ligne occupée de la feuille
Tablo = .Range("A9:N" & DL) ' Tranfert données dans Tablo
End With
Mise_à_jour ' Mise à jour du Tableau de bord
End If
Next F
If DLTDB = Range("A65500").End(xlUp).Row Then ' Y a t il des nouveautés ?
MsgBox " Pas de nouveautés !"
Else
MsgBox (Range("A65500").End(xlUp).Row - DLTDB) & " items ajoutés."
End If
Fin:
Application.EnableEvents = True
End Sub
Sub Mise_à_jour()
Dim Ligne%, Trouvée%
Ligne = 18 ' Ligne de départ
Trouvée = 0 ' Trouvée=1 si l'item a été trouvé dans TDB donc ignoré
For i = 1 To UBound(Tablo) ' Pour tous les éléments
While Cells(Ligne, "A") <> "" ' Pour toute ligne non vide
If Cells(Ligne, "C") = Tablo(i, 3) Then ' Si même date
If Cells(Ligne, "N") = Tablo(i, 14) And Cells(Ligne, "A") = Tablo(i, 1) Then ' Et même vendeur et réservataire
Trouvée = 1
End If
End If
Ligne = Ligne + 1
Wend
If Trouvée = 0 Then ' L'item n'a pas été trouvé donc on le copie
Cells(Ligne, "A") = Tablo(i, 1) ' Reservataire
Cells(Ligne, "B") = Tablo(i, 2) ' Vente en Vefa
Cells(Ligne, "C") = Tablo(i, 3) ' Date
Cells(Ligne, "E") = Tablo(i, 5) ' Prêt
Cells(Ligne, "F") = Tablo(i, 6) ' Banque
Cells(Ligne, "N") = Tablo(i, 14) ' Vendeur
Else
Trouvée = 0 ' Remettre le flag Trouvée à 0 s'il valait 1, pour la procheine recherche.
End If
Ligne = 18 ' Ré init de la première ligne
Next i
End Sub