Sur XL 2000, je souhaiterais créer une macro, appelé par un bouton
personnalisé, qui me permettrait d'insérer une procédure évènement
BeforePrint dans la feuille active.
J'ai récupéré et adapté les bouts de code suivant sur le site Chip
Pearson mais je coince lorsque je veux tester si cette procédure
n'existe pas déjà dans le classeur actif.
L'un d'entre vous pourrait-il me dire où se trouve le problème ?
Merci d'avance
Philippe
Sub InsertBeforePrint()
If ProcedureExists("WorkBook_BeforePrint", "ThisWorkBook") = True
Then Exit Sub
Dim StartLine As Long
With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
StartLine = .CreateEventProc("BeforePrint", "Workbook") + 1
.InsertLines StartLine, "ActiveSheet.PageSetup.RightFooter =
""&6"" & ActiveWorkbook.FullName"
End With
End Sub
Function ProcedureExists(ProcedureName As String, ModuleName As String)
As Boolean
On Error Resume Next
If ModuleExists(ModuleName) = True Then
ProcedureExists = ThisWorkbook.VBProject.VBComponents(ModuleName) _
.CodeModule.ProcStartLine(ProcedureName,
vbext_pk_Proc) <> 0
End If
End Function
Function ModuleExists(ModuleName As String) As Boolean
On Error Resume Next
ModuleExists =
Len(ThisWorkbook.VBProject.VBComponents(ModuleName).Name) <> 0
End Function
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
Pierre Fauconnier
Bonsoir
Dans la fonction qui teste l'existence de la procédure ( ProcedureExists ) , remplace la constante vbext_pk_proc par 0 et ton code fonctionnera convenablement
Cela convient-il?
-- Pierre Fauconnier () Les sept laids tuent ( Lewis Carol ) Remplacez nospam.nospam par pfi.be pour répondre. Merci
"Philippe" a écrit dans le message de news:
Bonsoir à tous,
Sur XL 2000, je souhaiterais créer une macro, appelé par un bouton personnalisé, qui me permettrait d'insérer une procédure évènement BeforePrint dans la feuille active.
J'ai récupéré et adapté les bouts de code suivant sur le site Chip Pearson mais je coince lorsque je veux tester si cette procédure n'existe pas déjà dans le classeur actif.
L'un d'entre vous pourrait-il me dire où se trouve le problème ?
Merci d'avance
Philippe
Sub InsertBeforePrint()
If ProcedureExists("WorkBook_BeforePrint", "ThisWorkBook") = True Then Exit Sub Dim StartLine As Long With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule StartLine = .CreateEventProc("BeforePrint", "Workbook") + 1 .InsertLines StartLine, "ActiveSheet.PageSetup.RightFooter > ""&6"" & ActiveWorkbook.FullName" End With
End Sub
Function ProcedureExists(ProcedureName As String, ModuleName As String) As Boolean On Error Resume Next If ModuleExists(ModuleName) = True Then ProcedureExists = ThisWorkbook.VBProject.VBComponents(ModuleName) _
.CodeModule.ProcStartLine(ProcedureName, vbext_pk_Proc) <> 0 End If End Function
Function ModuleExists(ModuleName As String) As Boolean On Error Resume Next ModuleExists > Len(ThisWorkbook.VBProject.VBComponents(ModuleName).Name) <> 0 End Function
Bonsoir
Dans la fonction qui teste l'existence de la procédure ( ProcedureExists ) ,
remplace la constante
vbext_pk_proc par 0 et ton code fonctionnera convenablement
Cela convient-il?
--
Pierre Fauconnier (pierre.fauconnier@nospam.nospam)
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci
"Philippe" <ph.berard@wanadoo.fr> a écrit dans le message de
news:ehXOoylpEHA.1160@tk2msftngp13.phx.gbl...
Bonsoir à tous,
Sur XL 2000, je souhaiterais créer une macro, appelé par un bouton
personnalisé, qui me permettrait d'insérer une procédure évènement
BeforePrint dans la feuille active.
J'ai récupéré et adapté les bouts de code suivant sur le site Chip
Pearson mais je coince lorsque je veux tester si cette procédure
n'existe pas déjà dans le classeur actif.
L'un d'entre vous pourrait-il me dire où se trouve le problème ?
Merci d'avance
Philippe
Sub InsertBeforePrint()
If ProcedureExists("WorkBook_BeforePrint", "ThisWorkBook") = True
Then Exit Sub
Dim StartLine As Long
With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
StartLine = .CreateEventProc("BeforePrint", "Workbook") + 1
.InsertLines StartLine, "ActiveSheet.PageSetup.RightFooter > ""&6"" & ActiveWorkbook.FullName"
End With
End Sub
Function ProcedureExists(ProcedureName As String, ModuleName As String)
As Boolean
On Error Resume Next
If ModuleExists(ModuleName) = True Then
ProcedureExists = ThisWorkbook.VBProject.VBComponents(ModuleName)
_
.CodeModule.ProcStartLine(ProcedureName,
vbext_pk_Proc) <> 0
End If
End Function
Function ModuleExists(ModuleName As String) As Boolean
On Error Resume Next
ModuleExists > Len(ThisWorkbook.VBProject.VBComponents(ModuleName).Name) <> 0
End Function
Dans la fonction qui teste l'existence de la procédure ( ProcedureExists ) , remplace la constante vbext_pk_proc par 0 et ton code fonctionnera convenablement
Cela convient-il?
-- Pierre Fauconnier () Les sept laids tuent ( Lewis Carol ) Remplacez nospam.nospam par pfi.be pour répondre. Merci
"Philippe" a écrit dans le message de news:
Bonsoir à tous,
Sur XL 2000, je souhaiterais créer une macro, appelé par un bouton personnalisé, qui me permettrait d'insérer une procédure évènement BeforePrint dans la feuille active.
J'ai récupéré et adapté les bouts de code suivant sur le site Chip Pearson mais je coince lorsque je veux tester si cette procédure n'existe pas déjà dans le classeur actif.
L'un d'entre vous pourrait-il me dire où se trouve le problème ?
Merci d'avance
Philippe
Sub InsertBeforePrint()
If ProcedureExists("WorkBook_BeforePrint", "ThisWorkBook") = True Then Exit Sub Dim StartLine As Long With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule StartLine = .CreateEventProc("BeforePrint", "Workbook") + 1 .InsertLines StartLine, "ActiveSheet.PageSetup.RightFooter > ""&6"" & ActiveWorkbook.FullName" End With
End Sub
Function ProcedureExists(ProcedureName As String, ModuleName As String) As Boolean On Error Resume Next If ModuleExists(ModuleName) = True Then ProcedureExists = ThisWorkbook.VBProject.VBComponents(ModuleName) _
.CodeModule.ProcStartLine(ProcedureName, vbext_pk_Proc) <> 0 End If End Function
Function ModuleExists(ModuleName As String) As Boolean On Error Resume Next ModuleExists > Len(ThisWorkbook.VBProject.VBComponents(ModuleName).Name) <> 0 End Function
Philippe
Bonsoir
Dans la fonction qui teste l'existence de la procédure ( ProcedureExists ) , remplace la constante vbext_pk_proc par 0 et ton code fonctionnera convenablement
Cela convient-il?
Bonsoir,
Malheureusement le résultat est identique, un deuxième évènement est crée, ce qui génère un message d'erreur à l'impression "Nom Ambigu ...).
Philippe
Bonsoir
Dans la fonction qui teste l'existence de la procédure ( ProcedureExists ) ,
remplace la constante
vbext_pk_proc par 0 et ton code fonctionnera convenablement
Cela convient-il?
Bonsoir,
Malheureusement le résultat est identique, un deuxième évènement est
crée, ce qui génère un message d'erreur à l'impression "Nom Ambigu ...).
Dans la fonction qui teste l'existence de la procédure ( ProcedureExists ) , remplace la constante vbext_pk_proc par 0 et ton code fonctionnera convenablement
Cela convient-il?
Bonsoir,
Malheureusement le résultat est identique, un deuxième évènement est crée, ce qui génère un message d'erreur à l'impression "Nom Ambigu ...).
Philippe
Pierre Fauconnier
Etonnant, pas chez moi... As-tu essayé en méthode pas à pas?
Pierre "Philippe" a écrit dans le message de news:%
Bonsoir
Dans la fonction qui teste l'existence de la procédure ( ProcedureExists ) ,
remplace la constante vbext_pk_proc par 0 et ton code fonctionnera convenablement
Cela convient-il?
Bonsoir,
Malheureusement le résultat est identique, un deuxième évènement est crée, ce qui génère un message d'erreur à l'impression "Nom Ambigu ...).
Philippe
Etonnant, pas chez moi...
As-tu essayé en méthode pas à pas?
Pierre
"Philippe" <ph.berard@wanadoo.fr> a écrit dans le message de
news:%23JwaPKmpEHA.3988@tk2msftngp13.phx.gbl...
Bonsoir
Dans la fonction qui teste l'existence de la procédure (
ProcedureExists ) ,
remplace la constante
vbext_pk_proc par 0 et ton code fonctionnera convenablement
Cela convient-il?
Bonsoir,
Malheureusement le résultat est identique, un deuxième évènement est
crée, ce qui génère un message d'erreur à l'impression "Nom Ambigu ...).
Etonnant, pas chez moi... As-tu essayé en méthode pas à pas?
Pierre "Philippe" a écrit dans le message de news:%
Bonsoir
Dans la fonction qui teste l'existence de la procédure ( ProcedureExists ) ,
remplace la constante vbext_pk_proc par 0 et ton code fonctionnera convenablement
Cela convient-il?
Bonsoir,
Malheureusement le résultat est identique, un deuxième évènement est crée, ce qui génère un message d'erreur à l'impression "Nom Ambigu ...).
Philippe
Philippe
Etonnant, pas chez moi... As-tu essayé en méthode pas à pas?
Pierre
Bonjour,
La macro, telle que je l'ai écrite ou modifiée valide bien l'existence du module ("ThisWorkBook") mais ne détecte pas la présence de l'évènement "Workbook_BeforePrint".
Faut-il compléter le nom par "(Cancel As Boolean)" ?
Philippe
Etonnant, pas chez moi...
As-tu essayé en méthode pas à pas?
Pierre
Bonjour,
La macro, telle que je l'ai écrite ou modifiée valide bien l'existence
du module ("ThisWorkBook") mais ne détecte pas la présence de
l'évènement "Workbook_BeforePrint".
Faut-il compléter le nom par "(Cancel As Boolean)" ?
Etonnant, pas chez moi... As-tu essayé en méthode pas à pas?
Pierre
Bonjour,
La macro, telle que je l'ai écrite ou modifiée valide bien l'existence du module ("ThisWorkBook") mais ne détecte pas la présence de l'évènement "Workbook_BeforePrint".
Faut-il compléter le nom par "(Cancel As Boolean)" ?
Philippe
Frédéric Sigonneau
Bonsoir,
3 macros pour trouver si une procédure existe ou non dans un classeur :
L'une de ces approches peut peut-être t'aider à résoudre ton problème..
FS --- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://frederic.sigonneau.free.fr Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir à tous,
Sur XL 2000, je souhaiterais créer une macro, appelé par un bouton personnalisé, qui me permettrait d'insérer une procédure évènement BeforePrint dans la feuille active.
J'ai récupéré et adapté les bouts de code suivant sur le site Chip Pearson mais je coince lorsque je veux tester si cette procédure n'existe pas déjà dans le classeur actif.
L'un d'entre vous pourrait-il me dire où se trouve le problème ?
Merci d'avance
Philippe
Sub InsertBeforePrint()
If ProcedureExists("WorkBook_BeforePrint", "ThisWorkBook") = True Then Exit Sub Dim StartLine As Long With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule StartLine = .CreateEventProc("BeforePrint", "Workbook") + 1 .InsertLines StartLine, "ActiveSheet.PageSetup.RightFooter = ""&6"" & ActiveWorkbook.FullName" End With
End Sub
Function ProcedureExists(ProcedureName As String, ModuleName As String) As Boolean On Error Resume Next If ModuleExists(ModuleName) = True Then ProcedureExists = ThisWorkbook.VBProject.VBComponents(ModuleName) _ .CodeModule.ProcStartLine(ProcedureName, vbext_pk_Proc) <> 0 End If End Function
Function ModuleExists(ModuleName As String) As Boolean On Error Resume Next ModuleExists = Len(ThisWorkbook.VBProject.VBComponents(ModuleName).Name) <> 0 End Function
Bonsoir,
3 macros pour trouver si une procédure existe ou non dans un classeur :
L'une de ces approches peut peut-être t'aider à résoudre ton problème..
FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir à tous,
Sur XL 2000, je souhaiterais créer une macro, appelé par un bouton
personnalisé, qui me permettrait d'insérer une procédure évènement
BeforePrint dans la feuille active.
J'ai récupéré et adapté les bouts de code suivant sur le site Chip
Pearson mais je coince lorsque je veux tester si cette procédure
n'existe pas déjà dans le classeur actif.
L'un d'entre vous pourrait-il me dire où se trouve le problème ?
Merci d'avance
Philippe
Sub InsertBeforePrint()
If ProcedureExists("WorkBook_BeforePrint", "ThisWorkBook") = True
Then Exit Sub
Dim StartLine As Long
With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
StartLine = .CreateEventProc("BeforePrint", "Workbook") + 1
.InsertLines StartLine, "ActiveSheet.PageSetup.RightFooter =
""&6"" & ActiveWorkbook.FullName"
End With
End Sub
Function ProcedureExists(ProcedureName As String, ModuleName As String)
As Boolean
On Error Resume Next
If ModuleExists(ModuleName) = True Then
ProcedureExists = ThisWorkbook.VBProject.VBComponents(ModuleName) _
.CodeModule.ProcStartLine(ProcedureName,
vbext_pk_Proc) <> 0
End If
End Function
Function ModuleExists(ModuleName As String) As Boolean
On Error Resume Next
ModuleExists =
Len(ThisWorkbook.VBProject.VBComponents(ModuleName).Name) <> 0
End Function
L'une de ces approches peut peut-être t'aider à résoudre ton problème..
FS --- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://frederic.sigonneau.free.fr Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir à tous,
Sur XL 2000, je souhaiterais créer une macro, appelé par un bouton personnalisé, qui me permettrait d'insérer une procédure évènement BeforePrint dans la feuille active.
J'ai récupéré et adapté les bouts de code suivant sur le site Chip Pearson mais je coince lorsque je veux tester si cette procédure n'existe pas déjà dans le classeur actif.
L'un d'entre vous pourrait-il me dire où se trouve le problème ?
Merci d'avance
Philippe
Sub InsertBeforePrint()
If ProcedureExists("WorkBook_BeforePrint", "ThisWorkBook") = True Then Exit Sub Dim StartLine As Long With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule StartLine = .CreateEventProc("BeforePrint", "Workbook") + 1 .InsertLines StartLine, "ActiveSheet.PageSetup.RightFooter = ""&6"" & ActiveWorkbook.FullName" End With
End Sub
Function ProcedureExists(ProcedureName As String, ModuleName As String) As Boolean On Error Resume Next If ModuleExists(ModuleName) = True Then ProcedureExists = ThisWorkbook.VBProject.VBComponents(ModuleName) _ .CodeModule.ProcStartLine(ProcedureName, vbext_pk_Proc) <> 0 End If End Function
Function ModuleExists(ModuleName As String) As Boolean On Error Resume Next ModuleExists = Len(ThisWorkbook.VBProject.VBComponents(ModuleName).Name) <> 0 End Function