Bonjour à tous, j'ai une serieux soucis voici maintenant deux jours que je n'y arrive pas. J'espère de tout coeur que vous pourriez m'éclairer.
Je cherche à remplir un template en fonction d'un changement dans ma liste deroulante pour se faire j'ai écrit les 3 macro suivante:

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
Sub update1()
Dim i, j, k, l, m As Long
Dim S3, S4 As Worksheet
Set S3 = Sheets("calcul")
Set S4 = Sheets("ETF 1")
k = 3
For j = 3 To 52
    For l = 15 To 20
        For i = 15 To 24
 
                S4.Cells(8, 22) = S3.Cells(2, j)
                S4.Cells(7, 3) = S3.Cells(5, j)
                S4.Cells(9, 3) = S3.Cells(4, j)
                S4.Cells(i, 6) = Application.VLookup(S4.Cells(i, 3), S3.Range(S3.Cells(2, 1), S3.Cells(83, 52)), k, False)
                S4.Cells(i, 12) = Application.VLookup(S4.Cells(i, 9), S3.Range(S3.Cells(2, 1), S3.Cells(83, 52)), k, False)
 
        Next i
        S4.Cells(l, 18) = Application.VLookup(S4.Cells(l, 15), S3.Range(S3.Cells(2, 1), S3.Cells(83, 52)), k, False)
        S4.Cells(21, 18) = "Y"
    Next l
    k = k + 1
 
Next j
 
End Sub


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
Sub update2()
Dim m, j As Long
Dim S3, S4 As Worksheet
Set S3 = Sheets("calcul")
Set S4 = Sheets("ETF 1")
 
    For j = 3 To 52
        For m = 3 To 52
 
            S4.Cells(8, 22) = S3.Cells(2, j)
            S4.Range(S4.Cells(28, 6), S4.Cells(34, 6)).Value = S3.Range(S3.Cells(155, m), S3.Cells(161, m)).Value
            S4.Range(S4.Cells(28, 9), S4.Cells(34, 9)).Value = S3.Range(S3.Cells(124, m), S3.Cells(133, m)).Value
            S4.Range(S4.Cells(28, 12), S4.Cells(34, 12)).Value = S3.Range(S3.Cells(134, m), S3.Cells(143, m)).Value
            S4.Range(S4.Cells(28, 18), S4.Cells(30, 18)).Value = S3.Range(S3.Cells(234, m), S3.Cells(236, m)).Value
            S4.Range(S4.Cells(38, 3), S4.Cells(47, 3)).Value = S3.Range(S3.Cells(164, m), S3.Cells(173, m)).Value
            S4.Range(S4.Cells(38, 6), S4.Cells(47, 6)).Value = S3.Range(S3.Cells(174, m), S3.Cells(183, m)).Value
            S4.Range(S4.Cells(38, 9), S4.Cells(47, 9)).Value = S3.Range(S3.Cells(104, m), S3.Cells(113, m)).Value
            S4.Range(S4.Cells(38, 12), S4.Cells(47, 12)).Value = S3.Range(S3.Cells(114, m), S3.Cells(123, m)).Value
            S4.Range(S4.Cells(38, 15), S4.Cells(47, 15)).Value = S3.Range(S3.Cells(84, m), S3.Cells(93, m)).Value
            S4.Range(S4.Cells(38, 18), S4.Cells(47, 18)).Value = S3.Range(S3.Cells(94, m), S3.Cells(103, m)).Value
 
        Next m
 
 
Next j
 
End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Private Sub worksheet_change(ByVal target As Range)
Dim S3, S4 As Worksheet
Set S3 = Sheets("calcul")
Set S4 = Sheets("ETF 1")
 
    If target.Address = S4.Cells(8, 22) Then
        Call update1
        Call update2
 
        end if
End Sub
Ce que je souhaite c'est que avant que ma boucle passe à la prochaine valeur dans le cas de ma macro 1 , la premiere boucle de la macro 2 s'execute et passe la main a la premiere macro pour l'xécution de la prochaine valeur. j'espère etre claire en vous remerciant par avance.