IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA : Workbooks.Open() Erreur 1004 : alors que le fichier existe.


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    enquiquineur d'unparia
    Inscrit en
    Février 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : enquiquineur d'unparia

    Informations forums :
    Inscription : Février 2014
    Messages : 82
    Par défaut VBA : Workbooks.Open() Erreur 1004 : alors que le fichier existe.
    Hello,

    Alors voilà,
    Je fais tourner mensuellement une petite macro qui réalise pour moi des simulations.
    Bref, pour faire le fichier en question accède à un tierce fichier et il se trouve que ce mois-ci, une erreur survient.

    Initialement j'avais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set WB_NG = Workbooks.Open(WS_tabdebord.Range("B2") & WS_tabdebord.Range("B4"), Editable:=True)
    Que j'ai changé afin de pouvoir test mes variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim tPath As String
    tPath = Dir(WS_tabdebord.Range("B2") & WS_tabdebord.Range("B4")) 'j observe que tPath n est pas "", et trouve bien le fichier
    Set WB_NG = Workbooks.Open(tPath , Editable:=True) 'je lance la méthode > elle n'aboutira jamais : Erreur 1004.

    Si quelqu'un connait les causes possibles d'une erreur 1004.

    Après quelques lectures j'ai lu que cela pouvait être dû à une corruption du fichier; je n'espère pas mais je ne sais pas comment le tester - sachant que je peux l'ouvrir à la main.
    Le fichier est sur un réseau mais j'ai testé l'ouverture du même fichier sur mon bureau l'erreur est la même.

    J'ai essayé d'ouvrir un autre fichier vide (.xlsx) et je n'ai eu aucun pb (mon fichier est en .xlsb).

    Merci d'avance!

    Cdt,
    MS

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    tPath contient le nom du fichier, et uniquement son nom.

    Ajoute le chemin d'accès

  3. #3
    Membre confirmé
    Homme Profil pro
    enquiquineur d'unparia
    Inscrit en
    Février 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : enquiquineur d'unparia

    Informations forums :
    Inscription : Février 2014
    Messages : 82
    Par défaut
    Oui en voulant laisser mon code plus propre ici j'y ai inclus une erreur...

    Bref, j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim tPath As String
    tPath = Dir(WS_tabdebord.Range("B2") & WS_tabdebord.Range("B4")) 'j observe que tPath n est pas "", et trouve bien le fichier
    tPath = WS_tabdebord.Range("B2") & WS_tabdebord.Range("B4")
    Set WB_NG = Workbooks.Open(tPath , Editable:=True) 'je lance la méthode > elle n'aboutira jamais : Erreur 1004.
    Désolé et merci ^^

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tPath = WS_tabdebord.Range("B2") & WS_tabdebord.Range("B4") & ".xlsb"

  5. #5
    Membre confirmé
    Homme Profil pro
    enquiquineur d'unparia
    Inscrit en
    Février 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : enquiquineur d'unparia

    Informations forums :
    Inscription : Février 2014
    Messages : 82
    Par défaut
    L'extension est déjà contenu dans : WS_tabdebord.Range("B4")

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Dans ce cas, essaye de voir ce qui se passe si tu la retires.

    J'ai déjà rencontré un problème similaire de macro qui marchait ou pas en fonction de PC, tout ça parce que certains avaient coché l'option "Masquer les extensions" et d'autres pas.

  7. #7
    Membre confirmé
    Homme Profil pro
    enquiquineur d'unparia
    Inscrit en
    Février 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : enquiquineur d'unparia

    Informations forums :
    Inscription : Février 2014
    Messages : 82
    Par défaut
    Hello,

    Merci pour ta rapide réponse.

    Et bien non ce n'est pas ça, mais j'ai oublié de fournir un autre indice que me donne excel / vba :

    Avant d'échouer la macro tente bien d'ouvrir le document : une barre de chargement apparaît et charge (le document étant sur le réseau il s'agit du 'téléchargement' du document), et une fois la barre pleine, c'est là que la méthode plante.

    Je pense donc que c'est à l'accès du fichier qu'il y a un problème.

    J'ai déjà essayé de le mettre sur mon bureau pour être sûr que ça ne soit pas le réseau qui fasse planter la macro.


    Bien à vous,

    MS !

  8. #8
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    peux-tu nous donner le contenu exact de cette chaine de caractère ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WS_tabdebord.Range("B2") & WS_tabdebord.Range("B4") & ".xlsb"
    bien sûr, remplace par des XXX d'éventuels noms qui doivent rester confidentiels
    on voit ici, assez souvent, des oublis de slash ou des espaces parasites

  9. #9
    Membre confirmé
    Homme Profil pro
    enquiquineur d'unparia
    Inscrit en
    Février 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : enquiquineur d'unparia

    Informations forums :
    Inscription : Février 2014
    Messages : 82
    Par défaut
    Bonjour,

    Voici les chaines, copié collé EXACT :
    Z:\10.A. Portfolio Management - TOOLS\10. Galileo\Stress test\

    NAV Galileo V3 20170706.xlsm


    Mais comme je le dis plus haut, je pense que le chemin est bon puisque j'observe la macro tenter d'ouvrir le fichier (il lance la barre de chargement du fichier) mais c'est au moment d'y accéder, de montrer les données, que la méthode échoue...

    Bien à toi ,)

  10. #10
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Arrives-tu à l'ouvrir manuellement ce fichier ?
    tu nous montres un fichier avec l'extension .xlsm et tu nous as indiqué que ton fichier était un .xlsb, il n'y a pas problème sur l'extension ?

    tu indiques avoir tenté de le placer sur ton bureau pour l'ouvrir en local, mais tu ne dis pas si ça fonctionnait également

  11. #11
    Membre confirmé
    Homme Profil pro
    enquiquineur d'unparia
    Inscrit en
    Février 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : enquiquineur d'unparia

    Informations forums :
    Inscription : Février 2014
    Messages : 82
    Par défaut
    L'ouverture à la main fonctionne.

    Le fichier peut être xlsb ou xlsm ça n'a pas d'importance, c'est pourquoi la macro récupère le chemin complet sur la feuille.

    Et que le fichier soit sur le bureau ou le réseau ça ne marche pas.

    Par contre la macro marche très bien sur un autre fichier excel. (c-a-d : quand je modifie l'emplacement et le nom dans les cellules)

  12. #12
    Membre confirmé
    Homme Profil pro
    enquiquineur d'unparia
    Inscrit en
    Février 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : enquiquineur d'unparia

    Informations forums :
    Inscription : Février 2014
    Messages : 82
    Par défaut
    Je n'ai toujours pas trouvé l'origine du problème, peut être devrais-je spécifier certains arguments facultatifs ?

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    *
    Dim tPath As String
    tPath=WS_tabdebord.Range("B2") 
    If  Right(tPath,1) <>"\" then tPath= tPath & "\"
    tPath = Dir(tPath & WS_tabdebord.Range("B4")) 'j observe que tPath n est pas "", et trouve bien le fichier
    Set WB_NG = Workbooks.Open(tPath , Editable:=True) 'je lance la méthode > elle n'aboutira jamais : Erreur 1004.

  14. #14
    Membre confirmé
    Homme Profil pro
    enquiquineur d'unparia
    Inscrit en
    Février 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : enquiquineur d'unparia

    Informations forums :
    Inscription : Février 2014
    Messages : 82
    Par défaut
    Bonjour à tous,

    J'ai finalement réussi, cependant je ne comprend pas : donc je suis assez perplexe !

    Il a fallu que je rajoute l'argument CorruptLoad:=xlRepairFile.

    Le fichier s'ouvre et la macro continue. Je suis entrain de regarder quelles sont les implications exactes, si vous avez des infos je suis preneur, sinon je mettrais en "résolu" d'ici quelques jours.

    Merci

Discussions similaires

  1. [XL-2013] Méthode Workbooks.Open erreur 1004 non géré en natif
    Par ranzoken dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/08/2015, 11h25
  2. Workbooks.Open : Erreur "Argument ou appel de procédure incorrect"
    Par Kropernic dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 31/07/2008, 09h49
  3. Réponses: 28
    Dernier message: 23/08/2007, 11h19
  4. [MySQL] réponse vide alors que le champs existe dans la table, sans retour d'erreur
    Par ben_skywalker dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 15/02/2007, 14h20
  5. [VBA Access] Champ texte null alors que l'objet existe bien.
    Par Caroline1 dans le forum VBA Access
    Réponses: 9
    Dernier message: 28/03/2006, 17h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo