Créer une seule macro à partir de 6 macros

Bonjour j'essaie de créer une macro à partir de 6 macro. Je débute tout juste et j'ai essayé la fonction call pour créer cette macro mais rien n'y fait elle ne veut pas s'exécuter.

Merci d'Avance.

Voici le fichier pour mieux comprendre. C'est la fiche 1 que j'essaie de créer en un seul bouton.

Voici les 6 macros que j'ai créer:

Sub LCL()

'

' LCL Macro

' Macro le 04/06/2015 a 10:42

'

' Touche de raccourci du clavier: Ctrl+b

'

Range("A1:A211").Select

Selection.Cut

Sheets.Add After:=ActiveSheet

ActiveSheet.Paste

End Sub

Sub b()

'

' b Macro

' m2 a 11:23

'

' Touche de raccourci du clavier: Ctrl+q

'

Selection.Cut

Sheets("Feuil1").Select

Columns("B:B").Select

ActiveSheet.Paste

End Sub

Sub d()

'

' d Macro

' m3 a 11:24

'

' Touche de raccourci du clavier: Ctrl+s

'

Selection.Cut

ActiveWindow.SmallScroll Down:=21

Sheets("Feuil1").Select

Columns("C:C").Select

ActiveSheet.Paste

End Sub

Sub e()

'

' e Macro

' m4 a 11:26

'

' Touche de raccourci du clavier: Ctrl+f

'

Columns("D:D").Select

Selection.Cut

Sheets("Feuil1").Select

Columns("D:D").Select

Range("D22").Activate

ActiveSheet.Paste

End Sub

Sub f()

'

' f Macro

' m5 a 11:27

'

' Touche de raccourci du clavier: Ctrl+g

'

Selection.Cut

Sheets("Feuil1").Select

Columns("E:E").Select

Range("E22").Activate

ActiveSheet.Paste

ActiveWindow.SmallScroll Down:=-36

End Sub

Sub g()

'

' g Macro

' m6 a 11:28

'

' Touche de raccourci du clavier: Ctrl+h

'

ActiveWindow.SmallScroll Down:=-33

Columns("H:H").Select

Selection.Cut

ActiveWindow.SmallScroll Down:=15

Sheets("Feuil1").Select

ActiveWindow.SmallScroll Down:=-15

Range("G1").Select

ActiveSheet.Paste

End Sub

Sub h()

'

' h Macro

' m6* a 11:29

'

' Touche de raccourci du clavier: Ctrl+j

'

Selection.Cut

Sheets("Feuil1").Select

ActiveWindow.SmallScroll Down:=-51

Columns("F:F").Select

Range("F115").Activate

ActiveSheet.Paste

ActiveWindow.SmallScroll Down:=-114

End Sub

Et la c'est la dernière macro que j'ai essayé en regroupant les macros du dessus:

Sub final()

Call LCL

Call b

Call d

Call e

Call f

Call g

Call h

End Sub

192.xlsm (41.58 Ko)

Bonjour

Si on exécute pas à pas ta macro ‘’final’’, avec la touche F8, on s’aperçoit que les diverses macros s’exécutent successivement. Mais le problème, c’est que tu ne lui dis pas toujours sur quelle feuille les instructions doivent porter.

Elle prend toujours la feuille active. Et si tu ne lui a pas dit d’en sélectionner une autre, le résultat n’est pas celui escompté.

OK ?

Bye !

Une macro est délimitée par

 Sub Nom_macro

et

End Sub

Tu peux regrouper toutes tes macros en une seule en ne conservant que le Sub XX de la première macro et le End sub de la dernière. En suppirmant donc tous les Sub et End sub intermédiaires.

J'ai essayé ta solution ouisansdoute et cela n'as pas fonctionné :/ ... Pourtant ta solution me paraît logique. Lorsque j'enlève Sub le nom des macros est signalé en rouge et un message s'affiche comme quoi ce n'est pas la bonne syntaxe.

Gmb j'ouvre une nouvelle feuille pour faire la macro final je ne comprends pas votre réponse. Si vous pouvez m'éclairer svp dans mon apprentissage d'Excel

Sub LCL()

'

' LCL Macro

' Macro le 04/06/2015 a 10:42

'

' Touche de raccourci du clavier: Ctrl+b

'

Range("A1:A211").Select

Selection.Cut

Sheets.Add After:=ActiveSheet

ActiveSheet.Paste

b()

'

' b Macro

' m2 a 11:23

'

' Touche de raccourci du clavier: Ctrl+q

'

Selection.Cut

Sheets("Feuil1").Select

Columns("B:B").Select

ActiveSheet.Paste

d()

'

' d Macro

' m3 a 11:24

'

' Touche de raccourci du clavier: Ctrl+s

'

Selection.Cut

ActiveWindow.SmallScroll Down:=21

Sheets("Feuil1").Select

Columns("C:C").Select

ActiveSheet.Paste

e()

'

' e Macro

' m4 a 11:26

'

' Touche de raccourci du clavier: Ctrl+f

'

Columns("D:D").Select

Selection.Cut

Sheets("Feuil1").Select

Columns("D:D").Select

Range("D22").Activate

ActiveSheet.Paste

f()

'

' f Macro

' m5 a 11:27

'

' Touche de raccourci du clavier: Ctrl+g

'

Selection.Cut

Sheets("Feuil1").Select

Columns("E:E").Select

Range("E22").Activate

ActiveSheet.Paste

ActiveWindow.SmallScroll Down:=-36

g()

'

' g Macro

' m6 a 11:28

'

' Touche de raccourci du clavier: Ctrl+h

'

ActiveWindow.SmallScroll Down:=-33

Columns("H:H").Select

Selection.Cut

ActiveWindow.SmallScroll Down:=15

Sheets("Feuil1").Select

ActiveWindow.SmallScroll Down:=-15

Range("G1").Select

ActiveSheet.Paste

h()

'

' h Macro

' m6* a 11:29

'

' Touche de raccourci du clavier: Ctrl+j

'

Selection.Cut

Sheets("Feuil1").Select

ActiveWindow.SmallScroll Down:=-51

Columns("F:F").Select

Range("F115").Activate

ActiveSheet.Paste

ActiveWindow.SmallScroll Down:=-114

End Sub

Tu écris :

Gmb j'ouvre une nouvelle feuille pour faire la macro final je ne comprends pas votre réponse.

OK ! Allons-y !

Mais tout d’abord, si tu veux bien, évite de me vouvoyer. Sur le forum on est tous à la même enseigne : jeunes et vieux, grands et petits, maigres et gros, tous inconnus et tous égaux !

D'autant que le tutoiement n’exclut ni le respect ni la courtoisie …

Partons du fichier que tu as joins à ton premier message : ‘’2.xlsm’’

Tu dis partir d’une nouvelle feuille.

Supposons que ce soit la Feuil2. Elle est vierge. On l’active : on est donc sur une feuille vide.

ON clique sur ‘’DEVELOPPEUR’’, dans le bandeau, puis sur le bouton ‘’Macro’’.

Dans la fenêtre qui s’ouvre, on sélectionne la macro ‘’final’’ et on clique sur le bouton ‘’Pas à pas détaillé’’, sur la droite.

La macro ‘’final’’ s’ouvre’’ avec son titre surligné en jaune : cela veut dire qu’elle est arrêtée sur cette ligne.

Clique sur la touche F8 du clavier et le surlignage se déplace sur la ligne suivante : ‘’Call LBL’’

Un instruction surlignée en jaune n’a pas encore été exécutée mais est la prochaine qui va l’être.

Clique à nouveau sur F8 : La macro décroche de son module de départ (sub final) pour aller exécuter la macro LBL. Elle reviendra à l’instruction suivante, ‘’Call b’’ lorsqu’elle aura fini d’éxécuter ‘’LBL’’

Tu peux donc constater pour l’instant qu’elle est arrêtée sur le nom de ‘’ Sub LBL’’

Clique 2 fois sur F8 : elle exécute les 2 premières instructions de la macro LBL qui sont :

    Range("A1:A211").Select
    Selection.Cut

Mais regarde ce qui s’est passé sur ta feuille de départ : la macro a sélectionné et coupé la plage ‘’A1 :A21’’.

Or, cette plage est vide ! Jusqu’à présent, elle n’a trouvé aucune instruction lui demandant d’aller sélectionner une autre feuille et la plage indiquée se réfère par défaut à la feuille active.

Si tu avais écris :

Sheets(‘’COPIE’’) .Range("A1:A211").Cut

Elle aurait coupé la plage indiquée mais dans la feuille ‘’COPIE’’

Pareil si tu avais écris :

Sheets(‘’COPIE’’).select
Range("A1:A211").Cut

Clique une nouvelle fois sur F8

La macro a exécuté l’instruction :

Sheets.Add After:=ActiveSheet

Là, tu peux constater qu’une nouvelle feuille s’est crée, ‘’Feuil3’’, et que c’est maintenant cette feuille qui est active : cela se voit bien à la couleur de son onglet.

En cliquant encore une fois sur F8, la macro exécute :

ActiveSheet.Paste

C’est-à-dire qu’elle colle dans la cellule active de la feuille active (A1 de Feuil3) la plage qu’elle a coupée. Mais qui est vide, donc rien de visible…

Re clique sur F8 et elle exécute :

End Sub

Cette instruction lui indique qu’elle a terminé l’éxécution de LBL mais pas son travail intial qui est toujours la macro ‘’finaL’’. Elle va donc y revenir en allant s’arrêter sur la première instruction qui suit celle où elle a décroché pour aller exécuter LBL.

Elle vient donc sur

Call b

Voilà ! Je m’arrêterai là. J’espère que tu as compris comment tu peux contrôler et corriger le bon déroulement d’une macro pour l’amener à faire exactement ce que tu désires.

OK ?

Bye !

Je ne fais aucune distinction en utilisant le vouvoiement c'est par habitude que je l'utilise. Mais tu as raison le tutoiement est bien meilleur sur ce forum. Ne voit donc pas mon vouvoiement comme un signe de différenciation.

Oui j'ai compris il faut que je respecte le format des feuilles sinon la macro ne s'exécutera pas comme je le souhaite .

Un grand merci

Rechercher des sujets similaires à "creer seule macro partir macros"