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 Sub

puis 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

72test-3.zip (22.75 Ko)

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 Julie,

salut Michel ...

Ci-joint ton fichier test ... "nettoyé" ...

207test-5.zip (27.41 Ko)

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 ... ... si tu as des questions ... il ne faut pas hésiter à poster ...

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 ...

Rechercher des sujets similaires à "vba relier actions bouton"