Automatiser les macros

Bonjour,

j'ai fait plusieurs macros qui s'executent dans des feuilles differentes

sauf que les resultats dans certaines feuilles dependent das autre

alors il me faut faire une automatisation de mes macros dans un certain ordre

supposons que j'ai

dans la feuille ("synthese") 2 macros: macro1 et macro2

tel que macro1 doit sexecuter avant macro2

puis quand je sorts de cette feuille ,je me retrouve dans ma feuille ("feuil1")

celle ci ayant 3 macros macro_a,macro_b et macro_c

macro _a s'execute puis macro_b enfin macro_c

enfin j'ai ma feuille ("feuil2")

ayant une seule macro

macro_h

est-il paussible de creer une boite de dialogue qui me demande de cliquer sur des boutons

portants les noms de mes macros?

merci de m'aider

Bonsoir,

Ne te prends pas la tête avec une boite de dialogue, tu te fais un seul bouton auquel tu affecte macro 1 par exemple.

A la fin de ta macro1 tu mets call macro2. A la fin de la macro 2, tu marque call macro_a etc ...

Le call te permet d'appeler la macro suivante, ainsi tu as un ordre chronologique dans tes macros.

Cependant, en utilisant cette méthode, fais bien attention d'avoir nommé tes feuilles dans ta macro, car dans le cas contraire, toutes tes macros risques de s'aapliquer à ta feuille en cour !

Cordialement,

James

bonjour voici ce que j'ai apres mes recherches :

Option Explicit

Sub Lance()
Worksheets("Syntèse").Activate
Call macrosynthese 'code qui recupère les oblig de la nvll dispo vers la feuille synthese(1)
Call suprimeligne   'code qui retranche toutes les obligations qui n'ont pas un taux fixe(2)

Worksheets("Feuil1").Activate
Call marcotest 'copie de toutes les oblig a taux fixe de la feuille synthese vers feuil1(3)
Call Prixspot    'calcul du prix spot aujourd'hui(4)

Worksheets("Risque Crédit").Activate
Call spreadDeCredit 'ecart entre le prix spot aujourd'hui et celui a l'emission(5)

Worksheets("Feuil1").Activate
Call valorisation_coupon_Annuel 'code sur la valorisation d'oblig à coupons annuels
Call valo_coupon_trimestriel    'code sur la valorisation d'oblig a coupons trimestriels
Call valo_coupon_semestriels    'code sur la valorisation d'oblig a coupons semestriels
End Sub

mais je me pose une question : je peu ecrire ce code dans nimporte quelle feuille active ??

merci de votre aide

Bonjour,

je peu ecrire ce code dans nimporte quelle feuille active ??

Non, ce code doit être dans un module du classeur actif

Amicalement

Claude

bonjour,

mais je me pose une question : je peu ecrire ce code dans nimporte quelle feuille active ??

Non, ton code doit se trouver dans un module.

Tu n'as pas besoin d'activer des feuilles en principe sauf si par exemple tu dois faire un tri.

Par contre, dans ta macrosynthese, il faut faire référence à ta feuille Synthèse.

Le mieux serait que tu mettes le code macrosynthese par exemple. De là on peut te conseiller

Amicalement

voici le code de ma macro macrosynthese:

Sub macrosynthese()

'copie puis tri des obligs
    Worksheets("Nlle Dispo").Range("A1:I451").Copy Worksheets("Synthèse").Range("A5")
    Range("A5:I455").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=3, Criteria1:="=Oblig", Operator:=xlOr, _
        Criteria2:="=EMTN"
    ActiveWindow.SmallScroll Down:=216

    '..suprimer les lignes de dated'echéance anterieures a la date d'aujourd'hui
    Dim i%
      For i = Range("d65536").End(xlUp).Row To 2 Step -1
        If Cells(i, 8) < Range("a2") And Cells(i, 8) <> "" Then Rows(i).EntireRow.Delete
        Next i

     'efface la la phrase unitile "portefeuille compte proprr" de la cellule H5
     Range("H5").Select
     ActiveCell.FormulaR1C1 = ""
     Range("H51").Select
     Worksheets("Nlle Dispo").Range("A185:I185").Copy Worksheets("Synthèse").Range("A5")

End Sub

voila j'attends vos conseils aussi j'ai pas bien compris ce que Dan essai de me dire :

Par contre, dans ta macrosynthese, il faut faire référence à ta feuille Synthèse.

Le mieux serait que tu mettes le code macrosynthese par exemple. De là on peut te conseiller

merci encore

RE,

Essaie comme ceci :

Sub macrosynthese()
Dim i As Integer
'copie puis tri des obligs
With Worksheets("Synthèse")
    Worksheets("Nlle Dispo").Range("A1:I451").Copy .Range("A5")
    .Activate
    .Range("A5:I5").AutoFilter
    .Range("C5").AutoFilter Field:=3, Criteria1:="=Oblig", Operator:=xlOr, _
        Criteria2:="=EMTN"

'..suprimer les lignes de dated'echéance anterieures a la date d'aujourd'hui
    For i = .Range("d65536").End(xlUp).Row To 2 Step -1
        If .Cells(i, 8) < .Range("a2") And Cells(i, 8) <> "" Then Rows(i).EntireRow.Delete
    Next i

     'efface la la phrase unutile "portefeuille compte proprr" de la cellule H5
    .Range("H5").FormulaR1C1 = ""
Worksheets("Nlle Dispo").Range("A185:I185").Copy .Range("A5")
End With
End Sub

PAr contre, je ne vois pourquoi tu refais une copie des cellules A185:I185 vers la cellule A5 de la feuille synthèse... (instruction en fin de macro)

Amicalement

je refais cette copie car lorsque je lance le filtre de mes Oblig et EMTN j'ai pas le differents titres qui sont a cette ligne du coup je les recopies..

sauf que la tu a sans doute amélioré ma macro synthese mais je sais pas comment comprendre ce qui me reste a faire pour ma macro

Lance

merci

re,

Le but est de supprimer toutes les instructions ACTIVATE dans ta sub LANCE()

Fais un essai pour voir si tes codes fonctionnent correctement.

A te relire

bonjour , de ce qui est de ma macro lance , j'ai

mis la macro lance dans le module 1

et toutes les autres macros dans les modules egalement (j'ai mi une macro par module)

lorsque je lance chacune des macros tout va bien mais lorsque je lance la macro "lance" rien ne va ça commence a tourner et ça s'arrete m'indiquant des erreurs

voici ma macro lance :

Public lance()
    Call temps   'se trouve dans le module 2
    'Call interpolation  'se trouve dans le module 3
    Call forwards   'se trouve dans le module 4
    Call macrosynthese 'se trouve dans le module 5
    Call suprimeligne  'se trouve dans le module 6
    Call copier_synthese_vers_feuil_1 'se trouve dans le module 7
    Call rating_note   'se trouve dans le module 8
    Call Prixspot      'se trouve dans le module 9
    Call calcul_des_spread  'se trouve dans le module 10
    Call calcul_des_spread_2 'se trouve dans le module 10
    Call calcul_spread_trim_2  'se trouve dans le module 10
    Call calcul_des_spreads_sem_1 'se trouve dans le module 10
    Call calcul_des_spreads_sem   'se trouve dans le module 10
    Call calcul_des_spread_1   'se trouve dans le module 10
    Call Prixspot_avec_alpha   'se trouve dans le module 11
    Call valo_coupon_semestriels  'se trouve dans le module 12
    Call valo_coupon_trimestriel 'se trouve dans le module 12
    Call valorisation_coupon_Annuel  'se trouve dans le module 12
    Call calcul_spread_moyen   'se trouve dans le module 13
    Call spread_moyen_par_type 'se trouve dans le module 13
End Sub

de ce qui est de ma macro synthèse je l'ai modifier elle devient :

Public Sub macrosynthese()

    Dim k As Long, j As Long, lastrow As Long
    Dim ws_nd As Worksheet
    Dim ws_S As Worksheet
    Set ws_nd = Worksheets("Nlle Dispo")
    Set ws_S = Worksheets("Synthèse")
    lastrow = ws_nd.Cells(Rows.Count, 3).End(xlUp).Row
    j = 0
    For k = 0 To lastrow
    If ws_nd.Cells(k + 3, "C").Text = "Oblig" _
    Or ws_nd.Cells(k + 3, "C").Text = "EMTN" Then
        ws_nd.Range("A" & k + 3 & ":I" & k + 3).Copy ws_S.Range("A" & j + 6)
        j = j + 1
    End If
    Next

    '..suprimer les lignes de dated'echéance anterieures a la date d'aujourd'hui
    Dim i%
      For i = Range("d65536").End(xlUp).Row To 2 Step -1
        If Worksheets("Synthèse").Cells(i, 8) < Worksheets("Synthèse").Range("a2") And _
        Worksheets("Synthèse").Cells(i, 8) <> "" Then Worksheets("Synthèse").Rows(i).EntireRow.Delete
        Next i

End Sub

pouvez vous me dire pourquoi ma macro lance plante??

merci

re,

tu commences mal là...

Cela doit être

Public SUB lance()

et pas

Public lance()

(j'ai mi une macro par module)

Pas besoin, tu peux mettre toutes tes macros dans un seul module.

Amicalement

bonjour ,

j'ai rctifié l'erreur

public sub lance et non public lance 

mais lorsque je lance la macro "lance " les macro ci dessous s'executent :

    Call temps 
    Call forwards  
    Call macrosynthese
    Call suprimeligne  
    Call copier_synthese_vers_feuil_1 
    Call rating_note   

puis tout s'arrete je n'arrive pas à comprendre pourquoi

merci de votre secours

re,

puis tout s'arrete

Que veux-tu dire ? Tu as une erreur ??

Ce ne serait pas plus simple de mettre ton fichier en ligne ??

Rechercher des sujets similaires à "automatiser macros"