peut on recuperer le nom de la macro en cours ?

jarc76

XLDnaute Nouveau
Bonjour, je reviens a la charge , car j'ai pas eu de reponse adequate ...


est il possible de recuperer le nom de la macro en cours pour le mettre dans une variable ???

par exemple :

Sub qui_suis_je()
nom= sub.NAME
...
end sub

je voudrais recuperer "qui_suis_je" dans la variable 'nom' mais l'instruction sub.NAME n'existe pas ....

dans le meme ordre d'idée, peut on recuperer le nom de la checkbox que l'on vient de cliquer ??

Private sub checkbox1_Click()
nom=activecheckbox
...
end sub


activecheckbox, ca marche pas , y a t-il une possiblité de recuperer "checkbox1" ou checkbox1_click" dans une variable ???

Merci par avance ....
 

porcinet82

XLDnaute Barbatruc
Re : peut on recuperer le nom de la macro en cours ?

re,

Tu ne pourrais nous mettre un petit exemple en pièce jointe, histoire que l'on voit ce que l'on peut adapter, parce que je suis persuédé qu'il y a une autre solution que tes 100 macros.
Tu nous mets un petite exemples avec 2 macros et 2 checkbox, puisque apparemment, c'est de ca qu'il s'agit

@+
 

jarc76

XLDnaute Nouveau
Re : peut on recuperer le nom de la macro en cours ?

mutzik à dit:
re,
je t'ai fait un petit exemple

question : avec quelle barre d'outils fais-tu tes check boxes ?

effectivement ca marche dans ton prog ,

j'ai utilisé des checkbox venant de 'la boite a outils controles'

d'ou viennent tes checkbox a toi ???


Porcinet, je te fais un petit prog et je te post ca .....
 

Catrice

XLDnaute Barbatruc
Re : peut on recuperer le nom de la macro en cours ?

Re,

Un exemple avec un UserForm....
Chaque clic sur un objet du Userform renvoi le nom de ce dernier.


Porcinet, d'apres ce que j'ai compris, il faut une Sub par bouton (objet).
Ca n'est à priori pas compressible ...
 

Pièces jointes

  • Classeur1.xls
    28.5 KB · Affichages: 53
  • Classeur1.xls
    28.5 KB · Affichages: 55
  • Classeur1.xls
    28.5 KB · Affichages: 52

jarc76

XLDnaute Nouveau
Re : peut on recuperer le nom de la macro en cours ?

Mieux vaut tard que jamais !!!!
j'ai eu un mal de chien a compresser le fichier :
de plus de 500 checkbox, je suis passé a 9 ... ca reduit un peu le programme... Bref, du coup , je me suis rendu compte que mon probleme etait un bete compteur de checkbox actives ...

voila voila voila ....

a plus tard ....
 

Pièces jointes

  • macros.zip
    45.8 KB · Affichages: 29
  • macros.zip
    45.8 KB · Affichages: 28
  • macros.zip
    45.8 KB · Affichages: 28
C

Compte Supprimé 979

Guest
Re : peut on recuperer le nom de la macro en cours ?

Salut Jarc76,

Pourquoi utiliser 500 checkbox et toute une machine à gaz derrière ?

Alors que tu peux faire pratiquement la même chose, en beaucoup moins lourd et beaucoup moins de code (3 lignes)

Ci joint le fichier exemple (500 "checkbox" = 23 Ko non compressé)

A+
 

Pièces jointes

  • Jarc76_Choix_sans_CheckBox.xls
    23 KB · Affichages: 50

jarc76

XLDnaute Nouveau
Re : peut on recuperer le nom de la macro en cours ?

BrunoM45 à dit:
Salut Jarc76,

Pourquoi utiliser 500 checkbox et toute une machine à gaz derrière ?

Alors que tu peux faire pratiquement la même chose, en beaucoup moins lourd et beaucoup moins de code (3 lignes)

Ci joint le fichier exemple (500 "checkbox" = 23 Ko non compressé)

A+

il est très bien ton exemple, bruno .....
Mais elles sont où les checkbox ??? ta bidouille est certes très bien !!!
Mais j'ai besoin des fonctionnalités de la checkbox : enabled, visible; etc ...

Ceci dit, je vais voir si je peux adapter ton principe.... C'est vrai que c'est bien moins lourd ..... et finalement extremement plus simple effectivement....

Merci bien quoi qu'il en soit .......
 

porcinet82

XLDnaute Barbatruc
Re : peut on recuperer le nom de la macro en cours ?

Salut,

Juste pour montrer à jarc76 que l'on peut aisément réduire son code, sans trop forcer en plus...
Il reste juste le code des Checkbox à réduire puisque dans le code que je propose, il reste les 9 correspondants aux 9 Checkbox présentent sur la page, mais il me semble qu'avec un module de classe (que je maitrise mal, et je n'ai pas trop le temps de m'y mettre en ce moment...) on pourrait facilement y arriver.

Donc avant de t'énervé contre les autres (voir post du 14/05/07 à 12h43) qui en plus ont raison, réfléchis à ce que tu écris...

@+
 

Pièces jointes

  • macros23.zip
    19.7 KB · Affichages: 24
Dernière édition:

MichelXld

XLDnaute Barbatruc
Re : peut on recuperer le nom de la macro en cours ?

bonjour

Voici une proposition à partir d'un module de classe.
Tu garderas ainsi les fonctionnalités de CheckBox tout en utilisant qu'une seule procédure


Bonne journée
MichelXld
 

Pièces jointes

  • macros_V02.zip
    21 KB · Affichages: 29

porcinet82

XLDnaute Barbatruc
Re : peut on recuperer le nom de la macro en cours ?

Salut Michel,

Je vois que j'ai été légèrement plus rapide, mais que tu as su faire ce que je n'ai fais que proposer.
Sinon, je ne sais pas quel temps il fait a La Rochelle, je n'y suis plus :( , je vais donc de ce pas, changer mon adresse...

Merci a toi :) ,

Au plaisir,

@+
 

jarc76

XLDnaute Nouveau
Re : peut on recuperer le nom de la macro en cours ?

MichelXLD : ben, respect !!!!
Ca resoud bien des pbs ton programme

je connais pas les classes mais vu le resultats, je vais tâcher d'analyser de plus pret comment ca marche ....Un grand Merci a tous en tout cas pour le temps passé sur mon probleme .....

Et pour en revenir a la question de base : dois je conclure qu'il n'est pas possible de recuperer le nom de la macro en cours ?? (tétu le gars quand meme ....)
 

jarc76

XLDnaute Nouveau
Re : peut on recuperer le nom de la macro en cours ?

porcinet82 à dit:
Salut,

Juste pour montrer à jarc76 que l'on peut aisément réduire son code, sans trop forcer en plus...
Il reste juste le code des Checkbox à réduire puisque dans le code que je propose, il reste les 9 correspondants aux 9 Checkbox présentent sur la page, mais il me semble qu'avec un module de classe (que je maitrise mal, et je n'ai pas trop le temps de m'y mettre en ce moment...) on pourrait facilement y arriver.


@+

juste pour montrer a porcinet que l'on peut encore reduire son code :

Private Sub coche_1_2_Click()
nom_check = coche_1_2.Name
Call code_commun
End Sub

==>Private Sub coche_1_2_Click()
nom_check = "coche_1_2"
Call code_commun
End Sub

Quel est l'interet d'ajouter une variable 'nom_check' pour ensuite faire une petite trituration pour recuper les ligne et colonne des coches alors qu'au depart j'appelais une fonction parametrée directement??

Ta proposition :
Private Sub coche_1_2_Click()
nom_check = coche_1_2.Name
Call code_commun
End Sub

Sub code_commun()
compteur = 0
col = CInt(Right(nom_check, 1)) '==> inutile ce truc là non ??
For i = 1 To 3
If ActiveSheet.OLEObjects("coche_" & i & "_" & col).Object.Value = True Then compteur = compteur + 1
Next i
Range("C6").Offset(0, col - 1) = compteur
Call prog_commun
End Sub


j'en reviens donc à :
Private Sub coche_1_2_Click()
Call code_commun(1,2)
End Sub

Sub code_commun(ligne as integer, colonne as integer)
compteur = 0
For i = 1 To 3
If ActiveSheet.OLEObjects("coche_" & i & "_" & colonne).Object.Value = True Then compteur = compteur + 1
Next i
Range("C6").Offset(0, col - 1) = compteur
Call prog_commun(ligne)
End Sub

je crois qu'en ce qui concerne les reductions de code, plus on cherche et plus on trouve ..... et même parfois 'sans forcer' .....

bonne journée ....
 

porcinet82

XLDnaute Barbatruc
Re : peut on recuperer le nom de la macro en cours ?

re,

C'est pas faut, j'etais partis sur autre chose au départ, mais comme tu as l'air un peu joueur, voici une nouvelle reduction (plus besoin des 2 codes pour les lignes et colonnes, un seul code est nécessaire), meme si ca ne sert a rien puisque Michel à résolu le problème.

Code:
Private Sub coche_1_1_Click()
Call code_commun(1, 1)
End Sub
 
Sub code_commun(ligne As Integer, colonne As Integer)
Dim cpt&, cpt2&, ligne&, colonne%
cpt = 0
cpt2 = 0
For i = 1 To 3
    If ActiveSheet.OLEObjects("coche_" & i & "_" & colonne).Object.Value = True Then cpt = cpt + 1
    If ActiveSheet.OLEObjects("coche_" & ligne & "_" & i).Object.Value = True Then cpt2 = cpt2 + 1
Next i
Cells(6, 2 + colonne) = cpt
Range("B" & ligne + 6) = cpt2
End Sub

@+
 

MichelXld

XLDnaute Barbatruc
Re : peut on recuperer le nom de la macro en cours ?

Rebonjour

Et pour en revenir a la question de base : dois je conclure qu'il n'est pas possible de recuperer le nom de la macro en cours ?? (tétu le gars quand meme ....)


Code:
Sub ProcedureDeTest()
    ControleProcedureActive
End Sub

Sub ControleProcedureActive()
    'Adapté d'une procedure de JS
    Dim Lig As Long
    Dim NomProcedureActive As String
    
    'Recherche procedure en cours
    With Application.VBE.ActiveCodePane
        .GetSelection Lig, 0, 0, 0
        NomProcedureActive = .CodeModule.ProcOfLine(Lig, 0)
    End With
    
    MsgBox NomProcedureActive
End Sub



Bonne journée
MichelXld
 

Discussions similaires

Statistiques des forums

Discussions
312 222
Messages
2 086 395
Membres
103 200
dernier inscrit
pascalgip