Bjr le forum,
j'ai une cinquantaine d'onglet dans mon fichier excel avec du code propre à chaque page. Un clic sur un 'command button1' lance le code qui s'excecute en 10 secondes en moyenne...donc
avant pour excecuter le code, il fallait cliquer sur le command button 1 sur chacune des feuilles sauf que maintenant y en a 50.
Comment faire pour créer une macro qui clic automatiquement sur les 50 feuilles les unes a la suite des autres?
n'y aura t'il pas un bourrage mémoire?
PS: l'enregistreur de macro ne marche pas ce coût là...
Merci d'avance.
Salut Jimrcl, faut-il absolument que le code s'exécute dans les feuilles les unes après les autres ?
Si non alors
essaye le code suivant :
Application.ScreenUpdating=False
module1.NomProcédure1
module1.NomProcédure2 'biensûr remplacer module1 par le nom correspondant
NomProcédurei correspondent aux Sub des CommandBuuton des ongles i respectivement.
PS si tes procédures ont des arguments ne les oublie pas lors de l'appel
je peux pas envoyer le fichier ... trop gros...
mais en faisant une boucle comme ci dessous:
Code:
Private Sub CommandButton2_Click()
Dim i As Integer
For i = 1 To 94
Worksheets('i').Activate
remplir
suppr_colonne_vide
ajoutcoletabl
num_col_A
mise_en_forme
Next
End Sub
çà plante en mettant 'erreur de compilation'
'sub ou function non défini'
c'est une histoire de fonction private ? ? ?
toutes mes fonctions sont dans des worksheets, pas dans des modules
et parfois j'ai mis des private sub plutôt que sub, je sais pas pourquoi mais je l'ai fait... inch:
help please
Jimrcl, je te joint un exemple de structure en cascade, le principe résulte sur la création d'un deuxième bouton sur la première feuille qui lance les autres en cascade et tu gardes du coup la mossiblité de les lancer un à un de façon arbitraire si besoin. On passe par un module, donc attention au placement du code et à la déclaration des variables au besoin.
précision :
Le principe serait de déplacer le code des boutons vers un module central, les private ButtonClick ne faisant qu'appeler la macro correpondante.
Précision:
j'ai 95 feuilles toutes différentes
et dans les worksheets de chaque feuille j'ai 5 macros, propres à chaque feuille.
donc au total 5*95 'sub ou private sub' toutes différentes.
puis j'ai 1 bouton par feuille pour lancer les 5 macros correspondantes.
Question:
Comment cliquer sur les 95 boutons les uns à la suite des autres?
Merci.
Jimrcl, vois si le principre de cascade te convient, le mieux alors est comme précisé de tranférer les commandes Private qui concernent l'action sur le bouton des feuilles dans des procédures du Module principal avec des appels comme dans l'exemple.
C'est pourquoi je disais attention aux variables car certaines qui peuvent être initialiées ou utilisées dans d'autres Private d'une feuille devront être alors déclarées Public ... Dans le Module !
Bon, Ok j'ai une autre piste, ce que tu pourrais faire c'est d'ajouter à chaque feuille une procédure Private Sub Worksheet_Activate() dans laquelle tu appellerai les macros private de la feuille concernée que tu veux...
Bien sur si tu as déjà une WSActivate ou si tu n'as pas envie qu'en activant la feuille tout se déclenche, puisque ça reviendra à cliquer sur le bouton directement, il faut créer une variable drapeau (Booléanne) qui ne lencera cet appel que si l'ordre a été donné par le bouton run total...
Merci pour ta réponse bricofire mais çà représente trop de boulot pour que je fasse çà.
je préfère encore cliquer sur les boutons un par un.
J'ai reposté un message pour savoir si on pouvait simuler un clic sur un bouton et j'espère avoir une réponse magique, j'y crois