• Initiateur de la discussion Initiateur de la discussion JB
  • 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 !

J

JB

Guest
Bonjour à tous,

Je souhaite fermer un fichier qui est déjà ouvert mais sur lequel je ne suis pas. Alors, je dois l'appeler et le fermer...
Pour l'appeler, c'est un chemin qui se trouve dans un fichier nommé 'feuille d'enregistrement' dans la feuille 'chemin' en A14.
Le gros problème c'est que je n'arrive pas à l'appeler et donc il ne se ferme pas.
Quelqu'un a t il une solution a mon probmème.

Exemple de la macro :
Windows('feuille d'enregistrement.xls').Activate
Dim chemin16 As String
chemin16 = Range('chemin!a14')
Workbooks(chemin16).Activate
ActiveWorkbook.Close Filename:=chemin16

Merci
JB
 
Bonjour JB, le Forum

Une approche différente, boucler sur tous les classeurs ouverts :


Pour FErmer SANS sauver tous les classeurs ouverts à part celui contenant le code :

Sub TheCloser()
Dim WB As Workbook

Application.DisplayAlerts =
False
   
For Each WB In Workbooks
       
If Not WB.Name = ThisWorkbook.Name Then
        WB.Close
False
   
End If
Next

End Sub


La même EN SAUVANTles classeurs :

Option Explicit

Sub TheCloser()
Dim WB As Workbook

Application.DisplayAlerts =
False
   
For Each WB In Workbooks
       
If Not WB.Name = ThisWorkbook.Name Then
        WB.Close
True
   
End If
Next

End Sub

Une variante qui va chercher le non du Classeur à fermer dans la Range 'A14' du classeur où se trouve le code, tout en ne cherchant que les quatres caractères de gauche (NB : fermera donc tous les classeurs qui commencent avec les mêmes 4 caractères)

Option Explicit
Option Compare Text

Sub TheCloser()
Dim WB As Workbook

Application.DisplayAlerts =
False
   
For Each WB In Workbooks
       
If Left(WB.Name, 4) = Left(ThisWorkbook.Sheets('chemin').Range('A14'), 4) Then
        WB.Close
True
   
End If
Next

End Sub


On peut en faire tout plein comme ça !!!


Bonne Soirée
[ol]@+Thierry[/ol]


EDITION !!!
Bonsoir PierreJean, pardon pas vu !

Pour ta syntax c'est correct, mais on peut aussi passer l'argument 'SaveChanges' qui est optional, mais peut rendre service comme dans mes deux premiers exemples

Message édité par: _Thierry, à: 09/02/2006 19:02
 
Merci Pierre Jean et Thierry.
Désolé, pour la première réponse, elle ne me convient pas car le nom du fichier correspond à des imports qui change de nom régulièrement. Je vais donc opter pour la réponse de thierry.

Merci de vous êtes penché sur mon problème.
salutations.
 
- 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

  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
1 K
Retour