Ouverture d'un classeur en vba

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

David590

XLDnaute Occasionnel
Bonjour à tous,

J'utilise ce code pour ouvrir un classeur qui est parfois occupé par un autre utilisateur
Code:
Workbooks.Open Filename:=ThisWorkbook.Path & "\Classeur.xlsm"

De ce fait, lorsque le classeur est déjà utilisé par un autre utilisateur, sans me demander mon avis, le classeur s'ouvre en lecture seul
Or j'aurais besoin de quelque chose dans le genre d'une textbox qui me propose de réessayer de le rouvrir en lecture/écriture pour que je puisse réessayer dès que l'utilisateur a fermé le classeur
Mais il ne faut pas qu'il s'ouvre en lecture seule

Pouvez vous m'aidez?
 
Dernière édition:
Re : Ouverture d'un classeur en vba

Bonjour David590, titiborregan5,

Si l'on a réellement de la patience 🙄 cette macro peut faire l'affaire :

Code:
Sub Ouvrir()
Dim flag As Boolean
1 Workbooks.Open ThisWorkbook.Path & "\Classeur.xlsm"
If ActiveWorkbook.ReadOnly Then
  If Not flag Then MsgBox "Un utilisateur a déjà ouvert ce fichier, patientez..."
  flag = True
  GoTo 1
End If
End Sub
A+
 
Re : Ouverture d'un classeur en vba

Re,

Mais si votre patience a des limites :

Code:
Sub Ouvrir()
Dim t#, delai#, flag As Boolean
t = Timer
delai = 9 ^ 9
1 Workbooks.Open ThisWorkbook.Path & "\Classeur.xlsm"
If ActiveWorkbook.ReadOnly And Timer < t + delai Then
  If Not flag Then
    delai = 60 * Val(InputBox("Un utilisateur a déjà ouvert ce fichier." & _
    vbLf & "Entrez le nombre de minutes que vous acceptez d'attendre :", "Attente"))
    Application.ScreenUpdating = False
    flag = True
  End If
  GoTo 1
End If
If ActiveWorkbook.ReadOnly Then ActiveWorkbook.Close False
End Sub
A+
 
Re : Ouverture d'un classeur en vba

Bonjour titiborregan5, job75,

Merci pour vos reponse,
job75, le premier code m'irais bien, mais n'y aurait il pas possibilité de voir si le classeur est utilisé sans avoir besoin de l'ouvrir?

Si le classeur est deja utilisé alors...
plutôt que
Si le classeur est en lecture seule alors..
 
Dernière édition:
Re : Ouverture d'un classeur en vba

Re,

Pourquoi l'ouverture du classeur vous gêne-t-elle ?

Avec une ligne supplémentaire pour figer l'écran et ne pas voir le classeur s'ouvrir c'est mieux :

Code:
Sub Ouvrir()
Dim flag As Boolean
Application.ScreenUpdating = False 'fige l'écran
1 Workbooks.Open ThisWorkbook.Path & "\Classeur.xlsm"
If ActiveWorkbook.ReadOnly Then
  If Not flag Then MsgBox "Un utilisateur a déjà ouvert ce fichier, patientez..."
  flag = True
  GoTo 1
End If
End Sub
A+
 
Re : Ouverture d'un classeur en vba

Bonjour David590, le forum,

Ceci est encore mieux, surtout si l'on veut tester :

Code:
Sub Ouvrir()
Dim flag As Boolean
1 Application.ScreenUpdating = False 'fige l'écran
Workbooks.Open ThisWorkbook.Path & "\Classeur.xlsm"
If ActiveWorkbook.ReadOnly Then
  If Not flag Then MsgBox "Un utilisateur a déjà ouvert ce fichier, patientez..."
  flag = True
  ActiveWorkbook.Close False 'fermeture du fichier
  Application.ScreenUpdating = True
  Application.Wait Now + 5 / 86400 'attente 5 secondes
  GoTo 1
End If
Application.ScreenUpdating = True
End Sub
A+
 
Re : Ouverture d'un classeur en vba

Re,

Si l'on veut pouvoir travailler sur Excel pendant l'attente utiliser DoEvents :

Code:
Sub Ouvrir()
Dim flag As Boolean, t As Single
1 Application.ScreenUpdating = False 'fige l'écran
Workbooks.Open ThisWorkbook.Path & "\Classeur.xlsm"
If ActiveWorkbook.ReadOnly Then
  If Not flag Then MsgBox "Un utilisateur a déjà ouvert ce fichier, patientez..."
  flag = True
  ActiveWorkbook.Close False 'fermeture du fichier
  Application.ScreenUpdating = True
  t = Timer
  While Timer < t + 5: DoEvents: Wend 'attente 5 secondes
  GoTo 1
End If
Application.ScreenUpdating = True
End Sub
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
191
Retour