Bonjour !
Je souhaiterais créer un tableau avec trois colonnes : la première colonne est une colonne avec des montants (en milliers d'euros de sorte qu'une cellule va typiquement être 2 500 KEUR). Ma deuxième colonne récupère un taux de change qui se trouve dans une autre feuille et la troisième colonne fait un produit des deux.
Ce que j'ai fait, c'est que j'ai créé une fonction qui extrait la partie devise de ma cellule
Puis ensuite je fais un vLookUp qui est censé récupéré le taux de change associé au montant indiqué dans la cellule
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Function extractLetters(vRge As Variant, j As Long, k As Long) 'extrait lettres Dim Texte As String Dim oReg As Object Set oReg = CreateObject("vbscript.regexp") With oReg .Global = True .IgnoreCase = True .Pattern = "\d" Texte = .Replace(vRge(j, k).Text, "") End With End FunctionLe seul problème c'est que quand je lance la sub ComputeNumbers() j'ai l'erreur "Argument non facultatif" quand il y a utilisation de la fonction extractLetters.
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 Sub ComputeNumbers() Dim oWsh As Excel.Worksheet Dim oRg As Excel.Range Dim vTmp As Variant Dim j As Long Dim sName As String For Each oWsh In ThisWorkbook.Worksheets Select Case sName Case "Sheet 1" Set oRg = oWsh.UsedRange vTmp = oRg.Value For j = LBound(vTmp) To UBound(vTmp) vTmp(j + 1, 2) = Application.VLookup(extractLetters(vTmp(j + 1, 1)), "K" & ThisWorkbook.Worksheets("Taux de change").Range("A:B"), 2, False) Next j Case "Sheet 2" Set oRg = oWsh.UsedRange vTmp = oRg.Value For j = LBound(vTmp) To UBound(vTmp) vTmp(j + 1, 2) = Application.VLookup(extractLetters(vTmp(j + 1, 1)), "K" & ThisWorkbook.Worksheets("Taux de change").Range("A:B"), 2, False) Next j Case "Sheet 3" Set oRg = oWsh.UsedRange vTmp = oRg.Value For j = LBound(vTmp) To UBound(vTmp) vTmp(j + 1, 2) = Application.VLookup(extractLetters(vTmp(j + 1, 1)), "K" & ThisWorkbook.Worksheets("Taux de change").Range("A:B"), 2, False) Next j End Select Next End Sub
Comme vous l'aurez remarqué, le code doit fonctionner pour les trois feuilles Sheet 1, Sheet 2 et Sheet 3, les taux de change se trouve dans la feuille "Taux de Change" sous le format EUR et non KEUR et enfin il faut garder les données de chaque feuille en tant que Variant.
Voilà un grand merci par avance pour votre aide ! Je suis disponible si vous avez besoin de précisions !
Partager