Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro vérifiant qu'un fichier est ouvert

  • Initiateur de la discussion Initiateur de la discussion schdam
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

schdam

Guest
Bonjour à tous,

J'aimerai qu'a un moment donnée dans une macro, Excel vérifie si un fichier dont le nom serait par exemble Test.xls est ouvert.

S'il n'est pas ouvert, j'aimerai qu'un message s'affiche me demandant de l'ouvrir (message de type vbOKOnly) et que tant que le fichier n'est pas ouvert, le messare réapprait si je clique sur OK (une boucle tant que le fichier n'est pas ouvert).
Et que si le fichier est ouvert, le message ne s'affiche pas et que le macro continue de s'éxécuter.

J'espère que j'ai été assez clair !

Merci d'avance.😉
 
Re : Macro vérifiant qu'un fichier est ouvert

Salut schdam,

Le code suivant devrait repondre a tes attentes :
PHP:
Sub Test()
Dim wk As Workbook, bool As Boolean
For Each wk In Application.Workbooks
    If wk.Name = "Test.xls" Then bool = True
Next wk
If bool = True Then
    MsgBox "Le fichier Test.xls va maintenant etre ouvert"
    Workbooks.Open Filename:="C:\Documents and Settings\Moi\Bureau\Test.xls"
End If
'ici le reste de ton code
End Sub

@+
 
Re : Macro vérifiant qu'un fichier est ouvert

Bonjour Schdam, Porcinet82,🙂

Oups, porcinet, sauf erreur de ma part, ton code va vouloir ouvrir le fichier s'il est déjà ouvert !!! pb de boolean 🙁

Bonne journée,
 
Re : Macro vérifiant qu'un fichier est ouvert

En fait je ne veux pas que la macro ouvre le fichier, je veux que ce soit l'utilisateur qui l'ouvre.
D'où le message en boucle tant que l'utilisateur n'a pas ouvert le fichier.
 
Re : Macro vérifiant qu'un fichier est ouvert

re,

Arf Brico, merci d'etre passé par là, effectivement, je n'avais pas tester le code, il faut effectivement changer ce foutu bolléen, ce qui donne :
PHP:
Sub Test_v2()
Dim wk As Workbook, bool As Boolean
For Each wk In Application.Workbooks
    If wk.Name = "Test.xls" Then bool = True
Next wk
If bool = False Then
    MsgBox "Le fichier Test.xls va maintenant etre ouvert"
    Workbooks.Open Filename:="C:\Documents and Settings\Moi\Bureau\Test.xls"
End If
'ici le reste de ton code
End Sub

Sinon pour ce qui est de faire une boucle, je veux bien, mais il faut nous filer plus d'info sur comment sera lancé la macro. Parce que si tu lances la amcro toi meme et que je te mets une boucle, tu n'aura pas la main pour ouvrir ton fichier (un exemple) :
PHP:
Sub Test_v2()
Dim wk As Workbook, bool As Boolean
Do While bool = False
    For Each wk In Application.Workbooks
        If wk.Name = "Barbatruc.xls" Then bool = True
    Next wk
    If bool = False Then
        MsgBox "Le fichier Test.xls va maintenant etre ouvert"
        'Workbooks.Open Filename:="C:\Documents and Settings\Moi\Bureau\Barbatruc.xls"
    End If
Loop
'ici le reste de ton code
End Sub

Comme la macro ci-dessus va tourner en boucle, Ctrl+Pause pour l'arreter.

C'est la raison pour laquelle je te proposais d'ouvrir directement le fichier.

@+
 
Re : Macro vérifiant qu'un fichier est ouvert

En effet, je n'avais pas pensé qu'il serait imposssible d'ouvrir le fichier en cas de boucle.

Bon, c'est pas grave, je ne vais pas faire de boucle.

Par contre j'aimerai qu'il vérifie aussi le nom d'un onglet du fichier. S'il ne le trouve pas dans le fichier, un message s'affiche.

Merci ! 😉
 
Re : Macro vérifiant qu'un fichier est ouvert

re,

Pour tester le nom d'un onglet il te suffit de faire une boucle du genre :
Code:
Dim i%, bool1 As Boolean
 
With Workbooks("nom_du_classeur_ou_tu_veux_que_soit_faite_la_verif.xls")
    For i = 1 To .Sheets.Count
        If .Sheets(i).Name = "Feuil3" Then bool1 = False
    Next i
    If bool1 = True Then MsgBox "ton message"
End With

@+
 
Re : Macro vérifiant qu'un fichier est ouvert

Re tout le monde, 🙂

Une autre piste, vu que ce jour, il y a un fil qui parle de poid et de rapidité, si le nombre de feuille est important, ça se sentira :
Source : Laurent Longre

Par exemple, pour vérifier si le classeur actif contient une feuille de calcul "Toto" :
Dim UneFeuille As WorksheetOn Error Resume NextSet UneFeuille = Sheets("Toto")On Error Goto 0If UneFeuille Is Nothing Then MsgBox "Il n'y a pas de feuille ""Toto"""La variable UneFeuille est déclarée comme Worksheet, mais initialement elle ne contient rien (Nothing). Si l'affectation Set UneFeuille = Sheets("Toto") échoue parce que cette feuille n'existe pas, la variable contiendra toujours Nothing, sinon elle contiendra une Worksheet. On Error Resume Next permet de désactiver la gestion des erreurs et d'éviter un arrêt du programme sur Set UneFeuille = Sheets("Toto").


C'est comme son utilisation de la fonction Dir pour tester l'existence d'un fichier sur un DD, c'est astucieux et super rapide 😉

bonne journée,
 
Re : Macro vérifiant qu'un fichier est ouvert

re,

Je redonne le code mais pas sur une ligne car ce n'etait pas tres compréhensible. Par contre je vais essayer de retenir ce bout de code, c'est effectivement plus pratique, donc merci a toi Brico, apparement lorsqu'il s'agit de rapidité du code, tu es un As !!!
Le code :
Dim UneFeuille As Worksheet
On Error Resume Next
Set UneFeuille = Sheets("Toto")
On Error Goto 0
If UneFeuille Is Nothing Then MsgBox "Il n'y a pas de feuille ""Toto"""

@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…