Macro bouton associé à la position du bouton

stapsounet

XLDnaute Junior
Bonjour,

Je souhaiterais affecter une macro à des boutons qui agissent en fonction de l'emplacement du bouton.
Je crée un formulaire pour des remboursements de frais avec plusieurs tableaux dans la même page et je veux qu'en cliquant sur un bouton, l'usager ajoute une ligne dans le tableau correspondant :


En cliquant sur le bouton "+", je voudrais rajouter une ligne avant la ligne sous-total, avec les mêmes mises en formes et formules que dans le tableau correspondant.

Est-ce possible ? Si oui, dois-je faire une macro différente par bouton ?
Mes essais sont jusque là infructueux...

Merci d'avance de vos aides :)
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

L'adjonction d'un fichier Excel en guise de support pour tester et évaluer nos codes VBA avant soumission dans ta discussion, pourrait ne pas être inutile.
En tout cas, on teste mieux du VBA sur un *.xl? que sur un vulgaire *.jpg, fusse-t-il tout joli ou mignon ;)

Bref, fais pêter le classeur en cliquant sur Téléverser un fichier! ;)
 

Staple1600

XLDnaute Barbatruc
Re

Accroche-toi à la barre, camarade ;)
1) On remplace tes boutons par des CommandButton (issus de la barre Controles ActiveX)
2) On insère un module de classe (que j'ai renommé: clsX_Btn)
VB:
Public WithEvents ButtonGroup As MSForms.CommandButton
Private Sub ButtonGroup_Click()
Dim Lig&, Fin&
Lig = ButtonGroup.TopLeftCell.Row
Fin = Cells(Lig + 3, "K").End(xlDown).Row 
Rows(Fin).Insert shift:=xlDown
Range(Cells(Fin - 1, "A"), Cells(Fin, "K")).FillDown
Cells(Fin + 1, "K").Formula = "=SUM(K" & Lig + 3 & ":K" & Fin & ")"
End Sub
3) Dans un module standard, on a ce code
VB:
Dim Buttons() As New clsX_Btn
Sub InitModClasse()
Dim Sh As Worksheet, Obj As OLEObject, ButtonCount%
Set Sh = Sheets("Feuil1") 'adapter selon besoin
Erase Buttons
For Each Obj In Sh.OLEObjects
    If TypeName(Obj.Object) = "CommandButton" Then
    ButtonCount = ButtonCount + 1
    ReDim Preserve Buttons(1 To ButtonCount)
    Set Buttons(ButtonCount) = New clsX_Btn
    Set Buttons(ButtonCount).ButtonGroup = Obj.Object
    End If
Next Obj
End Sub
Pour tester, tu lances la macro InitModClasse
Et ensuite tu cliques sur les boutons pour voir ce qui se passe

Ci-dessous, c'est ce que tu dois voir dans ton projet VBA.
01ClassMod.jpg
 
Dernière édition:

Discussions similaires

Réponses
36
Affichages
2 K

Statistiques des forums

Discussions
312 472
Messages
2 088 710
Membres
103 930
dernier inscrit
Jibo