Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro bouton associé à la position du bouton

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 !

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 🙂
 
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! 😉
 
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.
 
Dernière édition:
Re

Houps, désolé, j'avions point vu ton profil.
Je peux te dire que cela fonctionne sur mon PC 😉
Mais sur ton Mac, ce code ne fonctionnera pas.

Je laisse donc ma place aux macistes du forum qui pourront tester leur code sur un Mac.
 
- 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

Discussions similaires

Réponses
4
Affichages
439
Réponses
36
Affichages
3 K
Réponses
2
Affichages
616
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…