Ouvrir fichier a partir d'une liste

Résolu
guillaume660 -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je me permets de vous contatcer pour un probleme sur une macro.

Je bloque au tout début d'une macro qui consiste a ouvrir un fichier excel grace à une liste situé dans un autre fichier, voila où j'en suis :

[Sub TEST()

For I = 5 To 500

Workbooks.Open range("B" & I).Value + "\" + range("C" & I).Value

Next I
End Sub]

Mais un message d'erreur apparait :\code.xlsx introuvable.

Quelqu'un sait d'où vient le problème ?

Merci.

13 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Il faut l'adresse complète du fichier à ouvrir (disque:\ répertoire\...\nom.xlsx
    0
  2. guillaume660
     
    Bonjour Patrice33740,

    En fait j'ai en colonne B l'adresse du répertoire et en colonne C le nom du fichier.

    Je suis donc obligé de mettre l'adresse complète en colonne B et entre parenthèse ?

    Puis-je choisir l'onglet qui m'intéresse également ?

    Merci
    0
  3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Re,

    Non, le chemin (répertoire) en B et le nom du fichier en C conviennent, il semblerait que le chemin soit vide lors de l'erreur.

    Essaie :
    Sub TEST()
    Dim strFichier As String
    For I = 5 To 500
        strFichier = Range("B" & I).Value & "\" & Range("C" & I).Value
        Workbooks.Open strFichier
    Next I
    End Sub
    


    Avec le débogueur, la variable locale strFichier permet de vérifier que le nom complet du fichier correspond à un fichier existant.
    0
  4. guillaume660
     
    Merci pour ton aide en tout cas !

    Avec ce code le fichier s'ouvre bien mais le même message d'erreur apparaît !

    Le fichier que j'ouvre est un .xlsm, le problème peut-il venir de là ? Sachant que l'extension xlsm est bien précisée dans la colonne C.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Tu dis le fichier s'ouvre, mais avec ce code tu est sensé ouvrir non pas un mais 495 fichiers, il n'y a aucune sécurité en cas d'absence de fichier sur une des 495 lignes explorées.
    0
  7. guillaume660
     
    En fait pour ne pas que la macro dure trop longtemps pendant l'essai, je transforme le i = 5 to 500 en I = 5 to 7, mais quoiqu'il arrive, le message arrive après l'ouverture du premier fichier
    0
  8. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Vérifie que l'exécution des macro est autorisée, vérifie le niveau de sécurité.
    Les macros sont-elles signées numériquement ?
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      Quel est exactement le message d'erreur ? Sur quelle ligne s'arrête l'exécution ?
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      N'y aurait-il pas des cellules fusionnées dans les colonnes B ou C ?
      0
    3. lermite222 Messages postés 9042 Statut Contributeur 1 199
       
      Bonjour, Bonjour Patrice,
      Excusez l'incruste...
      Si les classeurs viennent "d'ailleurs", voir le niveau de sécurité ?
      A+
      0
  9. guillaume660
     
    Messieurs,

    le message d'erreur est le suivant :
    Erreur d'execution 1004
    '\code.xlsx' introuvable. Vérifiez l'orthographe du nom du classeur et la validité de l'emplacement.

    Quand je clique sur débogage la ligne " Workbooks.Open strFichier " est surlignée en jaune.

    Pour ce qui est du niveau de sécurité, c'est la case "activer toutes les macros" qui est cochée (je suis sur excel 2007).

    Dois-je modifier quelque chose ?
    0
  10. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Re,

    Dans le VBE, lors du débogage (ligne surlignée en jaune) affiche les variables locales (affichage / fenêtre variables locales), vérifier la valeur de strFichier.

    Il est fort probable que le fichier n'existe pas.
    0
  11. guillaume660
     
    il y est indiqué :

    Expression : strFichier
    Valeur : "\code"
    Type : string
    0
  12. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Effectivement, "\code" n'est pas un nom de fichier valide

    Essaie :
    Sub TEST()
    Dim wsh As Worksheet
    Dim strFichier As String
    
    Set wsh = ActiveSheet
    For I = 5 To 7
        strFichier = wsh.Range("B" & I).Value & "\" & wsh.Range("C" & I).Value
        Workbooks.Open strFichier
    Next I
    End Sub

    0
  13. guillaume660
     
    Merci beaucoup Patrice,

    ça fonctionne parfaitement !!!!!

    afin que je me couche mons bete ce soir, peux tu m'expliquer ce qui n'allait pas ? (je sais que l'explication est dans le code ci-dessus mais c'est loin d'être clair pour moi...)

    En tout cas merci encore...
    0
  14. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Re,

    En fait, quand le premier fichier s'ouvre, il devient le fichier actif et donc
    Range("B" & I).Value et Range("C" & I).Value sont lus dans ce fichier au lieu du fichier initial.
    En déclarant la feuille active initiale (wsh) et en y faisant référence lors de la lecture du répertoire (wsh.Range("B" & I).Value) et du nom (wsh.Range("C" & I).Value) on évite cette erreur de débutant à laquelle nous faisons tous piéger régulièrement.
    Cordialement
    Patrice
    0