[VBA] Test avec message box si fichier externe non ouvert
Résolu
dyllan
Messages postés
4707
Date d'inscription
Statut
Contributeur sécurité
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
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
- Test performance pc - Guide
- Fichier bin - 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 ;)