[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   -
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
A voir également:

4 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
dyllan Messages postés 4707 Date d'inscription   Statut Contributeur sécurité Dernière intervention   909
 
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
0
dyllan Messages postés 4707 Date d'inscription   Statut Contributeur sécurité Dernière intervention   909
 
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
0
dyllan Messages postés 4707 Date d'inscription   Statut Contributeur sécurité Dernière intervention   909
 
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 ;)
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Mais de rien.
A+
0