Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 29/06/2009, 16h43   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 53
Points : 10
Points : 10
Par défaut suppression de macros par macro

Re

Bon j'ai essayé mais ca ne veux pas
voici mon code test qui doit supprimer les macros de la feuille 1 se nommant monBouton1_Click(), monBouton2_Click(),....... monBouton25_Click(),

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Bouton223_QuandClic()
 
Dim Debut As Integer, Lignes As Integer
Dim NomMacro As String
 
NomMacro = "monBouton" & i
 
For i = 1 To 25
 
    With ThisWorkbook.VBProject.VBComponents("Feuil1").CodeModule
    Debut = .ProcStartLine(NomMacro, 0)
    Lignes = .ProcCountLines(NomMacro, 0)
    .DeleteLines Debut, Lignes
End With
 
 Next i
 
End Sub

total erreur d'execution '35'
sub ou fonction non definie a la ligne

Code :
Debut = .ProcStartLine(NomMacro, 0)
un ptit indice serait le bienvenue.
neninio31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2009, 16h47   #2
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
Est ce que tuas bien activé la référence
Microsoft Visual Basic for Applications Extensibility 5.3.
???

Je suppose que le code viens de la
A par la référence le code ma l'air bon.
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2009, 18h33   #3
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 469
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 469
Points : 11 906
Points : 11 906
Je ne comprends pas ton code
Tu mets
Citation:
Code :
NomMacro = "monBouton" & i
avant de donner une valeur à i... Tu peux expliquer ?
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2009, 23h44   #4
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 53
Points : 10
Points : 10
Par défaut reference bien activée

re
oui la reference en question est bien activée sur vba

en ce qui concerne le

Code :
NomMacro = "monBouton" & i
c'est que mes macros a supprimer portent toute le même nom a savoir

private sub monBouton1_Click(),
private sub monBouton2_Click(),
.
.
.
private sub monBoutoni_Click(),


Voila j'espere avoir repondu a vos question
neninio31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 04h03   #5
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 168
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 43
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 168
Points : 29 876
Points : 29 876
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Je crois que tu n'as pas compris ce que te disait ouskel'n'or

La ligne
Code :
NomMacro = "monBouton" & i
devrait se trouver dans la boucle, car le i ne change pas à l'extérieur de celle-ci.


De plus il s'agit de procédure évènementielle sur des boutons, hors juste en mettant le nom du bouton et son numéro, cela ne devrait pas passer (en théorie), il faut une concaténation avec le click (à vérifier).

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 09h47   #6
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 53
Points : 10
Points : 10
Par défaut toujours pas ca

re
bon j'ai essayé ca

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Bouton223_QuandClic()
 
Dim Debut As Integer, Lignes As Integer
Dim NomMacro As String
 
NomMacro = "monBouton" & i
 
For i = 1 To 25
 
 NomMacro = "Sub monBouton" & i & "_Click()"
 
    With ThisWorkbook.VBProject.VBComponents("Feuil1").CodeModule
    Debut = .ProcStartLine(NomMacro, 0)
    Lignes = .ProcCountLines(NomMacro, 0)
    .DeleteLines Debut, Lignes
End With
 
 Next i
 
End Sub

puis ca


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Bouton223_QuandClic()
 
Dim Debut As Integer, Lignes As Integer
Dim NomMacro As String
 
NomMacro = "monBouton" & i
 
For i = 1 To 25
 
 NomMacro = "monBouton" & i & "_Click()"
 
    With ThisWorkbook.VBProject.VBComponents("Feuil1").CodeModule
    Debut = .ProcStartLine(NomMacro, 0)
    Lignes = .ProcCountLines(NomMacro, 0)
    .DeleteLines Debut, Lignes
End With
 
 Next i
 
End Sub
mais toujours la meme erreur d'execution '35'

sub ou fonction non définie

a la ligne

Code :
Debut = .ProcStartLine(NomMacro, 0)

Voila ou j'en suis
neninio31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 09h57   #7
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 469
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 469
Points : 11 906
Points : 11 906
Et si tu nous disais ce que tu veux obtenir, au bout du bout... Il y a peut-être une solution à laquelle tu n'as pas songé... Comme supprimer l'userform par exemple.
Pendant que j'y pense, ils sont où tes boutons ?
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 10h32   #8
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 53
Points : 10
Points : 10
Par défaut mon objectif en detail

re
alors ayant precedemment reussi a creer dynamiquement des bouton avec macro associé grace a vous tous encore merci

ces boutons se nomment VOIR0, VOIR1 ..... VOIRi

Seulement ces boutons sont supprimés dynamiquement grace a vous encore merci

mais la suppression dynamique ne supprime pas les macros associées a savoir

Sub VOIR0_Click(), Sub VOIR1_Click() , Sub VOIRi_Click()

alors quand les boutons sont recrées il ya un conflit a cause de ces procedures qui portent le meme nom d'ou le pb de supprimer dans le code les procédures


Tout se passe dans une feuille et pas dans un userform

voila merci
neninio31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 13h48   #9
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 469
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 469
Points : 11 906
Points : 11 906
Ok. Et si tu adaptes bêhêhêhêtemement le code de la FAQ, ça donne ça qui chez moi fonctionne.
J'ai placé trois boutons sur une feuille de calculs
Le troisième me sert pour effacer les macros des deux autres
Code :
1
2
3
4
5
6
7
8
9
10
Private Sub CommandButton3_Click()
Dim NomMacro As String, Wb As Workbook
    'Nécessite d'activer la référence '"Visual basic For Application Extensibility 5.3"
 
    Set Wb = Workbooks("Classeur1.xls")
    For i = 1 To 2
        NomMacro = "CommandButton" & i & "_Click"
        SupprimerMacroPrecise Wb, "Feuil1", NomMacro
    Next
End Sub
Code :
1
2
3
4
5
6
7
8
9
10
'où mdl est le module de feuil1
Sub SupprimerMacroPrecise(Wb As Workbook, Mdl As String, NomMacro As String)
    Dim Debut As Integer, Lignes As Integer
 
    With Wb.VBProject.VBComponents(Mdl).CodeModule
        Debut = .ProcStartLine(NomMacro, 0)
        Lignes = .ProcCountLines(NomMacro, 0)
        .DeleteLines Debut, Lignes
    End With
End Sub
Tu adaptes le nom des boutons sans les parenthèses... Seulement le nom
Bon après-midi
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2009, 14h29   #10
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 53
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 53
Points : 10
Points : 10
Par défaut un grand merci

un grand merci a tous pour vos infos

desolé je ne suis qu'apprenti developpeur (c'est quelquechose que je refoulais)
mais j'ai été obligé de m'adonner au vba et je dois dire qu'avec ce projet de masque de saisie et l'énorme aide de ce forum je m'aperçois qu'on peut réaliser des interfaces sympatiques

Merci et a bientot pour de nouvelles aventures
neninio31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 12h50.


 
 
 
 
Partenaires

Hébergement Web