Aide Macro (Call)

Bonjour,

J'aimerais savoir si quelqu'un pouvait m'aider dans mon projet VBA. En effet, mon projet est composé de plusieurs macros à réaliser dans un fichier principal. Dans la première macro on doit extraire des données sur un indice boursier présent dans un autre fichier excel pour le mettre dans le fichier principal à la feuille correspondante à l'indice, faire des calcul par rapport aux données transférées et réaliser deux graphiques.

Dans la seconde macro, il faut appeler la macro 1 sur d'autres indices. Autrement dit, je doit appeler les actions faites dans la macro 1 sur des indices que se trouvent sur d'autres fichiers excel et réaliser les memes actions (calculs et graphiques) en fonction des données propres à chaque indice.

Mes problèmes sont les suivants : 1) - comment adapter la macro 1 de manière neutre pour qu'elle puisse réaliser les actions sur chaque indice présent dans des excels différents (le souci c'est que je peux pas adapter ma macro à un seul indice en particulier sinon il y a une erreur pour les autres indices) 2) - comment réaliser une macro/call qui permettrait d'appeler la macro 1 pour chaque indice?

Vu que je suis débutant en VBA, pardonnez mes erreurs de code voire sa lourdeur.

Bien sûr, n'hésitez pas si cela n'est pas clair...

Je vous mets le code des mes macros ci-dessous :

(La macro1 j'ai seulement réussi à l'adapter à un seul indice mais forcément ça ne marche pas pour les autres indices vu que le chemin à parcourir n'est pas le bon)

Sub Macro1(indice As String)

(je transfert les données de l'indice AEX sur mon fichier principal, sur la sheet2, celle destinée à l'indice AEX)

Dim titre As String

Dim wbk1 As Workbook

Dim wbk2 As Workbook

titre = "C:\Users\valentin\Desktop\AEX.xlsx"

Set wbk1 = ThisWorkbook

Set wbk2 = Workbooks.Open(titre) ' jouvre le classeur (titre)

wbk2.Sheets(1).Copy after:=wbk1.Sheets(2)

wbk2.Close

(je fais mes calculs sur la sheet2 et j'établie 2 graphiques en fonctions des résultats)

Range("G1").Value = "Rendement journalier"

'Range("H1").Value = "Performance Cumulée"

'Range("G3").Formula = "=(E3-E2)/E2"

'Range("G3").Copy

'ActiveSheet.Paste Destination:=Range("G4:G513")

Range("H3").Formula = "=(H2+G3)"

Range("H3").Copy

'ActiveSheet.Paste Destination:=Range("H4:H513")

Dim Graph1 As ChartObject

Dim Graph2 As ChartObject

Dim PlageX As Range

Set Graph1 = Sheets("AEX-INDEX").ChartObjects.Add(70, 70, 500, 300)

Sheets("AEX-INDEX").ChartObjects(1).Chart.SeriesCollection.Add Source:=Range("H2:H513")

Sheets("AEX-INDEX").ChartObjects(1).Chart.SeriesCollection(1).Name = "Performance cumulée"

Set PlageX = Range("A2:A513")

Sheets("AEX-INDEX").ChartObjects(1).Chart.SeriesCollection(1).XValues = PlageX

Sheets("AEX-INDEX").ChartObjects(1).Chart.Type = xlLine

Sheets("AEX-INDEX").ChartObjects(1).Chart.HasTitle = True

Sheets("AEX-INDEX").ChartObjects(1).Chart.ChartTitle.Text = "Index AEX"

Set Graph2 = Sheets("AEX-INDEX").ChartObjects.Add(70, 70, 500, 300)

Sheets("AEX-INDEX").ChartObjects(2).Chart.SeriesCollection.Add Source:=Range("G3:G513")

Sheets("AEX-INDEX").ChartObjects(2).Chart.SeriesCollection(1).Name = "Rendement journalier"

Set PlageX = Range("A2:A513")

Sheets("AEX-INDEX").ChartObjects(2).Chart.SeriesCollection(1).XValues = PlageX

Sheets("AEX-INDEX").ChartObjects(2).Chart.Type = xlColumnClustered

Sheets("AEX-INDEX").ChartObjects(2).Chart.HasTitle = True

Sheets("AEX-INDEX").ChartObjects(2).Chart.ChartTitle.Text = "Index AEX"

End Sub

Sub Macro2 ()

(les noms des autres indices (CAC40, Euronext...) sont inscrits sur la sheet1 de mon fichier excel principal donc dans cette macro2 je place le nom de l'indice présent dans une cellule de la sheet1 dans une variable (indice) et je fais passer cette variable dans le call de la macro1 mais forcément ça marche pas parce que quand ça va revenir sur la macro1, ça va réutiliser les chemins du premier indice et non des indices en question).

Dim indice As String

Dim nbIndices As Integer

Dim cellule As Range

nbIndices = Range("B5").End(xlDown).Row

For Each cellule In Range("B5:B" & nbIndices)

indice = cellule.Value

Call Macro1(indice)

Next cellule

End Sub

MERCI D'AVANCE POUR VOTRE AIDE PRECIEUSE !

Rechercher des sujets similaires à "aide macro call"