Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Modifier code par Macro

8 réponses
Avatar
JulieH
Bonjour à toutes et tous,

Je souhaite aller dans le projet VBA et modifier des lignes de code par
Macro. Je sais que ce sujet a été souvent abordé et j'ai trouvé de
nombreux exemples sur le forum ou sur les différents sites, notamment le
code suivant qui fonctionne parfaitement :

With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
.DeleteLines 2
.InsertLines 2, "zaza"
End With

Ce qui me manque pour avancer :
- Comment atteindre directement une Macro et non le module ?
- Quel code pour atteindre le Workbook_Open ?
- Peut-on modifier une ligne en mettant (ou enlevant) l'apostrophe du
début ?

Merci pour vos idées.

Julie

8 réponses

Avatar
papou
Bonjour
Pour la macro voici un exemple qui permet de lire les lignes d'une macro
nommée "Testit" située dans un module "Module1" :
'ajouter une référence à Microsoft visualbasic for applications
extensibility 5.3
Dim DebLig As Long, FinLig As Long
Dim i As Long, ChaineTxtCode As String
With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
DebLig = .ProcStartLine("Testit", vbext_pk_Proc)
FinLig = .ProcCountLines("Testit", vbext_pk_Proc)
For i = DebLig To FinLig
ChaineTxtCode = .Lines(i, 1)
Next i
End With

Avec ça et le code que tu as trouvé, tu dois être en mesure d'aller modifier
une ligne.

Pour atteindre ThisWorkbook c'est pareil :
ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule

Cordialement
Pascal


"JulieH" a écrit dans le message de news:
%
Bonjour à toutes et tous,

Je souhaite aller dans le projet VBA et modifier des lignes de code par
Macro. Je sais que ce sujet a été souvent abordé et j'ai trouvé de
nombreux exemples sur le forum ou sur les différents sites, notamment le
code suivant qui fonctionne parfaitement :

With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
.DeleteLines 2
.InsertLines 2, "zaza"
End With

Ce qui me manque pour avancer :
- Comment atteindre directement une Macro et non le module ?
- Quel code pour atteindre le Workbook_Open ?
- Peut-on modifier une ligne en mettant (ou enlevant) l'apostrophe du
début ?

Merci pour vos idées.

Julie


Avatar
JulieH
Bonjour et merci pour ta réponse,

Je n'ai pas réussi à trouver l'extension 5.3. J'ai 1 "visualbasic for
applications" de coché. (Windows XP - EXCEL 2003)
"ajouter une référence à Microsoft visualbasic for applications
extensibility 5.3"

Pour le reste, je n'ai pas encore essayé (cause ci-dessus) mais je ne
vois pas exactement ou mettre mon code. Par ailleurs, je ne comprends
pas bien ce que fait la macro, je connais les lignes que j'ai à
modifier, je ne comprends pas pourquoi il faut que je les passe une à
une avec le Next i. N'y-a-t-il pas un moyen de sélectionner la Macro
"Testit" à l'intérieur du "Module1" ?

Merci d'avance

Julie


Bonjour
Pour la macro voici un exemple qui permet de lire les lignes d'une macro
nommée "Testit" située dans un module "Module1" :
'ajouter une référence à Microsoft visualbasic for applications
extensibility 5.3
Dim DebLig As Long, FinLig As Long
Dim i As Long, ChaineTxtCode As String
With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
DebLig = .ProcStartLine("Testit", vbext_pk_Proc)
FinLig = .ProcCountLines("Testit", vbext_pk_Proc)
For i = DebLig To FinLig
ChaineTxtCode = .Lines(i, 1)
Next i
End With

Avec ça et le code que tu as trouvé, tu dois être en mesure d'aller modifier
une ligne.

Pour atteindre ThisWorkbook c'est pareil :
ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule

Cordialement
Pascal


"JulieH" a écrit dans le message de news:
%
Bonjour à toutes et tous,

Je souhaite aller dans le projet VBA et modifier des lignes de code par
Macro. Je sais que ce sujet a été souvent abordé et j'ai trouvé de
nombreux exemples sur le forum ou sur les différents sites, notamment le
code suivant qui fonctionne parfaitement :

With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
.DeleteLines 2
.InsertLines 2, "zaza"
End With

Ce qui me manque pour avancer :
- Comment atteindre directement une Macro et non le module ?
- Quel code pour atteindre le Workbook_Open ?
- Peut-on modifier une ligne en mettant (ou enlevant) l'apostrophe du
début ?

Merci pour vos idées.

Julie






Avatar
papou
Pour la référence, celle-ci est située plus bas dans la liste déroulante du
menu Otuils Références.
Sinon, voici un exemple pour ce que tu veux faire.
Ici, on va chercher la 2ème ligne de la macro "Testit" pour la supprimer et
la remplacer par autre chose.

Dim LigneAModifier As Long
With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
LigneAModifier = .ProcBodyLine("Testit", vbext_pk_Proc) + 1
.DeleteLines LigneAModifier
.InsertLines LigneAModifier, "'Ton instruction ici"
End With

Cordialement
Pascal

"JulieH" a écrit dans le message de news:

Bonjour et merci pour ta réponse,

Je n'ai pas réussi à trouver l'extension 5.3. J'ai 1 "visualbasic for
applications" de coché. (Windows XP - EXCEL 2003)
"ajouter une référence à Microsoft visualbasic for applications
extensibility 5.3"

Pour le reste, je n'ai pas encore essayé (cause ci-dessus) mais je ne vois
pas exactement ou mettre mon code. Par ailleurs, je ne comprends pas bien
ce que fait la macro, je connais les lignes que j'ai à modifier, je ne
comprends pas pourquoi il faut que je les passe une à une avec le Next i.
N'y-a-t-il pas un moyen de sélectionner la Macro "Testit" à l'intérieur du
"Module1" ?

Merci d'avance

Julie


Bonjour
Pour la macro voici un exemple qui permet de lire les lignes d'une macro
nommée "Testit" située dans un module "Module1" :
'ajouter une référence à Microsoft visualbasic for applications
extensibility 5.3
Dim DebLig As Long, FinLig As Long
Dim i As Long, ChaineTxtCode As String
With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
DebLig = .ProcStartLine("Testit", vbext_pk_Proc)
FinLig = .ProcCountLines("Testit", vbext_pk_Proc)
For i = DebLig To FinLig
ChaineTxtCode = .Lines(i, 1)
Next i
End With

Avec ça et le code que tu as trouvé, tu dois être en mesure d'aller
modifier une ligne.

Pour atteindre ThisWorkbook c'est pareil :
ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule

Cordialement
Pascal


"JulieH" a écrit dans le message de
news: %
Bonjour à toutes et tous,

Je souhaite aller dans le projet VBA et modifier des lignes de code par
Macro. Je sais que ce sujet a été souvent abordé et j'ai trouvé de
nombreux exemples sur le forum ou sur les différents sites, notamment le
code suivant qui fonctionne parfaitement :

With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
.DeleteLines 2
.InsertLines 2, "zaza"
End With

Ce qui me manque pour avancer :
- Comment atteindre directement une Macro et non le module ?
- Quel code pour atteindre le Workbook_Open ?
- Peut-on modifier une ligne en mettant (ou enlevant) l'apostrophe du
début ?

Merci pour vos idées.

Julie







Avatar
MichDenis
A ) Tu peux éviter de charger la référence
" Microsoft visualbasic for applications extensibility 5.3"
seulement en prenant soin de remplacer dans ton code
la constante texte : "vbext_pk_Proc" par sa valeur numérique 0

B ) Tu as un problème avec ta boucle :
For i = DebLig To FinLig

elle devrait se lire :
For i = DebLig To FinLig + DebLig




"papou" <cpapoupasbon@çanonpluslaposte.net> a écrit dans le message de news:
%
Bonjour
Pour la macro voici un exemple qui permet de lire les lignes d'une macro
nommée "Testit" située dans un module "Module1" :
'ajouter une référence à Microsoft visualbasic for applications
extensibility 5.3
Dim DebLig As Long, FinLig As Long
Dim i As Long, ChaineTxtCode As String
With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
DebLig = .ProcStartLine("Testit", vbext_pk_Proc)
FinLig = .ProcCountLines("Testit", vbext_pk_Proc)
For i = DebLig To FinLig
ChaineTxtCode = .Lines(i, 1)
Next i
End With

Avec ça et le code que tu as trouvé, tu dois être en mesure d'aller modifier
une ligne.

Pour atteindre ThisWorkbook c'est pareil :
ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule

Cordialement
Pascal


"JulieH" a écrit dans le message de news:
%
Bonjour à toutes et tous,

Je souhaite aller dans le projet VBA et modifier des lignes de code par
Macro. Je sais que ce sujet a été souvent abordé et j'ai trouvé de
nombreux exemples sur le forum ou sur les différents sites, notamment le
code suivant qui fonctionne parfaitement :

With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
.DeleteLines 2
.InsertLines 2, "zaza"
End With

Ce qui me manque pour avancer :
- Comment atteindre directement une Macro et non le module ?
- Quel code pour atteindre le Workbook_Open ?
- Peut-on modifier une ligne en mettant (ou enlevant) l'apostrophe du
début ?

Merci pour vos idées.

Julie


Avatar
JulieH
Merci à tous les deux pour ces précisions.

Avez-vous une idée pour seulement mettre une apostrophe (ou l'enlever)
au début d'une ligne de la macro (par macro évidemment) ou bien cela
n'est-il pas possible ?

Merci de vos réponses même négatives.

Julie

A ) Tu peux éviter de charger la référence
" Microsoft visualbasic for applications extensibility 5.3"
seulement en prenant soin de remplacer dans ton code
la constante texte : "vbext_pk_Proc" par sa valeur numérique 0

B ) Tu as un problème avec ta boucle :
For i = DebLig To FinLig

elle devrait se lire :
For i = DebLig To FinLig + DebLig




"papou" <cpapoupasbon@çanonpluslaposte.net> a écrit dans le message de news:
%
Bonjour
Pour la macro voici un exemple qui permet de lire les lignes d'une macro
nommée "Testit" située dans un module "Module1" :
'ajouter une référence à Microsoft visualbasic for applications
extensibility 5.3
Dim DebLig As Long, FinLig As Long
Dim i As Long, ChaineTxtCode As String
With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
DebLig = .ProcStartLine("Testit", vbext_pk_Proc)
FinLig = .ProcCountLines("Testit", vbext_pk_Proc)
For i = DebLig To FinLig
ChaineTxtCode = .Lines(i, 1)
Next i
End With

Avec ça et le code que tu as trouvé, tu dois être en mesure d'aller modifier
une ligne.

Pour atteindre ThisWorkbook c'est pareil :
ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule

Cordialement
Pascal


"JulieH" a écrit dans le message de news:
%
Bonjour à toutes et tous,

Je souhaite aller dans le projet VBA et modifier des lignes de code par
Macro. Je sais que ce sujet a été souvent abordé et j'ai trouvé de
nombreux exemples sur le forum ou sur les différents sites, notamment le
code suivant qui fonctionne parfaitement :

With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
.DeleteLines 2
.InsertLines 2, "zaza"
End With

Ce qui me manque pour avancer :
- Comment atteindre directement une Macro et non le module ?
- Quel code pour atteindre le Workbook_Open ?
- Peut-on modifier une ligne en mettant (ou enlevant) l'apostrophe du
début ?

Merci pour vos idées.

Julie







Avatar
MichDenis
| Merci de vos réponses même négatives.

Apporter une correction à la procédure reçue, est-ce négatif ?


Voici comme faire pour désactiver toute une procédure en utilisant le " ' "
en début de ligne.
Nul besoin d'ajouter une quelconque bibliothèque à ton classeur pour
exécuter cette macro

'---------------------------
Sub test()

'Appel de la macro "MettreEnCommentaire"
'Respecte les arguments de la procédure :
'Nom du classeur : ThisWorkbook.Name ou Workbooks("MonClasseur.xls"
'Nom du module où se trouve la macro : "Module1"
'Nom de la macro à désactiver : "Macro1"

MettreEnCommentaire ThisWorkbook.Name, "module1", "Macro1"

End Sub
'---------------------------

'---------------------------
Sub MettreEnCommentaire(NomDuClasseur As String, _
NomDuModule As String, _
NomDeLaSub As String)
Dim Debut As Integer, Fin As Long, T As String

On Error Resume Next
With Workbooks(NomDuClasseur)
With .VBProject.VBComponents(NomDuModule).CodeModule
Debut = .ProcStartLine(NomDeLaSub, 0)
Fin = .ProcCountLines(NomDeLaSub, 0) + Debut
For A = Debut To Fin
If .Lines(A, 1) <> "" Then
T = "'" & .Lines(A, 1)
.ReplaceLine (A), T
End If
Next
End With
End With

End Sub
'---------------------------
Avatar
JulieH
Merci pour le travail de la nuit, je vais essayer cela ce matin.

Julie

| Merci de vos réponses même négatives.

Apporter une correction à la procédure reçue, est-ce négatif ?


Voici comme faire pour désactiver toute une procédure en utilisant le " ' "
en début de ligne.
Nul besoin d'ajouter une quelconque bibliothèque à ton classeur pour
exécuter cette macro

'---------------------------
Sub test()

'Appel de la macro "MettreEnCommentaire"
'Respecte les arguments de la procédure :
'Nom du classeur : ThisWorkbook.Name ou Workbooks("MonClasseur.xls"
'Nom du module où se trouve la macro : "Module1"
'Nom de la macro à désactiver : "Macro1"

MettreEnCommentaire ThisWorkbook.Name, "module1", "Macro1"

End Sub
'---------------------------

'---------------------------
Sub MettreEnCommentaire(NomDuClasseur As String, _
NomDuModule As String, _
NomDeLaSub As String)
Dim Debut As Integer, Fin As Long, T As String

On Error Resume Next
With Workbooks(NomDuClasseur)
With .VBProject.VBComponents(NomDuModule).CodeModule
Debut = .ProcStartLine(NomDeLaSub, 0)
Fin = .ProcCountLines(NomDeLaSub, 0) + Debut
For A = Debut To Fin
If .Lines(A, 1) <> "" Then
T = "'" & .Lines(A, 1)
.ReplaceLine (A), T
End If
Next
End With
End With

End Sub
'---------------------------




Avatar
jps
arrête, roméo.....
jps

"MichDenis" a écrit dans le message de news:

| Merci de vos réponses même négatives.

Apporter une correction à la procédure reçue, est-ce négatif ?