Bonjour j'ai un problème à traiter en VBA mais je ne sais pas comment m'y prendre.
J'ai un tableau Excel ressemblant à ceci:
Il y a des Réf qui proviennent parfois de plusieurs fournisseur.
Il y a des dates qui arrivent à échéance
Réf Fournisseur Date CDC Date FT Date REV MP026 riri riri@fournis.om.com 06/01/2016 16/01/2016 19/01/2016 MP027 fifi fifi@fournis.om.com 07/01/2016 17/01/2016 20/01/2016 MP028 loulou loulou@fournis.om.com 08/01/2016 18/01/2016 21/01/2016 MP029 lulu lulu@fournis.om.com 09/01/2016 19/01/2016 22/01/2016 MP030 popo popo@fournis.om.com 10/01/2016 20/01/2016 23/01/2016 MP031 jiji jiji@fournis.om.com 11/01/2016 06/01/2016 24/01/2016 MP032 huhu huhu@fournis.om.com 12/01/2016 22/01/2016 25/01/2016 MP033 bobo bobo@fournis.om.com 13/01/2016 23/01/2016 07/01/2016 MP034 popo popo@fournis.om.com 14/01/2016 24/01/2016 27/01/2016 MP035 momo momo@fournis.om.com 15/01/2016 25/01/2016 28/01/2016 MP036 momo momo@fournis.om.com 16/01/2016 26/01/2016 29/01/2016
J'aimerai réer des alertes quand une date arrive à échéance de la façon suivante:
Faire un seul MsgBox par fournisseur disant par exemple:
- riri MP026 délai CDC arrive à échéance
ou
- jiji MP031 délai FT arrive à échéance
ou
- momo MP035 délai CDC arrive à échéance
MP036 délai CDC arrive à échéance
délai FT arrive à échéance
Voici ce que j'ai commencé mais ce n'est pas concluant car il y a des erreurs que je comprends pas et surtout je ne sais pas comment faire en sorte de ne pas traiter 2 fois la même alerte. (exemple de popo)
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 Sub ComptIdentique() Dim Email As String Dim DernLigne As Long Dim T_date Dim Message As String Dim MessageCDC As String Dim MessageFT As String Dim MessageREF As String Dim DateCDC As String Dim DateFT As String Dim DateREV As String Dim Ref As String Dim i As Integer Dim j As Integer Dim PlageEmail As Range Dim prec As String Dim Delai As Integer Dim Année As Integer Set PlageEmail = Worksheets("feuil1").Range("C1: C65000 ") T_date = Date Année = 3 'ans Delai = Année * 365 DernLigne = Range("C1048576").End(xlUp).Row For i = 1 To DernLigne Email = Range("C1").Offset(i).Value For j = 1 To DernLigne Ref = Range("A1").Offset(j).Value DateCDC = Range("F1").Offset(j).Value DateFT = Range("H1").Offset(j).Value DateREV = Range("J1").Offset(j).Value If Range("C1").Offset(j).Value = Email Then If T_date - Delai > DateCDC Then MessageCDC = " délai CDC " & DateCDC & " arrive à échéance" End If If T_date - Delai > DateFT Then MessageFT = " délai FT " & DateFT & " arrive à échéance" End If If T_date - Delai > DateREV Then MessageREV = " délai REV " & DateREV & " arrive à échéance" End If Message = Message & Ref & vbCrLf & MessageCDC & vbCrLf & MessageFT & vbCrLf & MessageREV & vbCrLf If Message <> "" Then MsgBox "Fournisseur " & Email & vbCrLf & vbCrLf & Message End If End If Next j Email = "" Message = "" Next i End Sub
Merci pour vos idées
Partager