XL 2013 macro qui vérifie si 2 fichiers Excel ouvert sur mon ordinateur, sont bien effectivement ouvert

onyirimba

XLDnaute Occasionnel
Supporter XLD
Bonjour,

Je souhaite créer une macro qui vérifie si 2 fichiers (AZERTY1.xlsx et AZERTY2.xlsx) ouvert sur mon ordinateur, sont bien effectivement ouvert.

J'ai essayé le codage ci-après mais cela mais ne fonctionne pas.
Est-ce qu'1 personne peut m'aider ?


Sub fichier ouvert ()

If Windows("AZERTY1.xlsx").Activate = False

Then MsgBox "Le fichier n'est pas ouvert"
Else


If Windows("AZERTY2.xlsx").Activate = False

Then MsgBox "Le fichier n'est pas ouvert"
Else

End If

End If

End sub




Merci d'avance pour votre aide
 
C

Compte Supprimé 979

Guest
Bonjour onyirimba, Yeahou

Ou plus simple ;) mais toujours une fonction personnalisée
VB:
Function FichierOuvert(sWbk As String) As Boolean
  On Error Resume Next
  FichierOuvert = Not Workbooks(sWbk) Is Nothing
End Function

A+
 

onyirimba

XLDnaute Occasionnel
Supporter XLD
Bonjour onyirimba, le forum

Il y a plusieurs façons de faire mais vous pouvez utiliser cette fonction personnalisée qui est pratique d'utilisation et facilement réutilisable.

Bien cordialement, @+
https://www.excel-downloads.com/threads/classeur_ouvert.20056282/
J'ai essayé avec le codage ci-après mais cela ne fonctionne pas
qu'est-ce qui ne va pas ?

Sub fichier ouvert ()
If Windows("AZERTY1.xlsx").Activate = False
Then MsgBox "Le fichier n'est pas ouvert"
Else
If Windows("AZERTY2.xlsx").Activate = False
Then MsgBox "Le fichier n'est pas ouvert"
Else
End If
End If

End sub


Function Classeur_Ouvert(AZERTY1.xlsx) As Boolean
'Fonction Classeur_Ouvert V1.2 By Yeahou, Excel toutes versions (non testé sur Mac)
'renvoie Vrai si le classeur est ouvert
On Error Resume Next
Application.Volatile
Dim Test_Objet As Workbook
Set Test_Objet = Workbooks(AZERTY1.xlsx)
Classeur_Ouvert = Not Test_Objet Is Nothing
End Function



Merci d'avance
 

onyirimba

XLDnaute Occasionnel
Supporter XLD
Bonjour onyirimba, le forum

Il y a plusieurs façons de faire mais vous pouvez utiliser cette fonction personnalisée qui est pratique d'utilisation et facilement réutilisable.

Bien cordialement, @+
https://www.excel-downloads.com/threads/classeur_ouvert.20056282/
Merci encore pour ton aide.

J'ai essayé avec le code ci-après cependant le fichier "Classeur2" est ouvert sur mon ordinateur et pourtant je reçois 1 message de la macro qui dit que ce fichier n'est pas ouvert

Pourquoi cette incohérence ?

Sub fichier()

MsgBox Classeur_Ouvert(Classeur2)


End Sub


Function Classeur_Ouvert(Classeur2) As Boolean
'Fonction Classeur_Ouvert V1.2 By Yeahou, Excel toutes versions (non testé sur Mac)
'renvoie Vrai si le classeur est ouvert
On Error Resume Next
Application.Volatile
Dim Test_Objet As Workbook
Set Test_Objet = Workbooks(Classeur2)
Classeur_Ouvert = Not Test_Objet Is Nothing
End Function
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Re,

Pourquoi cette incohérence ?
il n'y a aucune incohérence.
Set Test_Objet = Workbooks(Classeur2)
De la façon dont vous l'utilisez, vous envoyez à la fonction un objet VB Classeur2 qui n'a rien à voir avec un classeur et qui n'existe pas.
Il faut envoyer une chaine texte du nom complet du classeur et vous n'avez pas à modifier la fonction, vous l'utilisez telle quelle et elle passera sur tous les fichiers.
si votre classeur2 n'est pas enregistré et n'a pas encore d'extension, vous pouvez l'appeler comme ceci
MsgBox Classeur_Ouvert("Classeur2")
les guillemets font toute la différence
pour un fichier déja enregistré, n'oubliez pas l'extension
MsgBox Classeur_Ouvert("AZERTY1.xlsx")
 

onyirimba

XLDnaute Occasionnel
Supporter XLD
Re,


il n'y a aucune incohérence.

De la façon dont vous l'utilisez, vous envoyez à la fonction un objet VB Classeur2 qui n'a rien à voir avec un classeur et qui n'existe pas.
Il faut envoyer une chaine texte du nom complet du classeur et vous n'avez pas à modifier la fonction, vous l'utilisez telle quelle et elle passera sur tous les fichiers.
si votre classeur2 n'est pas enregistré et n'a pas encore d'extension, vous pouvez l'appeler comme ceci
MsgBox Classeur_Ouvert("Classeur2")
les guillemets font toute la différence
pour un fichier déja enregistré, n'oubliez pas l'extension
MsgBox Classeur_Ouvert("AZERTY1.xlsx")
merci beaucoup pour l'information
 

Discussions similaires

Réponses
4
Affichages
678

Statistiques des forums

Discussions
314 780
Messages
2 112 883
Membres
111 691
dernier inscrit
pino418