Bonjour a tous, je fais un stage, et on me demande de faire une macro VB comme la suivante (voir ci dessous).
Le probleme etant que je ne la comprends pas entierement.
C'est pour faire une recherche sur un fichier, une sorte de Vlookup.
Si quelqu'un peut m'aider a la comprendre, ce serait gentil.
Voila le code de la macro.
J'ai mis en rouge ce qui me pose probleme et que j'aimerais que l'on m'explique.
Merci a tous.
Je suis desole je n'arrive pas a incorpore dans ce message les print ecran du fichier excel (il me met fichier invalide ??). Mais je peux peut-etre les envoyer par email.
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89 Sub data_analysis() Dim Vector() Dim Vector2() Dim Party() Dim Position() Start = Sheets("Expiries").Range("C2") Final = Sheets("Expiries").Range("C3") z = 1 x = 1 teller = Sheets("per klant").Range("A65536").End(xlUp).[COLOR="Red"]Row - 13 teller2 = teller + 2 For i = 1 To teller If Sheets("per klant").Range("G" & 13 + i) >= Start Then If Sheets("per klant").Range("G" & 13 + i) <= Final Then ReDim Preserve Vector(1 To z) Vector(z) = 13 + i z = z + 1 End If End If If Sheets("per klant").Range("K" & 13 + i) >= Start Then If Sheets("per klant").Range("K" & 13 + i) <= Final Then ReDim Preserve Vector2(1 To x) Vector2(x) = 13 + i x = x + 1 End If End If Next i Sheets("Expiries").Range("C6").ClearContents With Sheets("Expiries").Range("C12:I100") .ClearContents .Font.ColorIndex = 1 End With Sheets("Expiries").Range("G6").ClearContents y = 1 For i = 1 To teller2 If Sheets("per klant").Range("A" & 11 + i).Interior.ColorIndex = 2 Then ReDim Preserve Party(1 To y) ReDim Preserve Position(1 To y) Party(y) = Sheets("per klant").Range("A" & 11 + i) Position(y) = 11 + i y = y + 1 End If Next i Sheets("counterparties").Range("B3:B1000").ClearContents For a = 1 To UBound(Party) With Sheets("counterparties").Range("B2") .Offset(a, 0) = Position(a) .Offset(a, 1) = Party(a) End With Next a Sheets("Expiries").Range("C6") = z - 1 If z > 1 Then For j = 1 To UBound(Vector) With Sheets("Expiries") .Range("C" & 11 + j) = Vector(j) .Range("D" & 11 + j) = Sheets("per klant").Range("G" & Vector(j)) .Range("E" & 11 + j).FormulaR1C1 = "=vlookup(RC[-2],COUNTERPARTIES!R3C2:R" & UBound(Party) + 2 & "C3,2)" End With Next j Else Sheets("Expiries").Range("C12") = "no expiries in reference period" End If Sheets("Expiries").Range("G6") = x - 1 If x > 1 Then For m = 1 To UBound(Vector2) With Sheets("Expiries") .Range("G" & 11 + m) = Vector2(m) .Range("H" & 11 + m) = Sheets("per klant").Range("K" & Vector2(m)) .Range("I" & 11 + m).FormulaR1C1 = "=vlookup(RC[-2],COUNTERPARTIES!R3C2:R" & UBound(Party) + 2 & "C3,2)" End With Next m Else Sheets("Expiries").Range("G12") = "no calls in reference period" End If End Sub
Pour les decrire :
Sur l'onglet "per klant", il y a de A1 a A10, des codes de couleur (telle couleur pour tel caracteristique).
Puis de A11 a K11, les intitules des colonnes avec en A11 "counterparty" et en G11 "expiry".
Sur l'onglet "expiries", je mets une date de debut en C2 et une date de fin en C3.
Puis je lance la macro et les resultats s'affichent en colonne a partir de C-D-E-12 et G-H-I-12.
C12 = le numero de la ligne de la reponse
D12 = la "expiry date"
E12 = le nom de la societe
G12, H12, I12 = Pareil que CDE12 sauf que ce n'est pas pour la date d'expiration mais la "call date".
Ce n'est pas important, juste l'explication pour la "expiry Date" me servira.
Merci.
Partager