OVH Cloud OVH Cloud

fermer fenêtre de code (VBA)

4 réponses
Avatar
philip
Bonjour à tous,
Avec VBA, je fais une copie d'un classeur tout en supprimant ses macros, sur
la base d'un code téléchargé sur excelabo. Sauf qu'aléatoirement il y a des
moments où la procédure ne fonctionne pas, sans que j'en trouve la raison.
J'ai alors observé que la procédure fonctionne plus sûrement en ouvrant
auparavent la fenêtre de code. Je l'ouvre de la façon suivante :
ActiveWorkbook.VBProject.VBComponents("Module1").CodeModule.CodePane.Show
Mais je ne trouve pas le moyen de fermer cette fenêtre à la fin de la
procédure. (je ne souhaite pas seulement fermer la fenêtre de code du
module1, mais la fenêtre de tous les codes). Close et Hide sont refusés.
Quelle est la méthode qui pourrait réaliser ceci ?
Merci de votre aide.

4 réponses

Avatar
anonymousA
bonjour,

Extrait de la bibliothèque de programmes du site de Frédéric Sigonneau

'fermer toutes les fenêtres des modules de code d'un projet (3 procédures)

'nécessite une référence à la bibliothèque
'Microsoft Visual Basic For Applications Extensibility 5.3

'-------------------------------
Sub CloseAllVBEWindows()
' mpep
' Close all VB windows

Dim CodeWind As VBIDE.Window
For Each CodeWind In Application.VBE.Windows
If CodeWind.Type = vbext_wt_CodeWindow Then
CodeWind.Close
End If
Next CodeWind

Dim Wind As Window
For Each Wind In Application.Windows
If Wind.Type = vbext_ct_MSForm Then
Wind.Close
End If
Next Wind
End Sub
'-------------------------------
Sub CloseAllCodeWindows()

' Tom Olgivy 6/6/01

Dim VBComp As VBIDE.VBComponent, _
VBProj As VBIDE.VBProject, _
vbWin As VBIDE.Window
For Each VBProj In ActiveWorkbook.VBProject.VBE.VBProjects
If VBProj.Protection = vbext_pp_none Then
For Each VBComp In VBProj.VBComponents
If VBComp.Type = vbext_ct_StdModule Or _
VBComp.Type = vbext_ct_MSForm Then
Debug.Print VBComp.CodeModule.CodePane.Window.Caption
End If
Next VBComp
End If
Next VBProj
For Each vbWin In ActiveWorkbook.VBProject.VBE.Windows
If vbWin.Type = vbext_wt_Designer Then
vbWin.Close
End If
Next

End Sub
'--------------------------
Sub CloseAllModules()
' Jake Marx 8/9/01

Dim cp As CodePane
Dim vbc As VBComponent

For Each cp In ThisWorkbook.VBProject.VBE.CodePanes
cp.Window.Close
Next cp

For Each vbc In ThisWorkbook.VBProject.VBComponents
If vbc.HasOpenDesigner Then
vbc.DesignerWindow.Close
End If
Next vbc
End Sub
A+


Bonjour à tous,
Avec VBA, je fais une copie d'un classeur tout en supprimant ses macros, sur
la base d'un code téléchargé sur excelabo. Sauf qu'aléatoirement il y a des
moments où la procédure ne fonctionne pas, sans que j'en trouve la raison.
J'ai alors observé que la procédure fonctionne plus sûrement en ouvrant
auparavent la fenêtre de code. Je l'ouvre de la façon suivante :
ActiveWorkbook.VBProject.VBComponents("Module1").CodeModule.CodePane.Show
Mais je ne trouve pas le moyen de fermer cette fenêtre à la fin de la
procédure. (je ne souhaite pas seulement fermer la fenêtre de code du
module1, mais la fenêtre de tous les codes). Close et Hide sont refusés.
Quelle est la méthode qui pourrait réaliser ceci ?
Merci de votre aide.


Avatar
Clément Marcotte
Bonjour,

À première vue, je ne sais pas. Sauf que je sais qu'il y a cet article
(en anglais) chez Microsoft. D'un coup que cela te donnerait LA
SOLUTION.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnofftalk/html/office07042002.asp?frame=true

P.S. Je vais regarder plus tard, en fin de journée (chez moi)


--
On n' apprend pas à un vieux singe à faire des grimaces
"philip" a écrit dans le message de
news:
Bonjour à tous,
Avec VBA, je fais une copie d'un classeur tout en supprimant ses
macros, sur

la base d'un code téléchargé sur excelabo. Sauf qu'aléatoirement il
y a des

moments où la procédure ne fonctionne pas, sans que j'en trouve la
raison.

J'ai alors observé que la procédure fonctionne plus sûrement en
ouvrant

auparavent la fenêtre de code. Je l'ouvre de la façon suivante :

ActiveWorkbook.VBProject.VBComponents("Module1").CodeModule.CodePane.S

how
Mais je ne trouve pas le moyen de fermer cette fenêtre à la fin de
la

procédure. (je ne souhaite pas seulement fermer la fenêtre de code
du

module1, mais la fenêtre de tous les codes). Close et Hide sont
refusés.

Quelle est la méthode qui pourrait réaliser ceci ?
Merci de votre aide.


Avatar
Vincnet.
Bonjour,
Je ne suis pas sûr d'avoir compris, mais pour fermer la fenêtre de VBE,
j'utilise :
Application.VBE.MainWindow.Visible = False

--
A+

V.



Bonjour à tous,
Avec VBA, je fais une copie d'un classeur tout en supprimant ses macros, sur
la base d'un code téléchargé sur excelabo. Sauf qu'aléatoirement il y a des
moments où la procédure ne fonctionne pas, sans que j'en trouve la raison.
J'ai alors observé que la procédure fonctionne plus sûrement en ouvrant
auparavent la fenêtre de code. Je l'ouvre de la façon suivante :
ActiveWorkbook.VBProject.VBComponents("Module1").CodeModule.CodePane.Show
Mais je ne trouve pas le moyen de fermer cette fenêtre à la fin de la
procédure. (je ne souhaite pas seulement fermer la fenêtre de code du
module1, mais la fenêtre de tous les codes). Close et Hide sont refusés.
Quelle est la méthode qui pourrait réaliser ceci ?
Merci de votre aide.


Avatar
Alain CROS
Bonjour.

Application.VBE.MainWindow.Visible = False

Alain CROS

"philip" a écrit dans le message de news:
| Bonjour à tous,
| Avec VBA, je fais une copie d'un classeur tout en supprimant ses macros, sur
| la base d'un code téléchargé sur excelabo. Sauf qu'aléatoirement il y a des
| moments où la procédure ne fonctionne pas, sans que j'en trouve la raison.
| J'ai alors observé que la procédure fonctionne plus sûrement en ouvrant
| auparavent la fenêtre de code. Je l'ouvre de la façon suivante :
| ActiveWorkbook.VBProject.VBComponents("Module1").CodeModule.CodePane.Show
| Mais je ne trouve pas le moyen de fermer cette fenêtre à la fin de la
| procédure. (je ne souhaite pas seulement fermer la fenêtre de code du
| module1, mais la fenêtre de tous les codes). Close et Hide sont refusés.
| Quelle est la méthode qui pourrait réaliser ceci ?
| Merci de votre aide.