XL 2016 VBA: fermer un classeur dont le nom se compose d'une valeur et d'une variable

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

Aloha

XLDnaute Accro
Bonsoir,

J'ai réussi à ouvrir avec VBA un fichier dont le nom se compose d'une valeur d'une cellule, suivie d'un espace, suivi d'une variable représentant l'année.
Code:
Workbooks.Open Filename:=strPfad  "\" & Range("K1") & "\" & Range("K1") & " " & intYear & ".xlsx"
D'ailleurs, j'avais oublié l'extension mais le fichier s'est ouver quand-même, à mon grand étonnement.
A la fin de la macro je veux refermer le fichier mais je n'y arrive pas.
Avec le code suivant
Code:
Dim Classeur as String
Classeur= Range("K1") & intYear
Workbooks(Classeur).Close
j'obtiens un message d'erreur affirmant que "l'indice n'appartient pas à la sélection".

Bonne soirée
Aloha
 
Bonsoir JM,

Ce n'est pas de cette opération-là qu'il s'agit. Elle devait copier des saisies, et ce code-ci doit produire des fiches vides. Et avec mes formules INDIRECT() je dois ouvrir le fichier vers lequel elles pointent, ce que j'arrive à faire, mais je n'arrive pas à le refermer.
J'ai bien sûr étudié ton code, mais je ne suis pas à même d'en tirer parti pour cette affaire-ci.

Bonne soirée
Aloha
 
Re

@Aloha
Et pourtant tu avais tout à disposition dans le fil que je cite
'On ouvre un classeur
Set Source = Application.Workbooks.Open("C:\STAPLE1600\Fichier source.xls")
'On le ferme
Source.Close False

Donc si je m'en sers avec le code de ce fil, cela donne
VB:
Set Classeur=Workbooks.Open(Filename:=strPfad  "\" & Range("K1") & "\" & Range("K1") & " " & intYear & ".xlsx")
'le reste du code de ta macro
Classeur.Close True

CQFD!
 
Re,
Ups, désolé, probablement frappé de cécité momentanée, je n'avais pas vu le code.
Je l'ai intégré, mais à cette ligne
Code:
Set Classeur= Workbooks.Open(Filename:=strPfad & "\" & Range("K1") & "\" & Range("K1") & " " & intYear & ".xlsx")
je rçois un message d'erreur: "Erreur de compilation. Objet requis".
A+
Aloha
 
Re

@Aloha
Relis le code du fil que je citais dans mon premier message.
Tu remarqueras que les variables sont déclarés en début de code

NB: Tu as quand même 10 ans d'inscription sur le forum, mon petit bonhomme 😉
Je vais pas tout de réapprendre quand même 😉

Avec un Dim Classeur As Workbook
(comme dans le premier exemple, ça devrait mieux marcher ...)
 
Re,
J'avais mal déclaré la variable; lorsqu'elle est coirrectement déclarée comme String, le code fonctionne! Merci
Bonne soirée
Aloha

P.S.: nos messages se sont croisés
Je suis ici depuis longtemps en effet, avec une longue pause ces dernières années, mais je me suis surtout occupé de solutions avec des formules dans le temps.
 
Re

N'importe quoi!!
Tel qu'écrit Classeur doit être déclaré as Workbook !!!

VB:
Sub Test()
Dim Classeur As Workbook
Set Classeur=Workbooks.Open(Filename:=strPfad  "\" & Range("K1") & "\" & Range("K1") & " " & intYear & ".xlsx")
'le reste du code de ta macro
Classeur.Close True
End Sub
 
Re,
Ouïïe! Tu as raison, je me suis trompé; je voulais dire le contraire: comme String il ne fonctionnait pas, mais comme Workbook bien.
Merci encore.
Avec ça, un autre petit problème résolu.
Faute de mieux j'avais commencé par ouvrir tous les fichiers à la fois. Comme il y a énormément de formules cela ralentissait davantage encore.
Je continue mon chemin et mon prochain problème n'est sûrement pas loin!
Bonne nuit
Aloha
 
- 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

Discussions similaires

Retour