[VBA] Test avec message box si fichier externe non ouvert [Résolu/Fermé]

Signaler
Messages postés
4694
Date d'inscription
mardi 9 janvier 2007
Statut
Contributeur sécurité
Dernière intervention
25 juin 2019
-
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
-
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

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

Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 497
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
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
4694
Date d'inscription
mardi 9 janvier 2007
Statut
Contributeur sécurité
Dernière intervention
25 juin 2019
892
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
Messages postés
4694
Date d'inscription
mardi 9 janvier 2007
Statut
Contributeur sécurité
Dernière intervention
25 juin 2019
892
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
Messages postés
4694
Date d'inscription
mardi 9 janvier 2007
Statut
Contributeur sécurité
Dernière intervention
25 juin 2019
892
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 ;)
Messages postés
12186
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2020
2 497
Mais de rien.
A+