Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1873 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Savoir si un classeur est ouvert sans l'activer ?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Savoir si un classeur est ouvert sans l'activer ?

n°2012902
scaryfan
Apple Inside
Posté le 29-07-2010 à 14:12:41  profilanswer
 

:hello:  
Autre question du jour : j'ai une macro dans un classeur dans laquelle je souhaiterais mettre un bout de code qui va vérifier si un autre classeur est ouvert ou non... tout cela, sans l'activer...
Quelqu'un aurait une soluce ?
 :whistle:


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 512Go
mood
Publicité
Posté le 29-07-2010 à 14:12:41  profilanswer
 

n°2012911
scaryfan
Apple Inside
Posté le 29-07-2010 à 14:29:33  profilanswer
 

J'essaie bien de faire :
 

Code :
  1. If IsOpen("FICHIER.xls" Then
  2. ...
  3. End If


 
Mais IsOpen ne semble pas être reconnu...  :cry:


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 512Go
n°2013012
kiki29
Posté le 29-07-2010 à 19:11:50  profilanswer
 

Salut,à tester


Private Function WOuvert(sNom As String) As Boolean
Dim Wkb As Workbook
    WOuvert = False
    For Each Wkb In Workbooks
        If Wkb.Name = sNom Then
            WOuvert = True
            Exit For
        End If
    Next Wkb
End Function

n°2013031
galopin01
Posté le 29-07-2010 à 22:18:20  profilanswer
 

Bonsoir,
Oui... la même en couleur :
 

Code :
  1. Function WbOpen(WbName As String) As Boolean
  2. On Error Resume Next
  3. WbOpen = Not Workbooks(WbName) Is Nothing
  4. End Function


 
...Mais bien sur ça ne marche que dans une même instance d'Excel !
 
Pour tester l'ouverture ou non d'un classeur dans des instances différentes (en réseau par exemple)
je n'ai pas trouvé mieux que de créer un drapeau (fichier "flag.dat" ) à la fermeture (BeforeClose) du classeur en question et on supprime le "flag.dat" à l'ouverture.
Ensuite on teste la présence du flag (avec un Dir) : Si le flag est absent c'est que quelqu'un à déja ouvert le classeur, sinon c'est bon.
 
A+

n°2013067
kiki29
Posté le 30-07-2010 à 06:42:56  profilanswer
 

Salut,pour les instances multiples il faut passer par Microsoft WMI Scripting v1.x Library

n°2013076
scaryfan
Apple Inside
Posté le 30-07-2010 à 09:08:25  profilanswer
 

kiki29 a écrit :

Salut,à tester


Private Function WOuvert(sNom As String) As Boolean
Dim Wkb As Workbook
    WOuvert = False
    For Each Wkb In Workbooks
        If Wkb.Name = sNom Then
            WOuvert = True
            Exit For
        End If
    Next Wkb
End Function



 
Merci beaucoup pour ce bout de code que je vais tester immédiatement...
Je vous tiens au courant.  :p  


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 512Go
n°2013080
scaryfan
Apple Inside
Posté le 30-07-2010 à 09:15:14  profilanswer
 

Ça marche nickel chrome du tonnerre...  :sol:  
 
Merci encore !  ;)


---------------
iMac 4Ghz (fin 2015) RAM 16Go SSD 256Go SSD 512Go

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Savoir si un classeur est ouvert sans l'activer ?

 

Sujets relatifs
reference à un autre classeur dans une formuleProblème copie de cellule entre 2 classeur
[VBS] Actualiser Classeur ExcelComment savoir si dans un tab dechar il y a des entier et des reel ?
Exporter une feuille dans un autre classeur selon le nom de la feuilleLiaison cellules / classeur différent
Afficher le nom du fichier ouvert dans une macro sous ExcelExécuter une macro dans plusieurs feuilles d'1 classeur
Plus de sujets relatifs à : Savoir si un classeur est ouvert sans l'activer ?


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR