• Initiateur de la discussion Initiateur de la discussion kytsune
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

K

kytsune

Guest
Voici mon problème:je dois rajouter de nouvelles macros à une ancienne macro.
Dans le classeur, j'ai déjà 8 macros. Je veux en créer une nouvelle pour la mettre à la suite des autres et qu'elles fonctionnent en lien. Quand j'ouvre la première macro avec modifier, celle-ci contient les 6 premières séparées de sub et end. Quand je créer ma nouvelle macro, où doit je coller son code pour qu'elle marche en lien avec la première et que doit je rajouter ou enlever dans ce code?
Merci de me répondre de façon pas trop compliquée car je ne m'y connais pas trop en macros. 😉
 
Bonjour Kytsune, le forum,

Sauf (je pense) des cas très particuliers de macros très compliquées, il n'y a pas spécialement d'ordre de macro à respecter.

Si dans ton classeur tu as déjà 8 macros et que tu veux en rajouter une, tu peux le faire dans un de tes modules existant ou alors dans un nouveau module.

Comme ta nouvelle macro commence par Sub et se termine par End Sub, Excel comprendra qu'il s'agit d'une nouvelle macro.
Et si tu veux que cette macro soit appelée par une de tes 8 macros existantes, il te suffit, dans le code de ta macro existante, de mettre le nom de ta nouvelle macro.

Ex : ta nouvelle macro s'appelle TOTO, le début de ta macro sera donc Sub TOTO ().
Si tu veux exécuter cette macro à partir de l'une de tes 'anciennes' macro, il te suffit à un moment donné d'y inscrire TOTO. Il y aura alors un 'basculement' et ton ancienne macro ira exécuter le code de ta nouvelle macro pour ensuite retourner à l'ancienne.

Voilà, espérant m'être fait comprendre... :ermm:

Ciao ciao !! 😉
 
Bonjour Kytsune,

Je vais faire une exception à la règle car en principe je ne réponds pas aux posts des gens qui ne savent pas dire bonjour :evil:

Ceci étant, comme tu dis merci, 😉 on va faire avec

pour ton prob, voici la soluce :

sub test1()
...
...
end sub

sub test2()
...
...
end sub

tu peux écrire une sub de récap :

sub principale()
test1
test2
end sub

en lancant ta macro principale, c'est elle qui va exécuter dans l'ordre la macro test1 puis test2

et voili ...
 
Rebonjour!
J'ai essayer ta solution, avec la macro principale dans laquelle j'ai copié tout les codes des anciennes macros plus celui de ma nouvelle macro. J'ai enlevé les sub et end de toutes les macros sauf de la principale et j'ai laissé tel quel le reste des codes.
Quand je fais exécuter la macro principale, ça me dit que sub ou function n'est pas défini et ca me surligne le titre de ma nouvelle macro. Alors qu'est ce que je ne fais pas bien?
Aurais tu une nouvelle idée? Merci 😉
 
Bonjour
Je ne peux pas joindre le fichier, celui-ci étant confidentiel, voici donc les macros.
La macro quartile est la nouvelle macro.
Les macros nouvelle étude permettent l'insertion d'une, deux,etc...lignes dans une autre feuille excel, permettant ainsi l'insertion de nouvelles données. Le quartile doit se modifier en fonction de ces nouvelles données. C'est pour cela que je souhaite faire une macro principale reprenant les macros nouvelle étude, quartile.
Je ne suis pas sure d'être claire mais je ne m'y connais pas trop, mon vocabulaire excel est donc limité.
Merci pour votre aide.

Sub quartiles()
'
' quartiles Macro
' Macro enregistrée le 24/05/2006 par X
'

'
ActiveCell.FormulaR1C1 = '1er quartile'
Range('C86').Select
ActiveCell.FormulaR1C1 = '3ème quartile'
Range('C87').Select
ActiveCell.FormulaR1C1 = 'quartile 0 = note mini'
Range('C88').Select
ActiveCell.FormulaR1C1 = 'quartile 4 = note maxi'
Range('C89').Select
ActiveCell.FormulaR1C1 = 'médiane'
Range('E85').Select
ActiveCell.FormulaR1C1 = '=QUARTILE('bd1'!R[-78]C[-4]:R[1762]C[-4],1)'
Range('E86').Select
ActiveCell.FormulaR1C1 = '=QUARTILE('bd1'!R[-79]C[-4]:R[1761]C[-4],3)'
Range('E87').Select
ActiveCell.FormulaR1C1 = '=QUARTILE('bd1'!R[-80]C[-4]:R[1760]C[-4],0)'
Range('E88').Select
ActiveCell.FormulaR1C1 = '=QUARTILE('bd1'!R[-81]C[-4]:R[1759]C[-4],4)'
Range('E89').Select
ActiveCell.FormulaR1C1 = '=MEDIAN('bd1'!R[-82]C[-4]:R[1758]C[-4])'
End Sub

Sub nouvelleétude1()
'
' nouvelleétude1 Macro
' Macro enregistrée le 24/03/06 par X
'

'
Sheets('données').Select
ActiveWindow.SmallScroll Down:=-33
Rows('6:6').Select
Selection.Insert Shift:=xlDown
ActiveWindow.SmallScroll ToRight:=30
Range('AR7:BA7').Select
Selection.AutoFill Destination:=Range('AR6:BA7'), Type:=xlFillDefault
Range('AR6:BA7').Select
Sheets('bd1').Select
Rows('8:8').Select
Selection.Insert Shift:=xlDown
Range('A9:R9').Select
Selection.AutoFill Destination:=Range('A8:R9'), Type:=xlFillDefault
Range('A8:R9').Select
Range('A1').Select
Sheets('données').Select
ActiveWindow.ScrollColumn = 1
Range('A6').Select
End Sub
Sub nouvelleétude2()
'
' nouvelleétude2 Macro
' Macro enregistrée le 24/03/06 par X
'

'
Sheets('données').Select
Rows('6:7').Select
Selection.Insert Shift:=xlDown
ActiveWindow.SmallScroll ToRight:=30
Range('AR8:BA8').Select
Selection.AutoFill Destination:=Range('AR6:BA8'), Type:=xlFillDefault
Range('AR6:BA8').Select
ActiveWindow.LargeScroll ToRight:=-3
Sheets('bd1').Select
Rows('7:7').RowHeight = 11.25
Rows('8:9').Select
Selection.Insert Shift:=xlDown
Range('A10:R10').Select
Selection.AutoFill Destination:=Range('A8:R10'), Type:=xlFillDefault
Range('A8:R10').Select
Range('A1').Select
Sheets('données').Select
Range('A6').Select
End Sub
Sub nouvelleétude3()
'
' nouvelleétude3 Macro
' Macro enregistrée le 24/03/06 par X
'

'
Sheets('données').Select
Rows('6:8').Select
Selection.Insert Shift:=xlDown
ActiveWindow.SmallScroll ToRight:=30
Range('AR9:BA9').Select
Selection.AutoFill Destination:=Range('AR6:BA9'), Type:=xlFillDefault
Range('AR6:BA9').Select
ActiveWindow.LargeScroll ToRight:=-3
Range('A6').Select
Sheets('bd1').Select
Rows('8:10').Select
Selection.Insert Shift:=xlDown
Range('A11:R11').Select
Selection.AutoFill Destination:=Range('A8:R11'), Type:=xlFillDefault
Range('A8:R11').Select
Range('A1').Select
Sheets('données').Select
End Sub
Sub nouvelleétude4()
'
' nouvelleétude4 Macro
' Macro enregistrée le 24/03/06 par X
'

'
Sheets('données').Select
Rows('6:9').Select
Selection.Insert Shift:=xlDown
ActiveWindow.SmallScroll ToRight:=30
Range('AR10:BA10').Select
Selection.AutoFill Destination:=Range('AR6:BA10'), Type:=xlFillDefault
Range('AR6:BA10').Select
ActiveWindow.LargeScroll ToRight:=-3
Range('A1').Select
Sheets('bd1').Select
Rows('8:11').Select
Selection.Insert Shift:=xlDown
Range('A12:R12').Select
Selection.AutoFill Destination:=Range('A8:R12'), Type:=xlFillDefault
Range('A8:R12').Select
Range('A1').Select
Sheets('données').Select
Range('A6').Select
End Sub
Sub nouvelleétude5()
'
' nouvelleétude5 Macro
' Macro enregistrée le 24/03/06 par X
'

'
Sheets('données').Select
Rows('6:10').Select
Selection.Insert Shift:=xlDown
ActiveWindow.SmallScroll ToRight:=32
Range('AR11').Select
ActiveCell.FormulaR1C1 = '=IF(ISERROR(RC[-11]/RC7),'''',RC[-11]/RC7)'
Range('AR11:BA11').Select
Selection.AutoFill Destination:=Range('AR6:BA11'), Type:=xlFillDefault
Range('AR6:BA11').Select
ActiveWindow.LargeScroll ToRight:=-3
Range('I28').Select
Sheets('bd1').Select
Rows('8:12').Select
Selection.Insert Shift:=xlDown
Range('A13:R13').Select
Selection.AutoFill Destination:=Range('A8:R13'), Type:=xlFillDefault
Range('A8:R13').Select
Range('A1').Select
Sheets('données').Select
Range('A6').Select
End Sub
Sub nouvelleétude6()
'
' nouvelleétude6 Macro
' Macro enregistrée le 24/03/06 par X
'

'
Sheets('données').Select
Rows('6:11').Select
Selection.Insert Shift:=xlDown
ActiveWindow.SmallScroll ToRight:=30
Range('AR12:BA12').Select
Selection.AutoFill Destination:=Range('AR6:BA12'), Type:=xlFillDefault
Range('AR6:BA12').Select
ActiveWindow.LargeScroll ToRight:=-3
Range('A6').Select
Sheets('bd1').Select
Rows('8:13').Select
Selection.Insert Shift:=xlDown
Range('A14:R14').Select
Selection.AutoFill Destination:=Range('A8:R14'), Type:=xlFillDefault
Range('A8:R14').Select
Range('A1').Select
Sheets('données').Select
Range('A6').Select
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
134
Affichages
5 K
Réponses
4
Affichages
334
Retour