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

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

  • Questionnaire Forum VNEW macros supr.xlsm
    54.2 KB · Affichages: 48
  • Questionnaire Forum VNEW macros supr.xlsm
    54.2 KB · Affichages: 48
Dernière modification par un modérateur:

Dranreb

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

DoubleZero

XLDnaute Barbatruc
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 :)
 

Dakitess

XLDnaute Nouveau
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 ?
 

Dranreb

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

Dakitess

XLDnaute Nouveau
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 ;)
 

Dranreb

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

Dakitess

XLDnaute Nouveau
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
 

Dranreb

XLDnaute Barbatruc
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:

DoubleZero

XLDnaute Barbatruc
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

  • 00 - Dakitess - Supprimer sans bouton.xlsm
    52.3 KB · Affichages: 42

Dakitess

XLDnaute Nouveau
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 ! :)
 

DoubleZero

XLDnaute Barbatruc
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é :rolleyes: 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 :)
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa