Aide Macro (Call)

Y compris Power BI, Power Query et toute autre question en lien avec Excel
V
VLTN23
Nouveau venu
Nouveau venu
Messages : 1
Inscrit le : 13 novembre 2019
Version d'Excel : 2016

Message par VLTN23 » 13 novembre 2019, 23:40

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. :oops:
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 ! :P
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message