Comment automatiquement lancer une macro apres une autre?
Bonjour
J'ai ici 2 macros,
J'aimerais faire de sorte qu'en cliquant sur un bouton ca genere la premiere macro puis la 2eme...
Y a t-il moyen de faire ca? ou bien de faire appel a la 2eme macro apres que la 1ere soit terminée ou qqchose du genre
Voici le code
Sub getquotes()
Dim ws As Worksheet
Dim rngTkr As Range
Dim strTkr As String
Dim c As Range
Set ws = Sheet1
Dim strFld As String
e
Dim rngTkr2 As Range
Dim d As Range
Range("heud").ClearContents
With ws
Set rngTkr = .Range("A5: A1500").SpecialCells(xlCellTypeConstants) ' ticker range
i = 1
For Each c In rngTkr
strTkr = """" & c.Value & " Equity" & """"
strFld = """" & "PX LAST" & """"
.Range("A1").Offset(4, i + 1).Value = "=BDH(" & strTkr & "," & strFld & ",B1, B2)"
.Range("A1").Offset(3, i + 1).Value = c.Value
i = i + 2
Next
End With
End Sub
Sub copydata()
Dim lngCounter As Long
Dim lngMax As Long
Dim lngCol As Long
Dim wksTwo As Worksheet
Dim rngTkr As Range
Dim c As Range
'copier de la sheet1 a la sheet2, on copie en valeurs
Set wksTwo = Worksheets("Sheet2")
wksTwo.Cells.ClearContents
Worksheets("Sheet3").Cells.ClearContents
Worksheets("Sheet4").Cells.ClearContents
Worksheets("Sheet1").Range("zoneselect").Copy
wksTwo.Range("B1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
' On enleve les blancs entre la sheet 2 à la sheet3
wksTwo.Range("A1:BB1").Copy Sheets("Sheet3").Range("B1")
Sheets("Sheet3").Range("B1").CurrentRegion.SpecialCells(xlCellTypeBlanks).Delete shift:=xlToLeft
Worksheets("Sheet3").Select
Range("A1:BB1").Select
Selection.Cut
Sheets("Sheet3").Select
Range("B1").Select
ActiveSheet.Paste
Selection.SpecialCells(xlCellTypeBlanks).Select
Application.CutCopyMode = False
Selection.Delete shift:=xlToLeft
Dim datStart As Long
Dim datEnd As Long
Dim lngRow As Long
datStart = Range("datedebut")
datEnd = Range("datefin")
lngRow = 2
For lngCounter = datStart To datEnd
With Worksheets("Sheet3").Cells(lngRow, "A")
If (WorksheetFunction.Weekday(CDate(lngCounter), 1) < 7) And (WorksheetFunction.Weekday(CDate(lngCounter), 1) > 1) Then
.Value = CDate(lngCounter)
lngRow = lngRow + 1
End If
End With
Next lngCounter
LgDep = 2 ' Ligne de départ du tableau dans la page Sheet2
ClDep = 2 ' Colonne de départ du tableau dans la page Sheet2
With Sheets("Sheet2")
ClFin = .Cells(LgDep, Columns.Count).End(xlToLeft).Column
LgFin = .Range(.Cells(1, ClDep), .Cells(1, ClFin)).EntireColumn.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
End With
Nblg = Range("A" & Rows.Count).End(xlUp).Row
For i = ClDep To ClFin Step 2
With Range(Cells(2, 2 + (i - ClDep) / 2), Cells(Nblg, 2 + (i - ClDep) / 2))
.Formula = "=VLOOKUP(RC1,Sheet2!R" & LgDep & "C" & i & ":R" & Nblg & "C" & i + 1 & ",2,TRUE)"
End With
Next i
'FIN TEST VLOOOKUP FORMULE EXCEL
Cells.Select
Selection.Copy
Sheets("Sheet4").Select
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Range("A1").Select
End SubMerci d'avance!!
r
Bonjour,
Alors soit tu fais une procédure propre à ton bouton qui appelle les deux macro l'une après l'autre.
Sub Bouton_Click ()
call getquotes
call copydata
end subSoit tu appelles la 2ème à la fin de la 1ère avant le End Sub, mais cela signifie que la 2ème se lancera tout le temps après la 1ère même si tu l'appelles la fonction getquotes à partir d'un autre bouton.
Sub getquotes()
'traitement de la macro
Call copydata
end subAprès si ces deux macros sont TOUJOURS exécutées l'une après l'autre, pourquoi faire 2 macros et pas une seule ?
Cordialement,
Parfait merci beaucoup!!
Je lance dans la foulee une 2eme question
je vous remercie!!!