[VBA] Test avec message box si fichier externe non ouvert
Résolu
dyllan
Messages postés
5577
Statut
Contributeur sécurité
-
pijaku Messages postés 13513 Statut Modérateur -
pijaku Messages postés 13513 Statut Modérateur -
Bonjour,
Là ... je bloque et débutant en VBA je n'ai pas trouvé de réponse facilement compréhensible !
Je souhaite ajouter dans une macro fonctionnelle un test intermédiaire pour vérifier qu'un fichier est bien ouvert. Si non ouvert, arrêt de la macro et affichage d'une message box à l'utilisateur : Merci d'ouvrir le fichier X
Je pourrais ensuite insérer ce bout de code là où je souhaite faire ce test intermédiaire lorsque ma macro a besoin d'un fichier externe.
D'avance merci pour toutes réponses !
J'ai envoyé un ange pour te protéger mais ... il est revenu me dire qu'il ne pouvait veiller sur un autre
Là ... je bloque et débutant en VBA je n'ai pas trouvé de réponse facilement compréhensible !
Je souhaite ajouter dans une macro fonctionnelle un test intermédiaire pour vérifier qu'un fichier est bien ouvert. Si non ouvert, arrêt de la macro et affichage d'une message box à l'utilisateur : Merci d'ouvrir le fichier X
Windows(Windows_Extract_Mensuel_SGBD).Activate
If Not Ok Then
Message = "Le fichier Extract_mensuel_indicateurs_AQZS05.xls n'est pas ouvert ! & Chr(13) & "Merci de l'ouvrir."
MsgBox Message, vbExclamation + vbCritical, "Erreur de fichier !"
Else
If Ok Then
Sheets(Sheet_Extract_SGBD).Range("B5").Select
End If
End If
Je pourrais ensuite insérer ce bout de code là où je souhaite faire ce test intermédiaire lorsque ma macro a besoin d'un fichier externe.
D'avance merci pour toutes réponses !
J'ai envoyé un ange pour te protéger mais ... il est revenu me dire qu'il ne pouvait veiller sur un autre
A voir également:
- [VBA] Test avec message box si fichier externe non ouvert
- Fichier bin - Guide
- Test performance pc - Guide
- Fichier epub - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans system - Guide
- Fichier rar - Guide
4 réponses
Salut Dyllan, Bonne année à toi.
Pour tester si un fichier excel est ouvert, tu peux boucler sur tous les classeurs ouverts, et si tu ne trouves pas le nom de ton classeur (et oui chez Excel on ne dit pas "fichier" mais "classeur"...) dans les classeurs ouverts ben c'est qu'il est fermé...
En code VBA :
Je n'ai pas testé ce code si plusieurs instances d'excel sont ouvertes...
Cordialement,
Franck P
Pour tester si un fichier excel est ouvert, tu peux boucler sur tous les classeurs ouverts, et si tu ne trouves pas le nom de ton classeur (et oui chez Excel on ne dit pas "fichier" mais "classeur"...) dans les classeurs ouverts ben c'est qu'il est fermé...
En code VBA :
Dim Classeur As Workbook
Dim Ouvert As Boolean
Ouvert = False
For Each Classeur In Workbooks
If Classeur.Name = "Extract_mensuel_indicateurs_AQZS05.xls" Then
Ouvert = True
Exit For
End If
Next Classeur
'si ouvert est toujours false après la boucle c'est que ton classeur est fermé alors on sort de la procédure
If Ouvert = False Then Exit Sub
'ou avec message à l'utilisateur :
'If Ouvert = False Then
'Msgbox "fichier fermé"
'Exit Sub
'End If
Je n'ai pas testé ce code si plusieurs instances d'excel sont ouvertes...
Cordialement,
Franck P
Bon j'ai testé autre chose. Pas d'erreur mais par contre si le fichier n'est pas ouvert ... pas de message box pour avertir ... :(
J'ai envoyé un ange pour te protéger mais ... il est revenu me dire qu'il ne pouvait veiller sur un autre
' On commence par SGBD et on vérifie que notre ficher extract brut est ouvert pour l'entitée SGBD
Dim Wk As Workbook
x = "Extract_mensuel_indicateurs_AQZS05"
Windows(Windows_Extract_Mensuel_SGBD).Activate
On Error Resume Next
Set Wk = Workbooks(x & ".xls")
If Err <> 0 Then
Message = "Le fichier Extract_mensuel_indicateurs_AQZS05.xls n'est pas ouvert !" & Chr(13) _
& " " & Chr(13) & " Merci de l'ouvrir."
MsgBox Message, vbExclamation + vbCritical, "Erreur de fichier !"
Else
Sheets(Sheet_Extract_SGBD).Range("B5").Select
End If
J'ai envoyé un ange pour te protéger mais ... il est revenu me dire qu'il ne pouvait veiller sur un autre
Salut pijaku, pareillement, bonne année de ton côté ;)
Merci pour ce bout de code, je ne pense pas avoir le temps de tester ce soir. Je suis encore au boulot et me prend la tête sur autre chose ... bref.
Je te fais un retour demain sur ce topic.
Cordialement
Merci pour ce bout de code, je ne pense pas avoir le temps de tester ce soir. Je suis encore au boulot et me prend la tête sur autre chose ... bref.
Je te fais un retour demain sur ce topic.
Cordialement
Bonjour pijaku,
Pour te répondre après avoir testé ce code : Excellent :) J'ai pu rapidement l'intégrer et, le tester.
Effectivement on parle de classeur sous Excel, c'est en partie cette mauvaise différenciation qui a du me bloquer.
A garder en mémoire, ça peut en aider quelques uns.
Merci encore ;)
Pour te répondre après avoir testé ce code : Excellent :) J'ai pu rapidement l'intégrer et, le tester.
Effectivement on parle de classeur sous Excel, c'est en partie cette mauvaise différenciation qui a du me bloquer.
A garder en mémoire, ça peut en aider quelques uns.
Merci encore ;)