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

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
 

Aloha

XLDnaute Accro
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
 

Staple1600

XLDnaute Barbatruc
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!
 

Aloha

XLDnaute Accro
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
 

Staple1600

XLDnaute Barbatruc
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 ...)
 

Aloha

XLDnaute Accro
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.
 

Staple1600

XLDnaute Barbatruc
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
 

Aloha

XLDnaute Accro
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
 

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 193
Membres
112 679
dernier inscrit
Yupanki