Nombre de classeurs ouverts

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Philippe.R
Le #18387981
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" 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



michdenis
Le #18388161
| 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" 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
Pierre
Le #18388331
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
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


Mousnynao
Le #18392951
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
> 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





Publicité
Poster une réponse
Anonyme