Bonjour à toutes et à tous,
Une nouvelle fois je me trouve face à un petit soucis.
Après plusieurs recherches sur différentes pages, je ne trouve pas réponse à ce problème...
Je me permets ces quelques lignes dans l'espoir d'avoir votre aide.
J'utilise 2 fichiers :
- Essai1.xlsm (Emplacement D:\TEST)
- Essai2.xlsm (Emplacement D:\TEST)
Le fichier N°1 contient l'ensemble de mes Macros qui vont traitées mes données à destination de mon fichier N°2.
Actuellement, mes macros fonctionnent toutes À LA CONDITION que le fichier N°2 ne soit pas déjà ouvert...
Et c'est là tout mon problème :-(
J'ai 2 options :
la première, c'est de lancer mes macros et malheureusement, si le fichier N°2 est déjà ouvert, un message d'erreur apparaît (Erreur d'exécution '9' L'indice n'appartient pas à la sélection)
la seconde, en cas de message d'erreur, FERMER MANUELLEMENT le 2ème fichier et relancer mes macros.
J'aimerais pour éviter ce message, faire un test qui me ferme si nécessaire le fichier N°2 pour ensuite poursuivre l'exécution de mes macros.
Comme je disais plus haut, après plusieurs recherches, je suis tombé sur quelques lignes de code dont celles-ci :
Sub TestFichierOuvert()
Dim Verification As Boolean
Dim MonClasseur As String
MonClasseur = "D:\TEST\Essai2.xlsm"
'Test si Fichier Existant
If Len(Dir(MonClasseur)) = 0 Then 'Si pas existant, Avertissement et Fin de Macro
MsgBox "Le classeur n'existe pas ou à été déplacé, impossible de poursuivre.", vbCritical, "Erreur"
Exit Sub
End If
'Si le Classeur existe, vérifier s'il est déjà ouvert
Verification = EstClasseurOuvert(MonClasseur)
If Verification = False Then 'Classeur ouvert
MsgBox "Classeur Ouvert"
Else
Workbooks(MonClasseur).Close SaveChanges:=False
End If
End Sub
Le 1er test pour savoir si le fichier est existant ou non m'importe peu, mais est fonctionnel alors je l'ai laissé (mon fichier existe et le sera toujours, mais sait-on jamais....)
Le 2ème test en revanche me génère une erreur (Erreur d'exécution '9' L'indice n'appartient pas à la sélection).
erreur sur la ligne :
Workbooks(MonClasseur).Close SaveChanges:=False
Auriez vous une idée, une remarque ou mieux encore, une solution afin de fermer automatiquement le fichier N°2 pour le cas ou celui-ci serait déjà ouvert et poursuivre sereinement la suite du code?
Par avance merci pour votre retour.
Excellente journée à toutes et à tous
Johann
Une nouvelle fois je me trouve face à un petit soucis.
Après plusieurs recherches sur différentes pages, je ne trouve pas réponse à ce problème...
Je me permets ces quelques lignes dans l'espoir d'avoir votre aide.
J'utilise 2 fichiers :
- Essai1.xlsm (Emplacement D:\TEST)
- Essai2.xlsm (Emplacement D:\TEST)
Le fichier N°1 contient l'ensemble de mes Macros qui vont traitées mes données à destination de mon fichier N°2.
Actuellement, mes macros fonctionnent toutes À LA CONDITION que le fichier N°2 ne soit pas déjà ouvert...
Et c'est là tout mon problème :-(
J'ai 2 options :
la première, c'est de lancer mes macros et malheureusement, si le fichier N°2 est déjà ouvert, un message d'erreur apparaît (Erreur d'exécution '9' L'indice n'appartient pas à la sélection)
la seconde, en cas de message d'erreur, FERMER MANUELLEMENT le 2ème fichier et relancer mes macros.
J'aimerais pour éviter ce message, faire un test qui me ferme si nécessaire le fichier N°2 pour ensuite poursuivre l'exécution de mes macros.
Comme je disais plus haut, après plusieurs recherches, je suis tombé sur quelques lignes de code dont celles-ci :
Sub TestFichierOuvert()
Dim Verification As Boolean
Dim MonClasseur As String
MonClasseur = "D:\TEST\Essai2.xlsm"
'Test si Fichier Existant
If Len(Dir(MonClasseur)) = 0 Then 'Si pas existant, Avertissement et Fin de Macro
MsgBox "Le classeur n'existe pas ou à été déplacé, impossible de poursuivre.", vbCritical, "Erreur"
Exit Sub
End If
'Si le Classeur existe, vérifier s'il est déjà ouvert
Verification = EstClasseurOuvert(MonClasseur)
If Verification = False Then 'Classeur ouvert
MsgBox "Classeur Ouvert"
Else
Workbooks(MonClasseur).Close SaveChanges:=False
End If
End Sub
Le 1er test pour savoir si le fichier est existant ou non m'importe peu, mais est fonctionnel alors je l'ai laissé (mon fichier existe et le sera toujours, mais sait-on jamais....)
Le 2ème test en revanche me génère une erreur (Erreur d'exécution '9' L'indice n'appartient pas à la sélection).
erreur sur la ligne :
Workbooks(MonClasseur).Close SaveChanges:=False
Auriez vous une idée, une remarque ou mieux encore, une solution afin de fermer automatiquement le fichier N°2 pour le cas ou celui-ci serait déjà ouvert et poursuivre sereinement la suite du code?
Par avance merci pour votre retour.
Excellente journée à toutes et à tous
Johann