Ouvrir fichier a partir d'une liste
Résolu
guillaume660
-
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Patrice33740 Messages postés 8561 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.
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.
A voir également:
- Ouvrir fichier a partir d'une liste
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Liste déroulante excel - Guide
- Ouvrir fichier .dat - Guide
- Comment ouvrir un fichier docx ? - Guide
13 réponses
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
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
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 :
Avec le débogueur, la variable locale strFichier permet de vérifier que le nom complet du fichier correspond à un fichier existant.
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.
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
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
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 ?
Les macros sont-elles signées numériquement ?
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 ?
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 ?
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.
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.
Effectivement, "\code" n'est pas un nom de fichier valide
Essaie :
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
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...
ç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...
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
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