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?
Bon.. j'ai réussi à reproduire ton pb...
- Où se trouve tes Sub ? (dans un module, dans un objet worsheet ..)
- Où se trouve ta Sub principale (celle qui appelle les autres) ?
Le souci apparait lorsque tes sub (comme suprimeligne) sont placés dans un élément worsheet (ou FEUIL1..)
En fait, j'ai résolu le pb en déplaçant ton code suprimeligne() dans un module ..
Pas besoin de boîte de dialogue.
Dans l'éditeur VB, tu vas modifier un tout petit peu toutes tes macros pour être tranquille. Par défaut, elles sont de la forme Sub Macro_a() ...
Tu mets Public devant pour obtenir
Public Sub Macro_a()
Ensuite, tu écris ta propre macro qui lancera les macros dans l'ordre que tu veux :
Public Sub MaMacro()
Call Macro_1()
Call Macro_2()
Call Macro_a()
Call Macro_b()
Call Macro_c()
End sub
Tu n'auras plus qu'à lancer cette macro dans ton classeur et attendre que tout s'effectue.
Public Sub MaMacro()
Call macrosynthese
Call suprimeligne
Call marcotest
Call Prixspot
Call spreadDeCredit
Call valo_annuel
Call valo_coupon_trimestriel
Call valo_coupon_semestriels
End Sub
mais je remarque une difference entre ce qu'a ecrit Molenn et moi dans les noms de mes macros je n'arrive pas a mettre "()" (les parentheses
et lorsque je la lance j'ai une erreur ici:
Call macrosynthese
erreur de compilation Sub ou fonction non defini..
1 - en effet, les parenthèses ne s'écrivent pas sauf si tu as indiqués des arguments (paramètres) à ton sub
exemple:
Sub Essai(ma_variable as string)
...
end sub
et quand tu l'appelles: call Essai(la_variable_a_passer)
2 - Pour ton souci : "Sub ou fonction non defini.. " c'est que tu as du faire une faute en recopiant le nom de ta macro. Vérifie son orthographe.
- Tes macros se trouvent t'elles dans le même classeur ?
- Est-ce que tu peux lancer ta macro séparément ?
- Est-ce la seule qui bloque ou les autres aussi ? (mets celle la en commentaire et essayes de voir si les autres se lancent bien)/
- As-tu essayé de renomer cette sub.. (juste au cas ou.. on ne sait jamais ^^ )
* oui mes macros sont dans le meme classeur
*mes macros se lance bien separement
*toutes les macros bloquent
j'ai pas renommé sub ...
j'ai passé macrosynthese en commentaire puis la macro suivante a bloqué et ainsi de suite..
re,
je cherche dans tous les sens mais je n'arrive pas à reproduire ton problème.
Comment son déclaré tes SUB ?
Sub nomduSub()
'..
End sub
Est-ce que tu peux aussi essayer ce code ?
Sub test()
Run "macrosynthese "
End Sub
Eventuellement, peux tu nous mettre à disposition un exemple de ton code (avec tes sub) ?
(Tu peux mettre le fichier sur le site ci-joint.fr et coller l'URL ici)
Public Sub suprimeligne()
Dim numero As Long
Dim ws_mc As Worksheet
Dim ws_sy As Worksheet
Dim i_mc As Long
Dim i_sy As Long
Dim nblig_mc As Long
Dim nblig_sy As Long
Set ws_mc = Worksheets("MC")
Set ws_sy = Worksheets("Synthèse")
nblig_mc = ws_mc.Cells(Rows.Count, 7).End(xlUp).Row
nblig_sy = ws_sy.Cells(Rows.Count, 1).End(xlUp).Row
For i_sy = nblig_sy To 1 Step -1
If ws_sy.Cells(i_sy, 3).Text Like "*EMTN*" Or _
ws_sy.Cells(i_sy, 3).Text Like "*Oblig*" Then
numero = ws_sy.Cells(i_sy, 1).Value
For i_mc = 1 To nblig_mc
If numero = ws_mc.Cells(i_mc, 7).Value Then
If ws_mc.Cells(i_mc, 27).Text <> "TF- Post" Then
ws_sy.Rows(i_sy).Delete
End If
Exit For
End If
Next
End If
Next
End Sub