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

Nombre de classeurs ouverts

4 réponses
Avatar
Pierre
Nombre de classeurs ouverts

D'habitude je récupère le nombre de classeurs ouverts avec l'instruction :
Windows.Count.

Je viens de me rendre compte qu'elle ne donne pas le même résultat si
elle est placée dans un module ou dans Private Sub Workbook_Open() ou
dans Private Sub Workbook_BeforeClose(Cancel As Boolean)

Savez vous pourquoi?
Avez vous une solution qui marche dans tous les cas?

Merci

PPz

4 réponses

Avatar
Philippe.R
Bonsoir,
Par sécurité, j'aurais tendance à placer l'instruction dans un module
ordinaire du classeur Perso, comme ceci :

Sub compte_fenetres()
nbfen = Application.Windows.Count-1
'MsgBox nbfen
End Sub

en déclarant la variable nbfen publique
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Pierre" a écrit dans le message de
news:496e39e8$0$6854$
Nombre de classeurs ouverts

D'habitude je récupère le nombre de classeurs ouverts avec l'instruction :
Windows.Count.

Je viens de me rendre compte qu'elle ne donne pas le même résultat si elle
est placée dans un module ou dans Private Sub Workbook_Open() ou dans
Private Sub Workbook_BeforeClose(Cancel As Boolean)

Savez vous pourquoi?
Avez vous une solution qui marche dans tous les cas?

Merci

PPz



Avatar
michdenis
| récupère le nombre de classeurs ouverts avec l'instruction :
| Windows.Count.

Tu veux dire : Workbooks.Count

Est-ce possible que tu aies ouvert un ou des classeurs et qu'un
de ceux-ci soient toujours ouverts et masqués ?

Exécute ces lignes de code pour connaître quels classeurs sont demeurés ouverts...
cela devrait te donner une meilleure idée de ce qui se passe !

Sub test()
Dim Wk As Workbook
For Each Wk In Workbooks
MsgBox "Son nom est : " & Wk.Name & vbCrLf & _
"Son chemin est : " & Wk.Path & vbCrLf & _
"Visible = " & Windows(Wk.Name).Visible
Next
End Sub



"Pierre" a écrit dans le message de groupe de discussion :
496e39e8$0$6854$
Nombre de classeurs ouverts

D'habitude je récupère le nombre de classeurs ouverts avec l'instruction :
Windows.Count.

Je viens de me rendre compte qu'elle ne donne pas le même résultat si
elle est placée dans un module ou dans Private Sub Workbook_Open() ou
dans Private Sub Workbook_BeforeClose(Cancel As Boolean)

Savez vous pourquoi?
Avez vous une solution qui marche dans tous les cas?

Merci

PPz
Avatar
Pierre
Merci de votre aide, cela marche avec Workbooks.count

Mais pourquoi diable Windows.count donne t-il le bon résultat quand il
est dans un Module et un mauvais quand il se trouve dans le code
exécuté à l'ouverture du classeur Excel?
En fait j'ai besoin d'avoir le nombre de classeur ouverts dès l'ouverture.

Merci
PPz



On 2009-01-14 20:15:52 +0100, Pierre said:

Nombre de classeurs ouverts

D'habitude je récupère le nombre de classeurs ouverts avec l'instruction :
Windows.Count.

Je viens de me rendre compte qu'elle ne donne pas le même résultat si
elle est placée dans un module ou dans Private Sub Workbook_Open() ou
dans Private Sub Workbook_BeforeClose(Cancel As Boolean)

Savez vous pourquoi?
Avez vous une solution qui marche dans tous les cas?

Merci

PPz


Avatar
Mousnynao
Bonjour,

L'objet [ ThisWorkbook ] possède des méthodes et propriété un peu
différente d'un module standard, certaine instructions n'y sont pas
permise, j'ai rencontré ce genre de problème plus d'une fois.

Je contourne toujours de la façon suivante :

Dans la procédure [ Workbook_Open() ], je place le code suivant :

Option Explicit
'

Function CompteNbrClasseur() As Long

CompteNbrClasseur = Workbooks.Count

End Function
'

Cordialement

mousnynao
Option Explicit

Private Sub Workbook_Open()

Dim Reponse As Long

Reponse = Module1.CompteNbrClasseur

If (Reponse < 1) Then
MsgBox "Erreur d'application"
Else
If (Reponse = 1) Then
MsgBox "Aucun classeur n'était ouvert"
Else
MsgBox Reponse & " classeurs ouverts"
End If
End If

End Sub


et dans un module standard, je place le code désiré :




"Pierre" a écrit :

Merci de votre aide, cela marche avec Workbooks.count

Mais pourquoi diable Windows.count donne t-il le bon résultat quand il
est dans un Module et un mauvais quand il se trouve dans le code
exécuté à l'ouverture du classeur Excel?
En fait j'ai besoin d'avoir le nombre de classeur ouverts dès l'ouverture.

Merci
PPz



On 2009-01-14 20:15:52 +0100, Pierre said:

> Nombre de classeurs ouverts
>
> D'habitude je récupère le nombre de classeurs ouverts avec l'instruction :
> Windows.Count.
>
> Je viens de me rendre compte qu'elle ne donne pas le même résultat si
> elle est placée dans un module ou dans Private Sub Workbook_Open() ou
> dans Private Sub Workbook_BeforeClose(Cancel As Boolean)
>
> Savez vous pourquoi?
> Avez vous une solution qui marche dans tous les cas?
>
> Merci
>
> PPz