[VBA] Test avec message box si fichier externe non ouvert

Résolu/Fermé
dyllan Messages postés 4694 Date d'inscription mardi 9 janvier 2007 Statut Contributeur sécurité Dernière intervention 25 juin 2019 - Modifié par dyllan le 23/01/2013 à 14:54
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 24 janv. 2013 à 09:44
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 23/01/2013 à 16:19
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 4694 Date d'inscription mardi 9 janvier 2007 Statut Contributeur sécurité Dernière intervention 25 juin 2019 909
Modifié par dyllan le 23/01/2013 à 15:05
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 4694 Date d'inscription mardi 9 janvier 2007 Statut Contributeur sécurité Dernière intervention 25 juin 2019 909
23 janv. 2013 à 17:31
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 4694 Date d'inscription mardi 9 janvier 2007 Statut Contributeur sécurité Dernière intervention 25 juin 2019 909
24 janv. 2013 à 09:38
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
24 janv. 2013 à 09:44
Mais de rien.
A+
0