Accueil > Forum > > > > controle fichier excel ouvert
controle fichier excel ouvert
vendredi 6 avril 2007 à 17:53:56 |
controle fichier excel ouvert

marcod59
|
Bonjour, Comment contrôler si un fichier donné excel est ouvert. Je voudrais faire un test pour voir si le fichier en question est ouvert afin de ne pas faire le code s'il est ouvert. Merci d'avance et bonne prog @+++ marcod59
|
|
vendredi 6 avril 2007 à 20:51:12 |
Re : controle fichier excel ouvert

mortalino
|
Salut, utilise mon snippet, il est fait pour : Private Const OF_SHARE_EXCLUSIVE = &H10 Private Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long Private Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long Function OpenDocXlsFile(FileToOpen As String) As Long ' retourne : ' -1 -> erreur ' 0 -> fichier déjà ouvert, ouverture en lecture seule ' 1 -> ouverture première instance OpenDocXlsFile = -1 Dim sExt As String Dim NomAppli As String ' type de fichier par son extension If LenB(FileToOpen) < 16 Then Exit Function Else sExt = LCase$(RightB$(FileToOpen, 8)) If sExt = ".doc" Or sExt = ".rtf" Then NomAppli = "Word" ElseIf sExt = ".xls" Or sExt = ".csv" Then NomAppli = "Excel" Else Exit Function End If End If ' ouverture office Dim MonApp As Object Dim MonDoc As Object Dim hFile As Long hFile = lopen(FileToOpen, OF_SHARE_EXCLUSIVE) If hFile <> -1 Then 'pas ouvert lclose (hFile) Set MonApp = CreateObject(NomAppli & ".Application") If NomAppli = "Word" Then Set MonDoc = MonApp.Documents.Open(FileToOpen) Else Set MonDoc = MonApp.Workbooks.Open(FileToOpen) End If OpenDocXlsFile = 1 ElseIf (hFile = -1) And (Err.LastDllError = 32) Then 'déjà ouvert lclose (hFile) Set MonApp = CreateObject(NomAppli & ".Application") If NomAppli = "Word" Then On Local Error Resume Next Set MonDoc = MonApp.Documents.Open(FileToOpen, , True) If Err.Number = 4198 Then ' word 2000, utilisateur fait ANNULER Err.Clear GoTo Lbl_Exit End If On Error GoTo 0 Else Set MonDoc = MonApp.Workbooks.Open(FileToOpen, , True) End If OpenDocXlsFile = 0 End If MonApp.Visible = True Lbl_Exit: Set MonDoc = Nothing Set MonApp = Nothing End Function
' EXEMPLE Private Sub Form_Load() Debug.Print "Word : " & OpenDocXlsFile("C:\Nouveau Document Microsoft Word.doc") Debug.Print "Excel : " & OpenDocXlsFile("C:\test.xls") Unload Me End Sub
 ~ Mortalino ~ Colorisation automatique@++
--Mortalino-- Le mystérieux chevalier, "Provençal, le Gaulois" /DIV>
|
|
vendredi 6 avril 2007 à 23:36:58 |
Re : controle fichier excel ouvert

MPi
|
Tu travailles à partir d'Excel (VBA) ou de VB ou autre ?
Si tu travailles sous Excel, il y a la "collection" Windows qui te donne le nom de tous les fichiers qui sont ouverts dans la session. Équivalent à aller dans le menu Fenêtre et regarder ce qui s'y trouve.
MPi
|
|
samedi 7 avril 2007 à 09:31:17 |
Re : controle fichier excel ouvert

marcod59
|
Salut Mortalino et MPI,
Premièrement, merci d'avoir répondu, ensuite. Pour répondre à MPI, je travail en VB. Pour Mortalino, j'ai un petit souci avec ton code. Tout d'abord, je l'ai mis dans un module, ensuite je l'ai inclus dans mon code de cette façon :
Private Sub Cmdexcel_Click() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim XlSheet As Excel.Worksheet Dim b, l As Integer Set xlApp = New Excel.Application Set xlBook = xlApp.Workbooks.Add Set XlSheet = xlBook.Worksheets(1) '' désactive les messages d'Excel xlApp.Application.DisplayAlerts = False If OpenDocXlsFile(App.Path & "\relevé.xls") = 0 Then msg = MsgBox("Veuillez fermer le fichier relevé.xls" & Chr(10) & "pour pouvoir récupérer les données", vbCritical) GoTo fin End If ' Ouvre le fichier xlApp.Workbooks.Open FileName:=App.Path & "\relevé.xls", Editable:=True, ReadOnly:=False b = Lstview1.ListItems.Count For a = 1 To b l = xlApp.Sheets("donnees").Range("A65536").End(xlUp).row + 1 Set ObjListe = Nothing Set ObjListe = Lstview1.ListItems(a) xlApp.Sheets("donnees").Range("A" & l).Value = Lstview1.ListItems.Item(1) xlApp.Sheets("donnees").Range("B" & l).Value = ObjListe.SubItems(1) xlApp.Sheets("donnees").Range("C" & l).Value = ObjListe.SubItems(2) xlApp.Sheets("donnees").Range("D" & l).Value = ObjListe.SubItems(3) xlApp.Sheets("donnees").Range("E" & l).Value = ObjListe.SubItems(4) xlApp.Sheets("donnees").Range("F" & l).Value = ObjListe.SubItems(5) xlApp.Sheets("donnees").Range("G" & l).Value = ObjListe.SubItems(6) xlApp.Sheets("donnees").Range("H" & l).Value = ObjListe.SubItems(7) xlApp.Sheets("donnees").Range("I" & l).Value = ObjListe.SubItems(8) xlApp.Sheets("donnees").Range("J" & l).Value = ObjListe.SubItems(9) xlApp.Sheets("donnees").Range("K" & l).Value = ObjListe.SubItems(10) xlApp.Sheets("donnees").Range("L" & l).Value = ObjListe.SubItems(11) xlApp.Sheets("donnees").Range("M" & l).Value = ObjListe.SubItems(12) Next a fin: xlApp.ActiveWorkbook.Save xlApp.Application.DisplayAlerts = True xlBook.Close xlApp.Quit Set xlApp = Nothing Set xlBook = Nothing Set XlSheet = Nothing End Sub
Le problème, et qu'il m'ouvre à chaque fois un fichier excel et que dans tous les cas, je n'arrive pas à enregistrer les données. Je pense que je n'utilise pas ton code correctement. Peux-tu me mettre sur le bon rail. Merci
Joyeuses Pâques à vous @+++ marcod59
|
|
samedi 7 avril 2007 à 15:03:46 |
Re : controle fichier excel ouvert

MPi
|
Réponse acceptée !
Je viens de faire le test sous VB6 et ce code affiche bien tous les classeurs déjà ouverts
Dim Fenetre As Window For Each Fenetre In Windows MsgBox Fenetre.Caption Next
Ça n'affichera pas le chemin complet, par contre.
MPi
|
|
samedi 7 avril 2007 à 16:40:31 |
Re : controle fichier excel ouvert

marcod59
|
Merci MPI, c'est justement ce que je cherchais. Juste le nom du fichier afin de faire le test car s'il est ouvert je ne peux rentrer les données. Donc en faisant un test avant, je le signale pour qu'il soit fermé.
Joyeuses Pâques @+++ marcod59
|
|
samedi 7 avril 2007 à 20:51:38 |
Re : controle fichier excel ouvert

MPi
|
Attention toutefois ... Le fichier pourrait être ouvert dans une autre session d'Excel. À ce moment-là, il ne serait pas dans la liste, je pense (?) Tu pourrais toujours ajouter une gestion d'erreur.
MPi
|
|
Cette discussion est classée dans : fichier, excel, controle, ouvert
Répondre à ce message
Sujets en rapport avec ce message
connaitre l'emplacement d'un fichier Excel ouvert [ par dvdnet ]
Bonjour, un truc certainement tout con, mais que je n'arrive pas à faire ;-)Je voudrais juste récupérer dans une variable en VBA le chemin du dossier
connaitre l'emplacement d'un fichier Excel ouvert [ par dvdnet ]
Bonjour, un truc certainement tout con, mais que je n'arrive pas à faire ;-)Je voudrais juste récupérer dans une variable en VBA le chemin du dossier
importer bloc d'un fichier Excel fermé vers un autre ouvert [ par thierrypp ]
THIERRYPPBonjour,Pourriez-vous m'indiquer comment importer du fichier Excel C:\book1.xls le bloc E4:F43vers le fichier Excel ouvert en cours de trait
Controle OLE Excel [ par cmaisse ]
Bonjour à tous,J'ai un petit souci, j'ai créer un objet permettant d'ouvrir un fichier excel mais je ne sais pas comment récupérer le nom des différen
savoir si un fichier excel est ouvert depuis access [ par annelise ]
bonjour, j'ai besoin d'exporter des données d'access vers Excel, le probleme est que si mon fichier excel est ouvert, ça ne marche pas, comment faire
savoir si un fichier excel est ouvert et le fermer si c'est le cas [ par skunkbedo ]
Salut tout le monde! Je vsuis en train de développer une application en VB qui utilise Excel. L'application permet d'ouvrir, de modifier et d'enregist
reconnaissance ouverture fichier excel [ par davidouz ]
davidouzLUT, j'aimerais savoir comment on peux vérifier si un fichier excel est ouvert ou non, afin de l'ouvrir si il ne l'est pas, et d'ouvrir sa fen
URGENT........Savoir si un fichier est ouvert ou non ??? [ par thebox ]
Bonjour à tous et toutes,J'ai un bouton sur un formulaire Access 2000 et quand je clique dessus, ca m'ouvre un fichier Excel déjà existant. Mon problè
Test si Fichier Excel ouvert [ par syl2 ]
Bonjour à tous,je suis en train de réaliser une application VBA Access qui consiste à extraire des données de ma base pour générer des tableaux dynami
Excel reste ouvert... [ par rackne ]
Bonjour, j'ai fait une appli en VB6 qui manipule des fichiers xls (que du bonheur)En gros à l'aide d'une common dialog je recupère un nom de fichier,
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|