Objet : auto programmation de VBA :
une macro doit transformer des "Private Sub..." en "Public Sub..." et
inversement
ce qui permet de changer la liste des macros accessibles à l'utilisateur qui
travaille sur une feuille Excel
Comment écrire le code de cette macro qui doit :
1/ Détecter le nom SonNom de la routine sub : Sub SonNom ()
dans :
un module,
un programme de feuille,
le code d'un Userform,
le code de ThisWorkBook
2/ Changer son mode de fonctionnement public en private et inversement
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour M41,
Tu peux essayer ce qui suit :
Tu renseignes adéquatement selon ce que tu désires faire, les variables ChaineRecherchée et ChaineRemplace '----------------------------------- Sub ChangeAppelSub()
Dim ChaineRecherchée As String Dim ChaineRemplace As String Dim Trouver As Integer Dim I As Integer Dim Module As Object
ChaineRecherchée = "Public Sub" ChaineRemplace = "Private Sub" For Each Module In ActiveWorkbook.VBProject.VBComponents With Module.CodeModule 'Si le module ou est mis cette proc se nomme "Module1" For I = .CountOfLines To 1 Step -1 Trouver = InStr(.Lines(I, 1), ChaineRecherchée) If Trouver <> 0 Then .ReplaceLine I, Left(.Lines(I, 1) _ , Trouver - 1) & ChaineRemplace & _ Mid(.Lines(I, 1), Trouver + Len(ChaineRecherchée) _ , Len(.Lines(I, 1))) End If Next I End With Next Set Module = Nothing End Sub '-----------------------------------
Salutations!
"M41" a écrit dans le message de news: 43d243fe$0$6651$ Bonjour
Objet : auto programmation de VBA : une macro doit transformer des "Private Sub..." en "Public Sub..." et inversement ce qui permet de changer la liste des macros accessibles à l'utilisateur qui travaille sur une feuille Excel
Comment écrire le code de cette macro qui doit :
1/ Détecter le nom SonNom de la routine sub : Sub SonNom () dans : un module, un programme de feuille, le code d'un Userform, le code de ThisWorkBook
2/ Changer son mode de fonctionnement public en private et inversement
Merci @+ M41
Bonjour M41,
Tu peux essayer ce qui suit :
Tu renseignes adéquatement selon ce que tu désires
faire, les variables
ChaineRecherchée et ChaineRemplace
'-----------------------------------
Sub ChangeAppelSub()
Dim ChaineRecherchée As String
Dim ChaineRemplace As String
Dim Trouver As Integer
Dim I As Integer
Dim Module As Object
ChaineRecherchée = "Public Sub"
ChaineRemplace = "Private Sub"
For Each Module In ActiveWorkbook.VBProject.VBComponents
With Module.CodeModule
'Si le module ou est mis cette proc se nomme "Module1"
For I = .CountOfLines To 1 Step -1
Trouver = InStr(.Lines(I, 1), ChaineRecherchée)
If Trouver <> 0 Then
.ReplaceLine I, Left(.Lines(I, 1) _
, Trouver - 1) & ChaineRemplace & _
Mid(.Lines(I, 1), Trouver + Len(ChaineRecherchée) _
, Len(.Lines(I, 1)))
End If
Next I
End With
Next
Set Module = Nothing
End Sub
'-----------------------------------
Salutations!
"M41" <boomerang.pro00@wanadoo.fr> a écrit dans le message de news: 43d243fe$0$6651$8fcfb975@news.wanadoo.fr...
Bonjour
Objet : auto programmation de VBA :
une macro doit transformer des "Private Sub..." en "Public Sub..." et
inversement
ce qui permet de changer la liste des macros accessibles à l'utilisateur qui
travaille sur une feuille Excel
Comment écrire le code de cette macro qui doit :
1/ Détecter le nom SonNom de la routine sub : Sub SonNom ()
dans :
un module,
un programme de feuille,
le code d'un Userform,
le code de ThisWorkBook
2/ Changer son mode de fonctionnement public en private et inversement
Tu renseignes adéquatement selon ce que tu désires faire, les variables ChaineRecherchée et ChaineRemplace '----------------------------------- Sub ChangeAppelSub()
Dim ChaineRecherchée As String Dim ChaineRemplace As String Dim Trouver As Integer Dim I As Integer Dim Module As Object
ChaineRecherchée = "Public Sub" ChaineRemplace = "Private Sub" For Each Module In ActiveWorkbook.VBProject.VBComponents With Module.CodeModule 'Si le module ou est mis cette proc se nomme "Module1" For I = .CountOfLines To 1 Step -1 Trouver = InStr(.Lines(I, 1), ChaineRecherchée) If Trouver <> 0 Then .ReplaceLine I, Left(.Lines(I, 1) _ , Trouver - 1) & ChaineRemplace & _ Mid(.Lines(I, 1), Trouver + Len(ChaineRecherchée) _ , Len(.Lines(I, 1))) End If Next I End With Next Set Module = Nothing End Sub '-----------------------------------
Salutations!
"M41" a écrit dans le message de news: 43d243fe$0$6651$ Bonjour
Objet : auto programmation de VBA : une macro doit transformer des "Private Sub..." en "Public Sub..." et inversement ce qui permet de changer la liste des macros accessibles à l'utilisateur qui travaille sur une feuille Excel
Comment écrire le code de cette macro qui doit :
1/ Détecter le nom SonNom de la routine sub : Sub SonNom () dans : un module, un programme de feuille, le code d'un Userform, le code de ThisWorkBook
2/ Changer son mode de fonctionnement public en private et inversement
Merci @+ M41
michdenis
Bonjour M41,
Une variante de la procédure précédente, Tu la copie intégralement sans aucune modification.
à chaque exécution, toutes les procédures déclarées Public Sub deviendront Private Sub et celles déclarées Private Sub deviendront Public sub.
'--------------------------------------- Private Sub ChangeAppelSub()
Dim ChaineRecherchée As String Dim ChaineRemplace As String Dim Trouver As Integer Dim I As Integer Dim Module As Object
Const x = "Private Sub" Const y = "Public sub"
For Each Module In ActiveWorkbook.VBProject.VBComponents With Module.CodeModule For I = .CountOfLines To 1 Step -1 Trouver = InStr(.Lines(I, 1), ChaineRecherchée) sss = .Lines(I, 1) If Trouver <> 0 Then If Mid(.Lines(I, 1), 1, 6) = "Public" Then ChaineRecherchée = "Public Sub" ChaineRemplace = x ElseIf Mid(.Lines(I, 1), 1, 7) = "Private" Then ChaineRecherchée = "Private Sub" ChaineRemplace = y End If If ChaineRemplace <> "" Then .ReplaceLine I, Left(.Lines(I, 1) _ , Trouver - 1) & ChaineRemplace & _ Mid(.Lines(I, 1), Trouver + Len(ChaineRecherchée) _ , Len(.Lines(I, 1))) ChaineRecherchée = "" ChaineRemplace = "" End If End If Next I End With Next Set Module = Nothing End Sub '---------------------------------------
Salutations!
"M41" a écrit dans le message de news: 43d243fe$0$6651$ Bonjour
Objet : auto programmation de VBA : une macro doit transformer des "Private Sub..." en "Public Sub..." et inversement ce qui permet de changer la liste des macros accessibles à l'utilisateur qui travaille sur une feuille Excel
Comment écrire le code de cette macro qui doit :
1/ Détecter le nom SonNom de la routine sub : Sub SonNom () dans : un module, un programme de feuille, le code d'un Userform, le code de ThisWorkBook
2/ Changer son mode de fonctionnement public en private et inversement
Merci @+ M41
Bonjour M41,
Une variante de la procédure précédente,
Tu la copie intégralement sans aucune modification.
à chaque exécution, toutes les procédures déclarées
Public Sub deviendront Private Sub et celles déclarées
Private Sub deviendront Public sub.
'---------------------------------------
Private Sub ChangeAppelSub()
Dim ChaineRecherchée As String
Dim ChaineRemplace As String
Dim Trouver As Integer
Dim I As Integer
Dim Module As Object
Const x = "Private Sub"
Const y = "Public sub"
For Each Module In ActiveWorkbook.VBProject.VBComponents
With Module.CodeModule
For I = .CountOfLines To 1 Step -1
Trouver = InStr(.Lines(I, 1), ChaineRecherchée)
sss = .Lines(I, 1)
If Trouver <> 0 Then
If Mid(.Lines(I, 1), 1, 6) = "Public" Then
ChaineRecherchée = "Public Sub"
ChaineRemplace = x
ElseIf Mid(.Lines(I, 1), 1, 7) = "Private" Then
ChaineRecherchée = "Private Sub"
ChaineRemplace = y
End If
If ChaineRemplace <> "" Then
.ReplaceLine I, Left(.Lines(I, 1) _
, Trouver - 1) & ChaineRemplace & _
Mid(.Lines(I, 1), Trouver + Len(ChaineRecherchée) _
, Len(.Lines(I, 1)))
ChaineRecherchée = ""
ChaineRemplace = ""
End If
End If
Next I
End With
Next
Set Module = Nothing
End Sub
'---------------------------------------
Salutations!
"M41" <boomerang.pro00@wanadoo.fr> a écrit dans le message de news: 43d243fe$0$6651$8fcfb975@news.wanadoo.fr...
Bonjour
Objet : auto programmation de VBA :
une macro doit transformer des "Private Sub..." en "Public Sub..." et
inversement
ce qui permet de changer la liste des macros accessibles à l'utilisateur qui
travaille sur une feuille Excel
Comment écrire le code de cette macro qui doit :
1/ Détecter le nom SonNom de la routine sub : Sub SonNom ()
dans :
un module,
un programme de feuille,
le code d'un Userform,
le code de ThisWorkBook
2/ Changer son mode de fonctionnement public en private et inversement
Une variante de la procédure précédente, Tu la copie intégralement sans aucune modification.
à chaque exécution, toutes les procédures déclarées Public Sub deviendront Private Sub et celles déclarées Private Sub deviendront Public sub.
'--------------------------------------- Private Sub ChangeAppelSub()
Dim ChaineRecherchée As String Dim ChaineRemplace As String Dim Trouver As Integer Dim I As Integer Dim Module As Object
Const x = "Private Sub" Const y = "Public sub"
For Each Module In ActiveWorkbook.VBProject.VBComponents With Module.CodeModule For I = .CountOfLines To 1 Step -1 Trouver = InStr(.Lines(I, 1), ChaineRecherchée) sss = .Lines(I, 1) If Trouver <> 0 Then If Mid(.Lines(I, 1), 1, 6) = "Public" Then ChaineRecherchée = "Public Sub" ChaineRemplace = x ElseIf Mid(.Lines(I, 1), 1, 7) = "Private" Then ChaineRecherchée = "Private Sub" ChaineRemplace = y End If If ChaineRemplace <> "" Then .ReplaceLine I, Left(.Lines(I, 1) _ , Trouver - 1) & ChaineRemplace & _ Mid(.Lines(I, 1), Trouver + Len(ChaineRecherchée) _ , Len(.Lines(I, 1))) ChaineRecherchée = "" ChaineRemplace = "" End If End If Next I End With Next Set Module = Nothing End Sub '---------------------------------------
Salutations!
"M41" a écrit dans le message de news: 43d243fe$0$6651$ Bonjour
Objet : auto programmation de VBA : une macro doit transformer des "Private Sub..." en "Public Sub..." et inversement ce qui permet de changer la liste des macros accessibles à l'utilisateur qui travaille sur une feuille Excel
Comment écrire le code de cette macro qui doit :
1/ Détecter le nom SonNom de la routine sub : Sub SonNom () dans : un module, un programme de feuille, le code d'un Userform, le code de ThisWorkBook
2/ Changer son mode de fonctionnement public en private et inversement
Merci @+ M41
Michel41
Bonjour et merci @+ M41 "michdenis" a écrit dans le message de news:
Bonjour M41,
Une variante de la procédure précédente, Tu la copie intégralement sans aucune modification.
à chaque exécution, toutes les procédures déclarées Public Sub deviendront Private Sub et celles déclarées Private Sub deviendront Public sub.
'--------------------------------------- Private Sub ChangeAppelSub()
Dim ChaineRecherchée As String Dim ChaineRemplace As String Dim Trouver As Integer Dim I As Integer Dim Module As Object
Const x = "Private Sub" Const y = "Public sub"
For Each Module In ActiveWorkbook.VBProject.VBComponents With Module.CodeModule For I = .CountOfLines To 1 Step -1 Trouver = InStr(.Lines(I, 1), ChaineRecherchée) sss = .Lines(I, 1) If Trouver <> 0 Then If Mid(.Lines(I, 1), 1, 6) = "Public" Then ChaineRecherchée = "Public Sub" ChaineRemplace = x ElseIf Mid(.Lines(I, 1), 1, 7) = "Private" Then ChaineRecherchée = "Private Sub" ChaineRemplace = y End If If ChaineRemplace <> "" Then .ReplaceLine I, Left(.Lines(I, 1) _ , Trouver - 1) & ChaineRemplace & _ Mid(.Lines(I, 1), Trouver + Len(ChaineRecherchée) _ , Len(.Lines(I, 1))) ChaineRecherchée = "" ChaineRemplace = "" End If End If Next I End With Next Set Module = Nothing End Sub '---------------------------------------
Salutations!
"M41" a écrit dans le message de news: 43d243fe$0$6651$ Bonjour
Objet : auto programmation de VBA : une macro doit transformer des "Private Sub..." en "Public Sub..." et inversement ce qui permet de changer la liste des macros accessibles à l'utilisateur qui travaille sur une feuille Excel
Comment écrire le code de cette macro qui doit :
1/ Détecter le nom SonNom de la routine sub : Sub SonNom () dans : un module, un programme de feuille, le code d'un Userform, le code de ThisWorkBook
2/ Changer son mode de fonctionnement public en private et inversement
Merci @+ M41
Bonjour et merci
@+ M41
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
OyNvWHqHGHA.2948@TK2MSFTNGP10.phx.gbl...
Bonjour M41,
Une variante de la procédure précédente,
Tu la copie intégralement sans aucune modification.
à chaque exécution, toutes les procédures déclarées
Public Sub deviendront Private Sub et celles déclarées
Private Sub deviendront Public sub.
'---------------------------------------
Private Sub ChangeAppelSub()
Dim ChaineRecherchée As String
Dim ChaineRemplace As String
Dim Trouver As Integer
Dim I As Integer
Dim Module As Object
Const x = "Private Sub"
Const y = "Public sub"
For Each Module In ActiveWorkbook.VBProject.VBComponents
With Module.CodeModule
For I = .CountOfLines To 1 Step -1
Trouver = InStr(.Lines(I, 1), ChaineRecherchée)
sss = .Lines(I, 1)
If Trouver <> 0 Then
If Mid(.Lines(I, 1), 1, 6) = "Public" Then
ChaineRecherchée = "Public Sub"
ChaineRemplace = x
ElseIf Mid(.Lines(I, 1), 1, 7) = "Private" Then
ChaineRecherchée = "Private Sub"
ChaineRemplace = y
End If
If ChaineRemplace <> "" Then
.ReplaceLine I, Left(.Lines(I, 1) _
, Trouver - 1) & ChaineRemplace & _
Mid(.Lines(I, 1), Trouver + Len(ChaineRecherchée) _
, Len(.Lines(I, 1)))
ChaineRecherchée = ""
ChaineRemplace = ""
End If
End If
Next I
End With
Next
Set Module = Nothing
End Sub
'---------------------------------------
Salutations!
"M41" <boomerang.pro00@wanadoo.fr> a écrit dans le message de news:
43d243fe$0$6651$8fcfb975@news.wanadoo.fr...
Bonjour
Objet : auto programmation de VBA :
une macro doit transformer des "Private Sub..." en "Public Sub..." et
inversement
ce qui permet de changer la liste des macros accessibles à l'utilisateur
qui
travaille sur une feuille Excel
Comment écrire le code de cette macro qui doit :
1/ Détecter le nom SonNom de la routine sub : Sub SonNom ()
dans :
un module,
un programme de feuille,
le code d'un Userform,
le code de ThisWorkBook
2/ Changer son mode de fonctionnement public en private et inversement
Bonjour et merci @+ M41 "michdenis" a écrit dans le message de news:
Bonjour M41,
Une variante de la procédure précédente, Tu la copie intégralement sans aucune modification.
à chaque exécution, toutes les procédures déclarées Public Sub deviendront Private Sub et celles déclarées Private Sub deviendront Public sub.
'--------------------------------------- Private Sub ChangeAppelSub()
Dim ChaineRecherchée As String Dim ChaineRemplace As String Dim Trouver As Integer Dim I As Integer Dim Module As Object
Const x = "Private Sub" Const y = "Public sub"
For Each Module In ActiveWorkbook.VBProject.VBComponents With Module.CodeModule For I = .CountOfLines To 1 Step -1 Trouver = InStr(.Lines(I, 1), ChaineRecherchée) sss = .Lines(I, 1) If Trouver <> 0 Then If Mid(.Lines(I, 1), 1, 6) = "Public" Then ChaineRecherchée = "Public Sub" ChaineRemplace = x ElseIf Mid(.Lines(I, 1), 1, 7) = "Private" Then ChaineRecherchée = "Private Sub" ChaineRemplace = y End If If ChaineRemplace <> "" Then .ReplaceLine I, Left(.Lines(I, 1) _ , Trouver - 1) & ChaineRemplace & _ Mid(.Lines(I, 1), Trouver + Len(ChaineRecherchée) _ , Len(.Lines(I, 1))) ChaineRecherchée = "" ChaineRemplace = "" End If End If Next I End With Next Set Module = Nothing End Sub '---------------------------------------
Salutations!
"M41" a écrit dans le message de news: 43d243fe$0$6651$ Bonjour
Objet : auto programmation de VBA : une macro doit transformer des "Private Sub..." en "Public Sub..." et inversement ce qui permet de changer la liste des macros accessibles à l'utilisateur qui travaille sur une feuille Excel
Comment écrire le code de cette macro qui doit :
1/ Détecter le nom SonNom de la routine sub : Sub SonNom () dans : un module, un programme de feuille, le code d'un Userform, le code de ThisWorkBook
2/ Changer son mode de fonctionnement public en private et inversement