A voir également:
- Attendre qu'un classeur soit fermé pour exécuter une macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Rouvrir un onglet fermé - Guide
- Coco.fr fermé - Accueil - Réseaux sociaux
- Application se ferme toute seule android - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
5 réponses
Bonjour,
Dans tes 2 macros tu pourrais tester si le fichier est ouvert par cette fonction
"F"= le nom complet du fichier 3
la fonction renvoie True si il est ouvert
Michel
Dans tes 2 macros tu pourrais tester si le fichier est ouvert par cette fonction
Function FichOuvert(F As String) As Boolean
Dim Wk As Workbook
On Error Resume Next
Set Wk = Workbooks(F)
On Error GoTo 0
FichOuvert = Not Wk Is Nothing
End Function
"F"= le nom complet du fichier 3
la fonction renvoie True si il est ouvert
Michel
Bonjour, salut michel,
Ta proposition n'est valable que si ouvert dans la même session non ?
Sur 2 micros différents ça va être difficile ;-)
Pour l'instant je ne vois pas comment détecter qu'un verrou est posé sur un fichier.
En attendant je pensais plus à l'utilisation de la propriété .ReadOnly. L'ouverture étant relancée toutes les 2 min avec un ontime tant que =true.
Ou bien se servir de la notification de fermeture mais là je sèche encore.
eric
Ta proposition n'est valable que si ouvert dans la même session non ?
Sur 2 micros différents ça va être difficile ;-)
Pour l'instant je ne vois pas comment détecter qu'un verrou est posé sur un fichier.
En attendant je pensais plus à l'utilisation de la propriété .ReadOnly. L'ouverture étant relancée toutes les 2 min avec un ontime tant que =true.
Ou bien se servir de la notification de fermeture mais là je sèche encore.
eric
Merci pour vos réponses, oui effectivement le fichier s'ouvre sur deux pc différents, si le fichier est ouvert je veux que la macro attende qu'il soit fermé pour s'exécuter? Comment relancer la vérification de l'ouverture du fichier toutes les 2 minb par exemple? Merci
Je n'ai pas réussi avec ontime.
Avec la fonction trouvée ici : https://www.developpez.net/forums/d98510/logiciels/microsoft-office/excel/macros-vba-excel/vba-e-tester-fichier-deja-ouvert/#post650523
tu pourrais faire :
eric
Avec la fonction trouvée ici : https://www.developpez.net/forums/d98510/logiciels/microsoft-office/excel/macros-vba-excel/vba-e-tester-fichier-deja-ouvert/#post650523
tu pourrais faire :
Option Explicit Sub test() Const tempo As Long = 600 ' temps d'attente max en s Dim t As Single t = Timer Do DoEvents Loop Until Not FichierEstOuvert("D:\tmp\Classeur2.xls") Or (Timer - t) > tempo Workbooks.Open Filename:="D:\tmp\Classeur2.xls" If ActiveWorkbook.ReadOnly Then MsgBox "problème fichier Classeur2.xls" ActiveWorkbook.Close Exit Sub End If ' suite traitement MsgBox ActiveWorkbook.Name End Sub Function FichierEstOuvert(ByRef FichierTeste As String) As Boolean Dim Fichier As Long On Error GoTo Erreur Fichier = FreeFile Open FichierTeste For Input Lock Read As #Fichier Close #Fichier FichierEstOuvert = False Exit Function Erreur: FichierEstOuvert = True End Function
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question