VBA - Relier 2 actions sur 1 bouton
Bonjour à tous,
Je débute dans Excel VBA pour mon travail. J'ai vraiment besoin de votre aide car je dois rendre mon fichier dans quelques jours...
Voilà ce que je dois faire : Créer un bouton dans ma feuille "Formulaire" où j'inscrit les contrats (nom du chef de service, type de contrat, nom du salarié, son adresse, heures effectuées etc). J'ai nommée le bouton : VALIDER. (fait)
Les actions à relier à ce bouton : je souhaite "Valider" la feuille en la dupliquant et en la renommant par le nom du salarié:
Sub Validation()
Sheets("Formulaire").Select
Sheets("Formulaire").Copy After:=Sheets(ThisWorkbook.Sheets.Count)
ActiveSheet.Name = Range("B9")
End Sub
Revenir directement au Formulaire de base
ET SIMULTANEMENT : effacer le contenu de certaines cellules de ma feuille "Formulaire" (nom du salarié ..) pour la remplir à nouveau par un autre contrat
Sub effacer()
Worksheets("Formulaire").Range("Sem1,Sem2,Sem3,Sem4,Delta2").ClearContents
Worksheets("Formulaire").Range("B3,B7,B9,B11:B13,B15,B17,B21,B25,B29:B31,B34,B35,B37,B42,B44").ClearContents
End Sub
Voilà, donc j'ai réussie en créant 2 boutons différents avec les codes que je viens de vous citer, mais je ne trouve pas le code pour que toutes ces actions se réalisent en appuyant uniquement sur le bouton "VALIDER"
Pouvez-vous m'aidez ?? (J'espère que je me suis bien expliquée..)
Merci à vous
julie
Bonjour,
Faire une seule super macro qui va déclencher par callsuccessivement chacune des actions ... sauf erreur d ema part, je vois cela assez simplement.
Bonjour
solution assez simple
créer une sub et faire un appel successivement à tes deux fonctions
Sub valider()
Validation
effacer
End Subpuis attribuer au bouton la nouvelle macro créée
Fred
Merci pour vos réponses !
J'ai testé un code mais ça ne marche pas, vous en pensez quoi ?
Sub valider()
Sheets("Formulaire").Select
Sheets("Formulaire").Copy After:=Sheets(ThisWorkbook.Sheets.Count)
End Sub
Sub effacer()
Worksheets("Formulaire").Range("Sem1,Sem2,Sem3,Sem4,Delta2").ClearContents
Worksheets("Formulaire").Range("B3,B7,B9,B11:B13,B15,B17,B21,B25,B29:B31,B34,B35,B37,B42,B44").ClearContents
End Sub
Sans un bout de fihier , difficile de répondre efficacement.
Que contiennent Sem1 and Co ?
Oui, je comprends, je viens de le mettre en pièce jointe cela peut aider.
J'ai des messages d'erreurs lorsque j'essai de rassembler mes actions
Julie
Si B9 est vierge cela ne marchera pas ! idem si le nom existe déjà ...C'est là qu'est l'erreur !
Il faut tester l'existence de B9 et l'existence d'une feuille de même nom !
Voilà je viens de modifier ma cellule qui pose problème mais rien n'y fais, je crois que mon code n'est pas correct.
Merci d'essayer de résoudre mon problème .. C'est très aimable de votre part.
Julie
Bonjour !
James je suis épatée par votre travail sur mon fichier. Vous me rendez grandement service alors je vous en remercie! Je vais décortiquer votre macro afin de l'a comprendre et de l'appliquer sur d'autres fichiers.
Mais vraiment, merci à vous !
Julie
Re,
Content que cela puisse t'aider ...
Sincèrement ...il n'y a pas de quoi être étapée ...
Merci pour tes remerciements
Si si, tu es (trop) fort !
Steelson a écrit :Si si, tu es (trop) fort !
Michel ...
Tu ne m'as pas habitué ... à dire n'importe quoi ...
Je ne m'y connais pas suffisamment en VBA pour juger, mais de mon point de vu c'est épatant !
J'ai plus qu'à décortiquer et comprendre les codes.
merci !
Julie,
Même si Michel continue à se moquer de moi ...
C'est super, je vois ça ce weekend et je reviendrais vers vous si besoin !
Bon weekend !
Bonjour James,
J'essaye de comprendre votre macro depuis hier (car je dois la reproduire sur d'autres fichiers), mais j'avoue ne pas saisir pourquoi vous n'avez pas utilisé les plages créées "sem1" "sem2"... pour faciliter le codage. (je suis vraiment au début de mon apprentissage en macro alors je suis désolé par avance)..
Puis, je ne comprend pas cette partie du codage, pouvez-vous me l'expliquer ?
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Merci,
Bonjour,
Tu fais référence à une macro qui existait dans ton fichier depuis le début ...
Les instructions que tu afffiches servent uniquement à formatter la cellule ...
Okay, donc toute la 2nd partie était une macro déjà existante sur mon fichier. Car lorsque je l'a supprime, votre maccro fonctionne malgré tout.
celle-ci :
Sub Macro1()
'
' Macro1 Macro
'
' Touche de raccourci du clavier: Ctrl+w
'
Range("A1:M90").Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("I3:I4").Select
With Selection.Font
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
End With
Columns("A:A").ColumnWidth = 15.71
Range("A2,A3,A5:A8").Select
Range("A5").Activate
Selection.Font.Bold = True
Range("C5").Select
Selection.Font.Bold = True
Range("C8").Select
Selection.Font.Bold = True
Range("B5:B8,D5").Select
Range("D5").Activate
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Columns("B:B").ColumnWidth = 15
Columns("B:B").ColumnWidth = 17.14
Range("D8").Select
Rows("5:5").EntireRow.AutoFit
ActiveWindow.SmallScroll Down:=3
Range("A11,A13,C13,E13").Select
Range("E13").Activate
Selection.Font.Bold = True
Range("B13,D13").Select
Range("D13").Activate
Selection.NumberFormat = "dd/mm/yy;@"
Range("A15,A16,A17,A18").Select
Range("A18").Activate
Selection.Font.Bold = True
Range("H15").Select
ActiveWindow.SmallScroll Down:=6
Range("A21,A22,A23,A24").Select
Range("A24").Activate
Selection.Font.Bold = True
Range("F21").Select
ActiveWindow.SmallScroll Down:=6
Range("A26,A27,A28,D27").Select
Range("D27").Activate
Selection.Font.Bold = True
Range("C27:C28,G27").Select
Range("G27").Activate
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Columns("C:C").ColumnWidth = 13.43
Range("E28").Select
Rows("27:27").EntireRow.AutoFit
Rows("28:28").EntireRow.AutoFit
Range("A30,A31,A32,A33,D32:D33").Select
Range("D32").Activate
Selection.Font.Bold = True
Range("F28").Select
ActiveWindow.SmallScroll Down:=12
Range("A36").Select
Selection.Font.Bold = True
Range("A38").Select
Selection.Font.Bold = True
ActiveWindow.SmallScroll Down:=6
Range("A42").Select
Selection.Font.Bold = True
Range("A44:F52,H44:M52").Select
Range("H44").Activate
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Range("44:44,54:54,64:64").Select
Range("A64").Activate
ActiveWindow.SmallScroll Down:=9
Range("44:44,54:54,64:64,74:74").Select
Range("A74").Activate
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveWindow.SmallScroll Down:=-6
Range("C59").Select
ActiveWindow.SmallScroll Down:=-6
Range("A54:F62,H54:M62,A64:F72,H64:M72").Select
Range("H64").Activate
ActiveWindow.SmallScroll Down:=15
Range("A54:F62,H54:M62,A64:F72,H64:M72,A74:F82,H74:M82").Select
Range("H74").Activate
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Range("A85,A87,A90").Select
Range("A90").Activate
Selection.Font.Bold = True
Range("B90").Select
Selection.NumberFormat = "d/m/yy;@"
ActiveWindow.SmallScroll Down:=-21
Range("A45:A51,H45:H51").Select
Range("H45").Activate
ActiveWindow.SmallScroll Down:=12
Range("A45:A51,H45:H51,A55:A61,H55:H61,A65:A71,H65:H71,A75:A81,H75:H81").Select
Range("H75").Activate
Selection.NumberFormat = "dd/mm/yy;@"
ActiveWindow.SmallScroll Down:=-12
Range("C45:E51,J45:L51").Select
Range("J45").Activate
ActiveWindow.SmallScroll Down:=9
Range("C45:E51,J45:L51,C55:E61,J55:L61").Select
Range("J55").Activate
ActiveWindow.SmallScroll Down:=9
Range("C45:E51,J45:L51,C55:E61,J55:L61,C65:E71,J65:L71,C75:E81,J75:L81").Select
Range("J75").Activate
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("P76").Select
ActiveWindow.SmallScroll Down:=-69
Range("H17").Select
Sheets("Feuil1").Select
Range("B2").Select
Selection.ClearContents
Range("C3").Select
Selection.ClearContents
Range("B5:B8").Select
Selection.ClearContents
Range("D5").Select
Selection.ClearContents
Range("D8").Select
Selection.ClearContents
Range("C11").Select
Selection.ClearContents
Range("B13").Select
Selection.ClearContents
Range("D13").Select
Selection.ClearContents
Range("C17").Select
Selection.ClearContents
Range("B18").Select
Selection.ClearContents
Range("D18").Select
Selection.ClearContents
Range("B22").Select
Selection.ClearContents
Range("C23:C24").Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=9
Range("C27:C28").Select
Selection.ClearContents
Range("G27").Select
Selection.ClearContents
Range("B31").Select
Selection.ClearContents
Range("C32:C33").Select
Selection.ClearContents
Range("G32:G33").Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=6
Range("B38:G39").Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=21
Range("A45:A51").Select
Selection.ClearContents
Range("C45:E51").Select
Selection.ClearContents
Range("H45:H51").Select
Selection.ClearContents
Range("J45:L51").Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=12
Range("A55:A61").Select
Selection.ClearContents
Range("C55:E61").Select
Selection.ClearContents
Range("H55:H61").Select
Selection.ClearContents
Range("J55:L61").Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=9
Range("A65:A71").Select
Selection.ClearContents
Range("C65:E71").Select
Selection.ClearContents
Range("H65:H71").Select
Selection.ClearContents
Range("J65:L71").Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=9
Range("A75:A81").Select
Selection.ClearContents
Range("C75:E81").Select
Selection.ClearContents
Range("H75:H81").Select
Selection.ClearContents
Range("J75:L81").Select
Selection.ClearContents
Range("C85").Select
Selection.ClearContents
Range("B87:E88").Select
Selection.ClearContents
ActiveWindow.SmallScroll Down:=-84
Range("D3").Select
End Sub
Re,
Okay, donc toute la 2nd partie était une macro déjà existante sur mon fichier. Car lorsque je l'a supprime, votre maccro fonctionne malgré tout.
Absolument ...
Je ne me suis occupé que de la macro Validation ...