[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 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 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
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 :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 ... :(
' 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
-
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 ;)