À partir de la barre de menu / fichier / imprimer / À partir de la fenêtre "Imprimer" qui est ouverte
Sélectionne "Module en cours"
Et cela devrait imprimer tout le code.
Salutations!
P.S. Tu serais gentil si tu prenais le temps de me traduire tout cela dans une belle procédure (macro)
;-))
"Zoltan" a écrit dans le message de news:O% Salut à tous,
y a t-il une procédure pour imprimer toutes les macros contenues dans un classeur en une seule fois?
merci de vos réponses -- http://perso.wanadoo.fr/aquabidule/ http://www.rouhling.net http://www.aquariumdudiscus.fr
michdenis
Bonjour Zoltan,
Et si tu veux une petite macro pour afficher la fenêtre "imprimer le code"
'------------------- Sub AfficherBoîteImpressionDuCode()
Dim Bouton As CommandBarControl ActiveWorkbook.VBProject.VBE.MainWindow.Visible = True Set Bouton = Application.VBE.CommandBars(1).Controls(1).Controls(9) Bouton.Execute Set Bouton = Nothing
End Sub '-------------------
Salutations!
"Zoltan" a écrit dans le message de news:O% Salut à tous,
y a t-il une procédure pour imprimer toutes les macros contenues dans un classeur en une seule fois?
merci de vos réponses -- http://perso.wanadoo.fr/aquabidule/ http://www.rouhling.net http://www.aquariumdudiscus.fr
Bonjour Zoltan,
Et si tu veux une petite macro pour afficher la fenêtre "imprimer le code"
'-------------------
Sub AfficherBoîteImpressionDuCode()
Dim Bouton As CommandBarControl
ActiveWorkbook.VBProject.VBE.MainWindow.Visible = True
Set Bouton = Application.VBE.CommandBars(1).Controls(1).Controls(9)
Bouton.Execute
Set Bouton = Nothing
End Sub
'-------------------
Salutations!
"Zoltan" <zoltan@wanadoo.fr> a écrit dans le message de news:O%23SIrmWaDHA.2572@TK2MSFTNGP12.phx.gbl...
Salut à tous,
y a t-il une procédure pour imprimer toutes les macros
contenues dans un classeur en une seule fois?
merci de vos réponses
--
http://perso.wanadoo.fr/aquabidule/
http://www.rouhling.net
http://www.aquariumdudiscus.fr
Et si tu veux une petite macro pour afficher la fenêtre "imprimer le code"
'------------------- Sub AfficherBoîteImpressionDuCode()
Dim Bouton As CommandBarControl ActiveWorkbook.VBProject.VBE.MainWindow.Visible = True Set Bouton = Application.VBE.CommandBars(1).Controls(1).Controls(9) Bouton.Execute Set Bouton = Nothing
End Sub '-------------------
Salutations!
"Zoltan" a écrit dans le message de news:O% Salut à tous,
y a t-il une procédure pour imprimer toutes les macros contenues dans un classeur en une seule fois?
merci de vos réponses -- http://perso.wanadoo.fr/aquabidule/ http://www.rouhling.net http://www.aquariumdudiscus.fr
michdenis
Bonjour Zoltan,
Une dernière, pour n'imprimer qu'un module d'un classeur donné, une procédure dérivée de la procédure générale de tantôt.
Lance la procédure suivante : Sub ImprimerUnModule() en prenant soin de définir le nom du classeur et le nom du module à imprimer.
P.S. Ce type de procédure ne fonctionne pas si le projet est verrouillé . Le Classeur doit obligatoirement être ouvert.
Déclaration API - haut d'un module standard : '--------------------------------------------------- Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ (ByVal hwnd As Long, ByVal lpOperation _ As String, ByVal lpFile As String, ByVal lpParameters _ As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const SW_SHOW = 5
'--------------------------------------------------- Sub ImprimerUnModule()
Dim Classeur As String, LeModule As String
Classeur = ThisWorkbook.Name 'A déterminer LeModule = "module1" 'A déterminer ImprimerLeCodeUnModule Classeur, "Module1"
End Sub
'--------------------------------------------------- Sub ImprimerLeCodeUnModule(NomClasseur As String, NomModule As String)
Dim VBComp As Object Dim Texte As String, Ficher As String
fichier = "C:ImprimerCode.txt"
Set VBComp = Workbooks(NomClasseur).VBProject.VBComponents(NomModule) Open fichier For Output As #1 With VBComp.CodeModule If .CountOfLines <> 0 Then Texte = vbCrLf & vbCrLf & vbCrLf Texte = Texte & "*******Nom du Module : " & .Name _ & "*******" & vbCrLf & vbCrLf & vbCrLf Texte = Texte & .Lines(1, .CountOfLines) Texte = Texte & vbCrLf & vbCrLf Print #1, Texte End If End With Close #1
'Imprimer le fichier abc.txt sans voir le fichier à l'écran. ShellExecute hwnd, "print", fichier, "", "", SW_HIDE
'Arrêt pour charger le buffer de l'imprimante 'La valeur de 5 secondes est aléatoire... 'cela pourrait être moins. Application.Wait (Now + TimeValue("0:00:05"))
'détruit le fichier sans possibilité de récupération Kill fichier End Sub '---------------------------------------------------
Salutations !
"Zoltan" a écrit dans le message de news:O% Salut à tous,
y a t-il une procédure pour imprimer toutes les macros contenues dans un classeur en une seule fois?
merci de vos réponses -- http://perso.wanadoo.fr/aquabidule/ http://www.rouhling.net http://www.aquariumdudiscus.fr
Bonjour Zoltan,
Une dernière, pour n'imprimer qu'un module d'un classeur donné, une procédure dérivée de la procédure générale de tantôt.
Lance la procédure suivante : Sub ImprimerUnModule() en prenant soin de définir le nom du classeur et le nom du module à
imprimer.
P.S. Ce type de procédure ne fonctionne pas si le projet est verrouillé .
Le Classeur doit obligatoirement être ouvert.
Déclaration API - haut d'un module standard :
'---------------------------------------------------
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation _
As String, ByVal lpFile As String, ByVal lpParameters _
As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const SW_SHOW = 5
'---------------------------------------------------
Sub ImprimerUnModule()
Dim Classeur As String, LeModule As String
Classeur = ThisWorkbook.Name 'A déterminer
LeModule = "module1" 'A déterminer
ImprimerLeCodeUnModule Classeur, "Module1"
End Sub
'---------------------------------------------------
Sub ImprimerLeCodeUnModule(NomClasseur As String, NomModule As String)
Dim VBComp As Object
Dim Texte As String, Ficher As String
fichier = "C:ImprimerCode.txt"
Set VBComp = Workbooks(NomClasseur).VBProject.VBComponents(NomModule)
Open fichier For Output As #1
With VBComp.CodeModule
If .CountOfLines <> 0 Then
Texte = vbCrLf & vbCrLf & vbCrLf
Texte = Texte & "*******Nom du Module : " & .Name _
& "*******" & vbCrLf & vbCrLf & vbCrLf
Texte = Texte & .Lines(1, .CountOfLines)
Texte = Texte & vbCrLf & vbCrLf
Print #1, Texte
End If
End With
Close #1
'Imprimer le fichier abc.txt sans voir le fichier à l'écran.
ShellExecute hwnd, "print", fichier, "", "", SW_HIDE
'Arrêt pour charger le buffer de l'imprimante
'La valeur de 5 secondes est aléatoire...
'cela pourrait être moins.
Application.Wait (Now + TimeValue("0:00:05"))
'détruit le fichier sans possibilité de récupération
Kill fichier
End Sub
'---------------------------------------------------
Salutations !
"Zoltan" <zoltan@wanadoo.fr> a écrit dans le message de news:O%23SIrmWaDHA.2572@TK2MSFTNGP12.phx.gbl...
Salut à tous,
y a t-il une procédure pour imprimer toutes les macros
contenues dans un classeur en une seule fois?
merci de vos réponses
--
http://perso.wanadoo.fr/aquabidule/
http://www.rouhling.net
http://www.aquariumdudiscus.fr
Une dernière, pour n'imprimer qu'un module d'un classeur donné, une procédure dérivée de la procédure générale de tantôt.
Lance la procédure suivante : Sub ImprimerUnModule() en prenant soin de définir le nom du classeur et le nom du module à imprimer.
P.S. Ce type de procédure ne fonctionne pas si le projet est verrouillé . Le Classeur doit obligatoirement être ouvert.
Déclaration API - haut d'un module standard : '--------------------------------------------------- Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ (ByVal hwnd As Long, ByVal lpOperation _ As String, ByVal lpFile As String, ByVal lpParameters _ As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Const SW_SHOW = 5
'--------------------------------------------------- Sub ImprimerUnModule()
Dim Classeur As String, LeModule As String
Classeur = ThisWorkbook.Name 'A déterminer LeModule = "module1" 'A déterminer ImprimerLeCodeUnModule Classeur, "Module1"
End Sub
'--------------------------------------------------- Sub ImprimerLeCodeUnModule(NomClasseur As String, NomModule As String)
Dim VBComp As Object Dim Texte As String, Ficher As String
fichier = "C:ImprimerCode.txt"
Set VBComp = Workbooks(NomClasseur).VBProject.VBComponents(NomModule) Open fichier For Output As #1 With VBComp.CodeModule If .CountOfLines <> 0 Then Texte = vbCrLf & vbCrLf & vbCrLf Texte = Texte & "*******Nom du Module : " & .Name _ & "*******" & vbCrLf & vbCrLf & vbCrLf Texte = Texte & .Lines(1, .CountOfLines) Texte = Texte & vbCrLf & vbCrLf Print #1, Texte End If End With Close #1
'Imprimer le fichier abc.txt sans voir le fichier à l'écran. ShellExecute hwnd, "print", fichier, "", "", SW_HIDE
'Arrêt pour charger le buffer de l'imprimante 'La valeur de 5 secondes est aléatoire... 'cela pourrait être moins. Application.Wait (Now + TimeValue("0:00:05"))
'détruit le fichier sans possibilité de récupération Kill fichier End Sub '---------------------------------------------------
Salutations !
"Zoltan" a écrit dans le message de news:O% Salut à tous,
y a t-il une procédure pour imprimer toutes les macros contenues dans un classeur en une seule fois?
merci de vos réponses -- http://perso.wanadoo.fr/aquabidule/ http://www.rouhling.net http://www.aquariumdudiscus.fr
michdenis
Bonjour Zoltan,
Et pour terminer ....
En renseignant les 3 variables de cette procédure :"Sub ImprimerUneProcédure()", tu peux imprimer la procédure d'un classeur ouvert de ton choix.
'Déclaration de la variable dans le haut du module Dim CeModule As String
'--------------------------------------- Sub ImprimerUneProcédure()
'Important : 'La seule restriction, ne pas insérer cette procédure 'dans le même module que la procédure à imprimer
Dim LaProcedure As String, LeClasseur As String Dim LeModule As String, A As Object
'******Définir ces 3 variables suivantes******
'Nom du classeur contenant la procédure LeClasseur = ThisWorkbook.Name
'Nom de la procédure à imprimer 'Attention à la casse ... LaProcedure = "ImprimerLeCode"
'nom du module où est écrite cette procédure 'Attention à la casse CeModule = "Module2" '**********************************************
'La variable module est déterminé par la fonction Set A = fnThisVBComponent(ThisWorkbook, LaProcedure) If Not A Is Nothing Then LeModule = A.Name Else MsgBox "Procédure non trouvée." _ , vbInformation + vbOKOnly, "Opération annulée" Exit Sub Set A = Nothing End If
ImprimerToutLeCode LeClasseur, LeModule, LaProcedure Set A = Nothing
End Sub
'--------------------------------------- Function fnThisVBComponent(oBk As Workbook, _ ByVal sUniqueString As String) As Object 'Original crée par Stephen Bullen 'et adapter par moi ... Dim oVBC As Object
'Loop through the VBComponents in the 'given workbook's VBProject For Each oVBC In oBk.VBProject.VBComponents
'Using it's code module With oVBC.CodeModule
'See if we can find the unique string If .Find(sUniqueString, 1, 1, .CountOfLines, _ 1000, True, True, False) Then If oBk.Name = ThisWorkbook.Name Then If oVBC.Name <> CeModule Then 'Found it, so return the 'VBComponent where it was found Set fnThisVBComponent = oVBC Exit For End If End If End If End With Next
End Function
'--------------------------------------- Sub ImprimerToutLeCode(NomClasseur As String, _ LeModule As String, Procedure As String)
Dim VBComp As Object Dim Texte As String, Ficher As String
Fichier = "C:ImprimerCode.txt"
Set VBComp = Workbooks(NomClasseur).VBProject. _ VBComponents(LeModule).CodeModule 'ligne du début de la procédure Ligne = VBComp.ProcBodyLine(Procedure, vbext_pk_Proc) 'Nombre de ligne de la procédure Nbligne = VBComp.ProcCountLines(Procedure, vbext_pk_Proc)
Open Fichier For Output As #1 With VBComp If .CountOfLines <> 0 Then Texte = vbCrLf & vbCrLf & vbCrLf Texte = Texte & "*******Nom du Module : " & .Name _ & "*******" & vbCrLf & vbCrLf & vbCrLf Texte = Texte & .Lines(Ligne, Nbligne) Texte = Texte & vbCrLf & vbCrLf Print #1, Texte End If End With Close #1
'Imprimer le fichier abc.txt sans voir le fichier à l'écran. ShellExecute hwnd, "print", Fichier, "", "", SW_HIDE
'Arrêt pour charger le buffer de l'imprimante 'La valeur de 5 secondes est aléatoire... 'cela pourrait être moins. Application.Wait (Now + TimeValue("0:00:05"))
'détruit le fichier sans possibilité de récupération Kill Fichier End Sub '---------------------------------------
Salutations!
"Zoltan" a écrit dans le message de news:O% Salut à tous,
y a t-il une procédure pour imprimer toutes les macros contenues dans un classeur en une seule fois?
merci de vos réponses -- http://perso.wanadoo.fr/aquabidule/ http://www.rouhling.net http://www.aquariumdudiscus.fr
Bonjour Zoltan,
Et pour terminer ....
En renseignant les 3 variables de cette procédure :"Sub ImprimerUneProcédure()", tu peux imprimer la procédure d'un classeur
ouvert de ton choix.
'Déclaration de la variable dans le haut du module
Dim CeModule As String
'---------------------------------------
Sub ImprimerUneProcédure()
'Important :
'La seule restriction, ne pas insérer cette procédure
'dans le même module que la procédure à imprimer
Dim LaProcedure As String, LeClasseur As String
Dim LeModule As String, A As Object
'******Définir ces 3 variables suivantes******
'Nom du classeur contenant la procédure
LeClasseur = ThisWorkbook.Name
'Nom de la procédure à imprimer
'Attention à la casse ...
LaProcedure = "ImprimerLeCode"
'nom du module où est écrite cette procédure
'Attention à la casse
CeModule = "Module2"
'**********************************************
'La variable module est déterminé par la fonction
Set A = fnThisVBComponent(ThisWorkbook, LaProcedure)
If Not A Is Nothing Then
LeModule = A.Name
Else
MsgBox "Procédure non trouvée." _
, vbInformation + vbOKOnly, "Opération annulée"
Exit Sub
Set A = Nothing
End If
ImprimerToutLeCode LeClasseur, LeModule, LaProcedure
Set A = Nothing
End Sub
'---------------------------------------
Function fnThisVBComponent(oBk As Workbook, _
ByVal sUniqueString As String) As Object
'Original crée par Stephen Bullen
'et adapter par moi ...
Dim oVBC As Object
'Loop through the VBComponents in the
'given workbook's VBProject
For Each oVBC In oBk.VBProject.VBComponents
'Using it's code module
With oVBC.CodeModule
'See if we can find the unique string
If .Find(sUniqueString, 1, 1, .CountOfLines, _
1000, True, True, False) Then
If oBk.Name = ThisWorkbook.Name Then
If oVBC.Name <> CeModule Then
'Found it, so return the
'VBComponent where it was found
Set fnThisVBComponent = oVBC
Exit For
End If
End If
End If
End With
Next
End Function
'---------------------------------------
Sub ImprimerToutLeCode(NomClasseur As String, _
LeModule As String, Procedure As String)
Dim VBComp As Object
Dim Texte As String, Ficher As String
Fichier = "C:ImprimerCode.txt"
Set VBComp = Workbooks(NomClasseur).VBProject. _
VBComponents(LeModule).CodeModule
'ligne du début de la procédure
Ligne = VBComp.ProcBodyLine(Procedure, vbext_pk_Proc)
'Nombre de ligne de la procédure
Nbligne = VBComp.ProcCountLines(Procedure, vbext_pk_Proc)
Open Fichier For Output As #1
With VBComp
If .CountOfLines <> 0 Then
Texte = vbCrLf & vbCrLf & vbCrLf
Texte = Texte & "*******Nom du Module : " & .Name _
& "*******" & vbCrLf & vbCrLf & vbCrLf
Texte = Texte & .Lines(Ligne, Nbligne)
Texte = Texte & vbCrLf & vbCrLf
Print #1, Texte
End If
End With
Close #1
'Imprimer le fichier abc.txt sans voir le fichier à l'écran.
ShellExecute hwnd, "print", Fichier, "", "", SW_HIDE
'Arrêt pour charger le buffer de l'imprimante
'La valeur de 5 secondes est aléatoire...
'cela pourrait être moins.
Application.Wait (Now + TimeValue("0:00:05"))
'détruit le fichier sans possibilité de récupération
Kill Fichier
End Sub
'---------------------------------------
Salutations!
"Zoltan" <zoltan@wanadoo.fr> a écrit dans le message de news:O%23SIrmWaDHA.2572@TK2MSFTNGP12.phx.gbl...
Salut à tous,
y a t-il une procédure pour imprimer toutes les macros
contenues dans un classeur en une seule fois?
merci de vos réponses
--
http://perso.wanadoo.fr/aquabidule/
http://www.rouhling.net
http://www.aquariumdudiscus.fr
En renseignant les 3 variables de cette procédure :"Sub ImprimerUneProcédure()", tu peux imprimer la procédure d'un classeur ouvert de ton choix.
'Déclaration de la variable dans le haut du module Dim CeModule As String
'--------------------------------------- Sub ImprimerUneProcédure()
'Important : 'La seule restriction, ne pas insérer cette procédure 'dans le même module que la procédure à imprimer
Dim LaProcedure As String, LeClasseur As String Dim LeModule As String, A As Object
'******Définir ces 3 variables suivantes******
'Nom du classeur contenant la procédure LeClasseur = ThisWorkbook.Name
'Nom de la procédure à imprimer 'Attention à la casse ... LaProcedure = "ImprimerLeCode"
'nom du module où est écrite cette procédure 'Attention à la casse CeModule = "Module2" '**********************************************
'La variable module est déterminé par la fonction Set A = fnThisVBComponent(ThisWorkbook, LaProcedure) If Not A Is Nothing Then LeModule = A.Name Else MsgBox "Procédure non trouvée." _ , vbInformation + vbOKOnly, "Opération annulée" Exit Sub Set A = Nothing End If
ImprimerToutLeCode LeClasseur, LeModule, LaProcedure Set A = Nothing
End Sub
'--------------------------------------- Function fnThisVBComponent(oBk As Workbook, _ ByVal sUniqueString As String) As Object 'Original crée par Stephen Bullen 'et adapter par moi ... Dim oVBC As Object
'Loop through the VBComponents in the 'given workbook's VBProject For Each oVBC In oBk.VBProject.VBComponents
'Using it's code module With oVBC.CodeModule
'See if we can find the unique string If .Find(sUniqueString, 1, 1, .CountOfLines, _ 1000, True, True, False) Then If oBk.Name = ThisWorkbook.Name Then If oVBC.Name <> CeModule Then 'Found it, so return the 'VBComponent where it was found Set fnThisVBComponent = oVBC Exit For End If End If End If End With Next
End Function
'--------------------------------------- Sub ImprimerToutLeCode(NomClasseur As String, _ LeModule As String, Procedure As String)
Dim VBComp As Object Dim Texte As String, Ficher As String
Fichier = "C:ImprimerCode.txt"
Set VBComp = Workbooks(NomClasseur).VBProject. _ VBComponents(LeModule).CodeModule 'ligne du début de la procédure Ligne = VBComp.ProcBodyLine(Procedure, vbext_pk_Proc) 'Nombre de ligne de la procédure Nbligne = VBComp.ProcCountLines(Procedure, vbext_pk_Proc)
Open Fichier For Output As #1 With VBComp If .CountOfLines <> 0 Then Texte = vbCrLf & vbCrLf & vbCrLf Texte = Texte & "*******Nom du Module : " & .Name _ & "*******" & vbCrLf & vbCrLf & vbCrLf Texte = Texte & .Lines(Ligne, Nbligne) Texte = Texte & vbCrLf & vbCrLf Print #1, Texte End If End With Close #1
'Imprimer le fichier abc.txt sans voir le fichier à l'écran. ShellExecute hwnd, "print", Fichier, "", "", SW_HIDE
'Arrêt pour charger le buffer de l'imprimante 'La valeur de 5 secondes est aléatoire... 'cela pourrait être moins. Application.Wait (Now + TimeValue("0:00:05"))
'détruit le fichier sans possibilité de récupération Kill Fichier End Sub '---------------------------------------
Salutations!
"Zoltan" a écrit dans le message de news:O% Salut à tous,
y a t-il une procédure pour imprimer toutes les macros contenues dans un classeur en une seule fois?
merci de vos réponses -- http://perso.wanadoo.fr/aquabidule/ http://www.rouhling.net http://www.aquariumdudiscus.fr
Zoltan
Comme j'attendais après ta procédure d'impression du code (macro) d'un classeur , je me >suis permis d'essayer ceci :
ah, j'était absent un moment
Comme j'attendais après ta procédure d'impression du code (macro) d'un
classeur , je me >suis permis d'essayer ceci :