XL 2013 [Résolu] Macro de macros : associer "n" boutons à "n" macros ?

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 !

Dakitess

XLDnaute Nouveau
Bonjour !

Face à l'efficacité des réponses à mon précédent problème, me revoilà pour vous soumettre un autre petit quelque chose. Cette fois il est question de ce que je pense être une "macro de macros".

Je dispose d'un questionnaire sous Excel, fait-main, basé sur des listes déroulantes, et pour des raisons de praticité et de contournement de difficulté j'ai un bouton me permettant de supprimer toutes les réponses d'une question (on peut sélectionner jusqu'à 4 réponses par question). Il était certainement possible de procéder autrement, mais c'est ainsi que cela s'est fait ^^

De fait, sur 100 question, j'ai 100 boutons associés à 100 macros de suppression de données... Rébarbatif, surtout quand il faudra ajouter des questions, écrire un bout de code en question, etc !

J'aimerai donc savoir s'il existe une sorte de macro capable d'associer au bouton "i" la macro nommée "supr_i" (par exemple) ?

Un cran au dessus, existe-t-il une solution super élégante de "n" boutons renvoyant vers une seule macro "supr", laquelle tiendrait compte de la position du bouton pour n'effacer que les réponses qui sont en face ?

Comme souvent, ce n'est pas bien facile d'expliquer cela par des mots, je vous joins un Excel en PJ. Vous trouverez dans le module "RAZ_Modal2" les macros actuelles, au cas par cas, qu'il me faudrait étendre à quelques 100 questions...

Merci par avance si vous vous penchez sur la question !

Merci par avance !
 

Pièces jointes

Dernière modification par un modérateur:
Re : Macro de macros : associer "n" boutons à "n" macros ?

Bonjour
existe-t-il une solution super élégante de "n" boutons renvoyant vers une seule macro
Oui, vous pouvez affecter la même macro à plusieurs boutons de formulaire. Application.Caller vous donnera le nom du Shape qui l'a invoquée, et TopLeftCell de ce Shape le Range représentant la cellule haut gauche recouverte.
 
Re : Macro de macros : associer "n" boutons à "n" macros ?

Bonjour, Dakitess, Pierrot 🙂, Dranreb 🙂, le Forum,

... sur 100 question, j'ai 100 boutons associés à 100 macros de suppression de données...

Afin de protéger le fichier d'une crise d’acné 🙁, une suggestion avec le code ci-après, logé dans le module de l'onglet "Questionnaires".

Un clic double en colonne b permet la suppression des valeurs devenues indésirables.

Code:
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column <> 2 Or Target.Row < 44 Then Exit Sub
    Target.CurrentRegion = ""
    Cancel = True
End Sub

A bientôt 🙂
 
Re : Macro de macros : associer "n" boutons à "n" macros ?

Bonjour 🙂 Merci de vous être penchés sur mon problème !

Dranreb, je file fouiller ces fonctionnalités et creuser comment les assembler ^^

DoubleZero, ouille, je ne suis pas certain de comprendre ce que fait ce code ni comment l'implémenter, en le copiant tel quel dans l'onglet questionnaire, à la suite de l'actuel code, j'obtiens une erreur :s

En outre, peux tu m'expliciter un petit peu ce que cela permettrait ? Tu parles de de double-clic dans la colonne B pour la suppression des valeurs ?
 
Re : Macro de macros : associer "n" boutons à "n" macros ?

Bonjour.

Ben vous les assemblez comme ça :
VB:
Option Explicit

Sub MacroCommune()
Dim Sh As Shape, CHG As Range
Set Sh = ActiveSheet.Shapes(Application.Caller)
Set CHG = Sh.TopLeftCell
…
Rappel: ne marche qu'avec des boutons de formulaire, non des boutons ActiveX.
 
Re : Macro de macros : associer "n" boutons à "n" macros ?

Merci, mais je crains de ne pas savoir me dépatouiller avec ça... La faute à mon ignorance totale du fonctionnement des VBAs ^^

Je serai peut être contraint de le faire manuellement, mais soit, ce n'est pas le pire !

Je reste preneur de toute aide, bien entendu, je ne me suis pas encore résigné à le faire à la main, un par un 😉
 
Re : Macro de macros : associer "n" boutons à "n" macros ?

Bon, j'ai ouvert le fichier pour voir. Cette procédure commune devrait faire l'affaire :
VB:
Sub MacroCommune()
Dim Sh As Shape, Q As Long
Set Sh = Shapes(Application.Caller)
Q = Sh.TopLeftCell.EntireRow.Columns(2).MergeArea.Row
'MsgBox Q
Range(Cells(Q, 6), Cells(Q, 26)).ClearContents
Cells(Q + 1, 3).ClearContents
End Sub
Mais c'est vrai que je m'orienterait sans doute aussi plutôt sur une Worksheet_BeforeDoubleClick dans le module de la feuille comme le préconise DoubleZéro.
 
Re : Macro de macros : associer "n" boutons à "n" macros ?

J'ai donc créer un module "Bouton_Supr_Commun" dans lequel j'ai copié collé ton code, puis j'ai associé les boutons à l'unique "MacroCommune()".

Mais l'action sur les boutons me renvoie une erreur :

Erreur de compilation:
Sub ou Function non définie

Et Excel me surligne en bleu "Shapes" de la 3ème ligne puis me point en flèche jaune la première ligne...

Sincèrement désolé de pouvoir apporter plus, je sens bien que je loupe quelques chose xD
 
Re : Macro de macros : associer "n" boutons à "n" macros ?

Effectivement il faut ActiveSheet.Shapes(Application.Caller), excusez moi.

Pour Range et Cells ce n'est pas nécessaire car il assume Application.
mais vous pouvez l'y mettre aussi.
 
Dernière édition:
Re : Macro de macros : associer "n" boutons à "n" macros ?

Re-bonjour,

...DoubleZero, ouille, je ne suis pas certain de comprendre ce que fait ce code ni comment l'implémenter, en le copiant tel quel dans l'onglet questionnaire, à la suite de l'actuel code, j'obtiens une erreur :s...

Voir le fichier joint.

A bientôt 🙂
 

Pièces jointes

Re : Macro de macros : associer "n" boutons à "n" macros ?

Superbe les gars, j'ai testé vos deux soluces, et ça fonctionne très très bien !

Je pense retenir la solution conservant les boutons : ils sont déjà en place et sont plus pratiques qu'un double clic sur une Surface Pro 😉

En revanche, cette solution du double clic associé à CurrentRegion est d'une efficacité que j'aimerai comprendre comment la moduler pour l'avenir : en l'état elle me supprime tout le voisinage contigu, de ce que j'en ai compris, donc les premières colonnes aussi. Est-il envisageable de définit des exclusion pour que seules les cellules C46 et F46:F49 (respectivement à toutes les question bien sur) soient effacées ? Il me semble que oui via la définition d'une nouvelle sélection intermédiaire qui utiliserai CurrentRegion comme base et retirerai des ensembles, mais je ne parviens pas à mes fins.

Merci encore ! 🙂
 
Re : Macro de macros : associer "n" boutons à "n" macros ?

Bonjour à toutes et à tous,

...cette solution du double clic associé à CurrentRegion... me supprime tout le voisinage contigu...

En effet : le fichier déposé 🙄 en #1 ne laissait apparaître aucune valeur dans les colonnes voisines.

Pour une action limitée aux colonnes b à i :

Code:
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column <> 2 Or Target.Row < 44 Then Exit Sub
    Target.Offset(-1, 0).Resize(8, 8) = ""
    Cancel = True
End Sub

A bientôt 🙂
 
- 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
3
Affichages
503
Réponses
2
Affichages
536
Réponses
4
Affichages
603
Réponses
23
Affichages
1 K
Retour