VBA: ouvrir des classeurs fermés fonction Indirect

Fermé
amandinee31 Messages postés 5 Date d'inscription lundi 24 août 2015 Statut Membre Dernière intervention 25 août 2015 - Modifié par amandinee31 le 24/08/2015 à 16:38
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 - 25 août 2015 à 15:02
Bonjour,

J'utilise dans Excel la fonction indirect qui me permet de trouver des valeurs dans d'autres fichiers selon le nom des cellules (dans l'exemple ci-dessous en A7)

=RECHERCHEV(Data!$G$1;INDIRECT("'W:\XXX\Synthèse\["&A7&".xlsm]6 - Synthèse'!$E:$AG");18;FAUX)

Seulement le résultat me donne des #REF parce que les fichiers sont fermés!
J'ai plus de 700 fichiers en tout mais ils sont tous dans le même répertoire.

J'ai trouvé ce code sur internet mais j'ai toujours les #REF

Dim Repertoire As String, Fichier As String
Dim Wb As Workbook
Dim Ws As Worksheet
Dim i As Integer

Application.ScreenUpdating = False

'Définit la Première feuille du classeur contenant cette macro
'(pour recevoir les donnée extraites dans les autres classeurs).
Set Ws = ThisWorkbook.Worksheets(1)

'Définit le répertoire de recherche
Repertoire = "C:\Documents and Settings\mimi\dossier\"
'Spécifie la recherche pour le fichiers .xls
Fichier = Dir(Repertoire & "*.xls")

'Boucle sur les fichiers du répertoire
Do While Fichier <> ""
'Vérifie que le nom du classeur est différent du classeur
'contenant cette macro (dans le cas ou il serait placé dans le même répertoire).
If ThisWorkbook.Name <> Fichier Then
'Ouvre chaque classeur
Set Wb = Workbooks.Open(Repertoire & Fichier)

'Referme le classeur
Wb.Close False
End If

Fichier = Dir
Loop

Application.ScreenUpdating = True
MsgBox "Terminé"

Pouvez-vous m'aider je ne comprends pourquoi ça ne marche pas.

Merci pour votre aide, je débute en VBA.

2 réponses

Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
24 août 2015 à 22:15
Bonjour,
Juste au passage, il semble que vos classeurs ont l'extension [xlsm], dans ce cas la ligne de code suivante doit être :
Fichier = Dir(Repertoire & "*.xlsm")

0
amandinee31 Messages postés 5 Date d'inscription lundi 24 août 2015 Statut Membre Dernière intervention 25 août 2015
25 août 2015 à 10:17
Bonjour,
Merci pour votre réponse en effet ce sont des fichiers xlsm.
J'ai modifié la macro mais depuis elle tourne en boucle et ne s'arrête pas je suppose qu'elle ouvre les 700 fichiers à la suite les uns des autres et qu'elle va prendre des heures...

Y a t-il une autre solution pour aller plus vite?
Merci
0
Le Pingou Messages postés 12140 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 18 septembre 2024 1 446
25 août 2015 à 15:02
Bonjour,
Oui, dans le code que vous avez présenté il y a une boucle sur le répertoire (ouvre et ferme tous les classeurs.).
Le problème est que l'on ne sait pas ce que vous voulez réaliser exactement.

0