Erreur 1004 fichier introuvable

Signaler
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,
Etant en stage actuellement dans une entreprise, je souhaite automatiser un peu mon travail. Je pars pour cela d'une macro déjà existante (bien complexe en passant). Je dois l'appliquer à tous les fichiers d'un répertoire mais j'ai du mal car celle-ci utilise un application.filedialogue.

Le principe est de se placer dans notre fichier final avec une mise en forme prédéfinis, on lance la macro, elle nous demande de sélectionner le fichier à partir duquel elle va rechercher les informations et va finalement tout mettre en page (création d'onglets, récupération de données etc...). J'ai donc essayer de l'automatiser comme cela :

Sub lancer_une_macro_dans_tous_les_fichiers_dun_dossier_aaa()
Dim Rep As String, FichS As String, FichD As String
Rep = "\\nom-du-serveur.net\Test en situation réel\2\"
FichD = ActiveWorkbook.Name
FichS = Dir(Rep & "*.xls*")
Do While FichS <> ""
Workbooks.Open FichS
Set xlBook = ActiveWorkbook
FichD.Activate
Call Macro_Lettre_Interco_4
Workbooks(FichS).Close
FichS = Dir
Loop
End Sub



La ligne en gras me donne l'erreur 1004 : fichier introuvable. Cependant elle me donne le nom du fichier (qui n'est pas présent dans la macro). Pour moi il me parait donc logique que la macro ait bien trouvé mon fichier...
Si quelqu'un à des pistes je suis preneur.

11 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour,
on voit dès le premier coup d'oeil que Fichd est une chaîne de caractères (un nom de classeur)
Cette ligne :
 FichD.Activate

ne saurait donc fonctionner.
Un classeur se définit dans la collection WorkBooks ainsi
WorkBooks(nom_du_classeur) et non par nom_du_classeur.
Bonjour,

La ligne est la car j'ai repris la macro du net et je ne l'ai pas enlevé, je ne me sers pas du fichD. (En supprimant la ligne l'erreur reste la même).

Cependant merci pour l'explication. J'approfondis chaque jour mes connaissances en VBA.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Que tu "t'en serves" ou pas, cette ligne provoque une erreur !
1) Prends s'il te plait l'habitude de ne montrer ici que le code dont tu te sers.
2) quelle est la ligne d'erreur ?
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Dac, la ligne d'erreur est la suivante :
Workbooks.Open FichS


c'est curieux car j'utilise quasiment la même macro dans d'autres fichiers et je n'ai aucun soucis.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Et (bien sûr, juste pour montrer que tu ne sais pas que copier/coller) tu as pensé à vérifier ce que contenait FichS, juste avant de tenter de l'ouvrir ?
Alors : dis-nous : que contient donc cette variable à ce moment-là ?
Bien sur,

FichS = Dir(Rep & "*.xls*")

Rep contient le chemin du répertoire ou se trouvent tous mes fichiers, la deuxième partie va prendre tous les fichiers ayant une extensions xls, xlsx, xlsm etc... (il va les prendre tous mais un par un si je ne m'abuse, c'est pour ça qu'on a une boucle loop)

Je me demandais justement si l'erreur pouvait venir du fait que le chemin du répertoire est trop long et qu'il se situe sur un serveur ?
Mais comme dit j'utilise quasiment la même macro sur des fichiers situés presque au même endroit et je n'ai aucun soucis...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Ta réponse ne répond absolument pas à ma question !
Je ne t'ai pas invité à dire ce que tu espérais que contienne la variable FichS, mais ce qu'elle contient DE FAIT ! (une chaîne de caractères, donc).
Bis repetita : que contient-elle ?
Si tu ne comprends pas cette question simple (dire quelle chaîne de caractères contient de fait une variable), pardonne-moi, mais je cède ma place à d'autres ... (trop âgé et usé pour accepter de continuer sur de telles "bases". Le "minimum" n'est pas là...).

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Sinon pour information, le fait de venir demander de l'aide sur un forum est justement du au fait qu'on ne sait pas tout. De plus pour ma part je n'ai pas de formation informatique, je met le nez dans les macros car on me le demande et que je trouve cela intéressant. Ce n'est pas la première fois que je poste et que je me fais remballer gentiment par tes soins.

Si tu viens sur un forum pour dire aux personnes qu'ils n'ont pas toutes les bases qu'ils devraient avoir alors que toi tu les as, félicitation, tu fais sans doute partie des meilleurs.

Sinon tu peux m'aider à résoudre mon problème concrétement au lieu de me faire passer un test.

De plus il me parait juste naturel que "fichS" contient une variable, désolé si je ne connais pas les terme précis mais comme dit plus haut je ne suis pas de formation informatique.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
C'est une plaisanterie ou quoi, là ?
Tu ne sais pas lire le contenu d'une variable en mode debug ?
Tu ne sais pas non plus, si tu ne sais pas utiliser le debug, l'afficher à l'aide d'une simple msgbox ?
Ce sont là des gestes très élémentaires, y compris et surtout pour un débutant de chez débutant !
Ne pas les connaître signifie que tu veux brûler les étapes, y compris celles de tout premier niveau .. et que tu penses que développer est "ramasser" du code sur le net, le copier, le coller ... et demander qu'on le corrige ...
Mais tu veux ... développer ...
Bonne chance

EDIT et pour ton information : la connaissance du contenu de ta variable fichS était et est indispensable à la découverte de la raison de ton message d'erreur.
Point barre

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Re-bonjour,

Si certaines personnes seraient amenées à avoir le même type de problème, il faut simplement remplacer

Workbooks.Open FichS


Par

Workbooks.Open Rep & FichS


Problème résolu par mes propres moyens.

Bonne journée.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
ce que t'aurait très précisément permis de découvrir depuis longtemps un simple
msgbox FichS

l'erreur aurait alors été très "visible". Elle aurait d'ailleurs pu être autre ...(par exemple et entre autres : aucun fichier correspondant au critère et donc fichS aurait contenu "")
Bref ...
Au passage : le deuxième "*" dans FichS = Dir(Rep & "*.xls*") pourrait un jour être une autre source d'erreur. Si par exemple ta version de Office était inférieure à celle utilisée sur le répertoire ouvert.
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.