Problème de Macros
Bonjour tt le monde, je suis nouveau dans le forum alors j'espère avoir votre aide c'est urgent !!
Mon problème est que j'ai créé deux macros sur le mm onglet avec bouton affecté à chacune des deux, par contre quand je clique sur l'une des deux ça me montre aussi le résultat de la 2ème.
En gros, je veux que ça soit sur le mm onglet et quand je clique sur un bouton, ça m'ouvre uniquement la macro concernée.
D'avance merci
Bonjour,
Sans illustration (fichier), on ne voit pas très bien ce que tu veux dire !
Désolé voici le code des 2 macros :
Sub Macro1()
'
' Macro1 Macro
'
'
Range("D11").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "25863"
Range("D13").Select
ActiveCell.FormulaR1C1 = "65321"
Range("D15").Select
ActiveCell.FormulaR1C1 = "48753"
Range("D11:D25").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("D17").Select
ActiveCell.FormulaR1C1 = "5623"
Range("D17").Select
Selection.AutoFill Destination:=Range("D17:D20"), Type:=xlFillDefault
Range("D17:D20").Select
Range("D22").Select
ActiveCell.FormulaR1C1 = "54873"
Range("D24").Select
ActiveCell.FormulaR1C1 = "12453"
Range("D26").Select
ActiveCell.FormulaR1C1 = "78421"
Range("D8:D28").Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("D9").Select
ActiveCell.FormulaR1C1 = "=SUM(R[2]C:R[17]C)"
Range("E11").Select
ActiveCell.FormulaR1C1 = "35421"
Range("D11:E11").Select
Selection.AutoFill Destination:=Range("D11:O11"), Type:=xlFillDefault
Range("D11:O11").Select
Range("E11:O11").Select
Range("O11").Activate
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("E13").Select
ActiveCell.FormulaR1C1 = "75623"
Range("D8:O104").Select
With Selection
.HorizontalAlignment = xlGeneral
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("D13:E13").Select
Selection.AutoFill Destination:=Range("D13:O13"), Type:=xlFillDefault
Range("D13:O13").Select
Range("E15").Select
ActiveCell.FormulaR1C1 = "54321"
Range("D15:E15").Select
Selection.AutoFill Destination:=Range("D15:O15"), Type:=xlFillDefault
Range("D15:O15").Select
Range("E17").Select
ActiveCell.FormulaR1C1 = "6257"
Range("D17:E17").Select
Selection.AutoFill Destination:=Range("D17:O17"), Type:=xlFillDefault
Range("D17:O17").Select
Range("E18").Select
ActiveCell.FormulaR1C1 = "7521"
Range("D18:E18").Select
Selection.AutoFill Destination:=Range("D18:O18"), Type:=xlFillDefault
Range("D18:O18").Select
Selection.AutoFill Destination:=Range("D18:O20"), Type:=xlFillDefault
Range("D18:O20").Select
Range("E22").Select
ActiveCell.FormulaR1C1 = "65874"
Range("D22:E22").Select
Selection.AutoFill Destination:=Range("D22:O22"), Type:=xlFillDefault
Range("D22:O22").Select
Range("E24").Select
ActiveCell.FormulaR1C1 = "14853"
Range("D24:E24").Select
Selection.AutoFill Destination:=Range("D24:O24"), Type:=xlFillDefault
Range("D24:O24").Select
Range("E26").Select
ActiveCell.FormulaR1C1 = "82154"
Range("D26:E26").Select
Selection.AutoFill Destination:=Range("D26:O26"), Type:=xlFillDefault
Range("D26:O26").Select
Range("D9").Select
Selection.AutoFill Destination:=Range("D9:O9"), Type:=xlFillDefault
Range("D9:O9").Select
Range("P9").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"
Range("P9").Select
Selection.AutoFill Destination:=Range("P9:P26"), Type:=xlFillDefault
Range("P9:P26").Select
Range("P10").Select
Selection.ClearContents
Range("P12").Select
Selection.ClearContents
Range("P14").Select
Selection.ClearContents
Range("P16").Select
Selection.ClearContents
Range("P21").Select
Selection.ClearContents
Range("P23").Select
Selection.ClearContents
Range("P25").Select
Selection.ClearContents
Range("D29").Select
ActiveWindow.SmallScroll Down:=-24
Range("F4").Select
ActiveWindow.SmallScroll Down:=-21
End Sub
Sub Macro2()
'
' Macro2 Macro
'
'
ActiveCell.FormulaR1C1 = "=SUM(R[2]C:R[15]C)"
Range("D28").Select
Selection.AutoFill Destination:=Range("D28:O28"), Type:=xlFillDefault
Range("D28:O28").Select
Range("P28").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-12]:RC[-1])"
Range("D30").Select
ActiveCell.FormulaR1C1 = "444,333"
Range("E30").Select
ActiveCell.FormulaR1C1 = "555,444"
Range("D30:E30").Select
Selection.AutoFill Destination:=Range("D30:O30"), Type:=xlFillDefault
Range("D30:O30").Select
Range("D32").Select
ActiveCell.FormulaR1C1 = "222,111"
Range("D34").Select
ActiveCell.FormulaR1C1 = "11222"
Range("D35").Select
ActiveCell.FormulaR1C1 = "11223"
Range("D36").Select
ActiveCell.FormulaR1C1 = "11224"
Range("D37").Select
ActiveCell.FormulaR1C1 = "11225"
Range("D40").Select
ActiveCell.FormulaR1C1 = "55444"
Range("D41").Select
ActiveCell.FormulaR1C1 = ""
Range("D42").Select
ActiveCell.FormulaR1C1 = "44555"
Range("D32").Select
Selection.AutoFill Destination:=Range("D32:O32"), Type:=xlFillDefault
Range("D32:O32").Select
Range("D34").Select
Selection.AutoFill Destination:=Range("D34:O34"), Type:=xlFillDefault
Range("D34:O34").Select
Range("D35:D42").Select
Selection.AutoFill Destination:=Range("D35:O42"), Type:=xlFillDefault
Range("D35:O42").Select
Range("P28").Select
Selection.AutoFill Destination:=Range("P28:P42"), Type:=xlFillDefault
Range("P28:P42").Select
Range("P29").Select
Selection.ClearContents
Range("P31").Select
Selection.ClearContents
Range("P33").Select
Selection.ClearContents
Range("P38:P39").Select
Selection.ClearContents
Range("P41").Select
Selection.ClearContents
Range("Q36").Select
ActiveWindow.SmallScroll Down:=-24
End Sub
Macros enregistrées !
C'est un cauchemar !
Si tu peux être clair de ce que t'as besoin de savoir, ça serait génial !!!
Déjà une macro enregistrée, c'est par définition pénible à lire, car truffée d'au moins 50% de code inutile...
La donner à lire : la moindre des choses est d'en coller une copie provenant du Module et le mettre sous balises Code : bouton </>. Ce n'est pas la panacée mais c'est déjà mieux.
Il est sans doute encore mieux de la donner à lire dans son fichier, on la lira alors dans le module et on pourra voir l'illustration de ce qu'elle fait. On peut également ajouter ce qu'on veut faire, ce qui permettra d'éviter de la lire et d'en écrire directement une qui fera ce qu'on souhaite en beaucoup moins de code et plus vite...
Cordialement.
D'abord ce ne sont pas les mêmes macros, on va encore se perdre en conjectures...
Si ça peut t'inspirer, voilà la première de ton fichier, un peu expurgée :
Sub Macro1()
With Worksheets("CA")
.Range("C7") = "123456"
.Range("D7") = "234567"
.Range("C7:D7").AutoFill .Range("C7:N7"), xlFillDefault
.Range("C9") = "456789"
.Range("D9") = "567894"
.Range("C9:D9").AutoFill .Range("C9:N9"), xlFillDefault
.Range("C11") = "789123"
.Range("D11") = "894123"
.Range("C11:D11").AutoFill .Range("C11:N11"), xlFillDefault
.Range("C13") = "589632"
.Range("C13").AutoFill .Range("C13:N13"), xlFillDefault
.Range("C5").Formula = "=SUM(C7:C13)"
.Range("C5").AutoFill .Range("C5:N5"), xlFillDefault
.Range("O5").Formula = "=SUM(C5:N5)"
.Range("O5").Copy
.Range("O7,O9,O11,O13").PasteSpecial xlPasteFormulas
.Range("N5:N14").Copy
.Range("O5:O14").PasteSpecial xlPasteFormats
.Range("O4:O14").BorderAround xlContinuous, xlThin
End With
End SubJe n'oserais vraiment pas dire tout de même que c'est ainsi qu'il faut l'écrire, car ce type de macro ne sert à rien et le mieux est de ne pas l'écrire du tout...
S'il s'agit d'apprêter un tableau, on le fait, on le met en forme, on place les formules... c'est rapidement fait. Et ça se fait une fois !
S'il s'agissait de générer un tableau type à de multiples exemplaires, encore faudrait-il voir le contexte du projet, pourquoi pas une macro ? Mais garnir de chiffres arbitraires le tableau n'a pas de sens, et si on le génère, c'est alors en totalité, à partir de la feuille vierge... et avec une macro de ce type on est loin du compte alors.
Bref, je considère qu'il s'agit d'un amusement, à mon avis sans intérêt. La seconde est du même tonneau, pas la peine de s'y attarder. Donc amuse toi bien !
Quant au problème soulevé au départ, les deux macros opérant dans des zones distinctes, sans aucun recoupement, il n'a pas d'existence !