Erreur 1004 Fichier Introuvable

YaGo

XLDnaute Junior
Bonjour,

Lors du lancement de la procédure ci-dessous, j'obtiens le message suivant:
"KV XXX.xls" introuvable. Vérifiez l'orthographe du nom du classeur et la validité de l'emplacement.

L'erreur s'effectue sur cette ligne: Set KeyValue = Workbooks.Open(WorkbookSlave)

L'orthographe est pourtant bien la bonne et le fichier esclave est situé dans le même dossier que le fichier maitre.
Pouvez-vous m'éclairer sur l'erreur que j'ai pu effectuer dans mes lignes de codes?

Option Explicit

Sub CollectRatio()
Dim WorkbookMaster As Workbook, WorkbookSlave As String
Dim Ratio, KeyValue, Table, TabTotal
Dim i As Integer, LastRowTab As Integer, Index As Integer

Set WorkbookMaster = ActiveWorkbook
Set Ratio = WorkbookMaster.Sheets("Tableau")
WorkbookSlave = Dir(ActiveWorkbook.Path & "\KV*.xls")
MsgBox "ok"
Do While WorkbookSlave <> ""
Set KeyValue = Workbooks.Open(WorkbookSlave)
Set Table = KeyValue.Sheets("Tableau")

Table.Activate
Table.Select

LastRowTab = Range("A6").End(xlDown).Row 'Dernière ligne de la base de données
TabTotal = Range("A6:V" & LastRowTab) 'Mise en place des valeurs dans le tableau
For i = LBound(TabTotal) To UBound(TabTotal)
If Len(TabTotal(i, 20)) <> 0 And TabTotal(i, 22) = "1" Then TabTotal(i, 20).Copy
Index = i
Next

Ratio.Activate
Ratio.Select

LastRowTab = Range("A6").End(xlDown).Row 'Dernière ligne de la base de données
TabTotal = Range("A6:V" & LastRowTab) 'Mise en place des valeurs dans le tableau
TabTotal(Index, 8).Paste

Application.DisplayAlerts = False
Workbooks(WorkbookSlave).Close
WorkbookSlave = Dir ' Classeur suivant
Loop
End Sub

Merci et Bonne Journée

YaGo
 

Pierrot93

XLDnaute Barbatruc
Re : Erreur 1004 Fichier Introuvable

Re,

Le seul petit problème c'est que je ne souhaite pas que le fichier s'ouvre mais seulement récupéré certaines valeurs présentes à l'intérieur.

bah... dans ton code tu lances l'instruction "open"...

Code:
Workbooks.Open

pour récupérer des données sans ouvrir les fichiers, fais une recherche sur ADO, tu devrais trouver des exemples...
 

YaGo

XLDnaute Junior
Re : Erreur 1004 Fichier Introuvable

ReBonjour,

J'ai regardé un peu les systèmes de connections et manipulations dans les classeurs Excel fermés avec ADO et j'ai pu remarqué que le code était plus difficile à réaliser et que certaines fonctionnalité n'était pas réalisable tel que modifier une cellule contenant une formule ou d'utiliser un classeur protégé par un mot de passe...

Donc je voulais savoir si dans le carde d'un projet avec un classeur maitre qui doit venir chercher plusieurs données dans des classeurs esclave quelle méthode est la plus adapté et la plus rapide? (Désoler mais mes connaissances en programmation sont assez limité....)

Car le fait d'ouvrir un fichier excel puis le refermé est-il beaucoup plus long qu'une démarche ADO?

Ya-Go
 

Pierrot93

XLDnaute Barbatruc
Re : Erreur 1004 Fichier Introuvable

Bonjour,

Car le fait d'ouvrir un fichier excel puis le refermé est-il beaucoup plus long qu'une démarche ADO?

tu peux toujours ouvrir et refermer les classeurs en question, ce en utilisant la proposition post #5 cela sera plus rapide... vitesse par rapport à ADO, aucune idée, pas sur que cela soit significatif...

bonne journée
@+
 

YaGo

XLDnaute Junior
Re : Erreur 1004 Fichier Introuvable

Ok merci

Je vais donc faire sans ADO pour le moment.

Juste une dernière question, Je n'arrive pas à copier les valeurs de mon tableau esclave vers le tableau maitre...

Le problème viens de cette ligne: Ratio.TabTotal(i, 8).Value = Table.TabTotal(i, 20).Value

"Erreur 438: Propriété ou méthodes non gérée par cet objet"

Code:
Option Explicit

Sub CollectRatio()
    Dim WorkbookMaster As Workbook, WorkbookSlave As String
    Dim Ratio, KeyValue, Table
    Dim i As Integer, LastRowTab As Integer, Index As Integer
    
    Set WorkbookMaster = ActiveWorkbook
    Set Ratio = WorkbookMaster.Sheets("Tableau")
    WorkbookSlave = Dir(ActiveWorkbook.Path & "\KV*.xls")
    Do While WorkbookSlave <> ""
        Set KeyValue = Workbooks.Open(ActiveWorkbook.Path & "\" & WorkbookSlave)
        Set Table = KeyValue.Sheets("Tableau")
        
        LastRowTab = Range("A6").End(xlDown).Row  'Dernière ligne de la base de données
        TabTotal = Range("A6:V" & LastRowTab) 'Mise en place des valeurs dans le tableau
        For i = LBound(TabTotal) To UBound(TabTotal)
            If Len(TabTotal(i, 20)) <> 0 And TabTotal(i, 22) = "1" Then
            MsgBox TabTotal(i, 20)
            Ratio.TabTotal(i, 8).Value = Table.TabTotal(i, 20).Value
            End If
        Next
        
        Application.DisplayAlerts = False
        Workbooks(WorkbookSlave).Close
        WorkbookSlave = Dir ' Classeur suivant
    Loop
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Erreur 1004 Fichier Introuvable

Re,

A noter, ces instructions s'appliquent sur la feuille active :

Code:
        LastRowTab = Range("A6").End(xlDown).Row  'Dernière ligne de la base de données
        TabTotal = Range("A6:V" & LastRowTab) 'Mise en place des valeurs dans le tableau

il y a sans doute lieu d'utiliser la variable objet adéquate si pas le cas...
 

YaGo

XLDnaute Junior
Re : Erreur 1004 Fichier Introuvable

Effectivement le tableau virtuel de cette feuille marche car il me renvoie la bonne valeur demandé mais impossible de la copier même avec l'instruction suivante...
Code:
LastRowTab = Range("A6").End(xlDown).Row  'Dernière ligne de la base de données esclave
TabTotal = Range("A6:V" & LastRowTab) 'Mise en place des valeurs dans le tableau esclave
     For i = LBound(TabTotal) To UBound(TabTotal)
            If Len(TabTotal(i, 20)) <> 0 And TabTotal(i, 22) = "1" Then
            MsgBox TabTotal(i, 20)
            TabTotal(i, 20).Copy
            End If
     Next
 

Statistiques des forums

Discussions
312 503
Messages
2 089 059
Membres
104 014
dernier inscrit
Aurélie MONTEIL