Ouvrir fichier a partir d'une liste

Résolu/Fermé
guillaume660 - 14 mars 2011 à 18:38
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 15 mars 2011 à 21:42
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.
A voir également:

13 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
14 mars 2011 à 18:44
Il faut l'adresse complète du fichier à ouvrir (disque:\ répertoire\...\nom.xlsx
0
guillaume660
14 mars 2011 à 19:59
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
14 mars 2011 à 23:36
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
guillaume660
15 mars 2011 à 08:15
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
15 mars 2011 à 08:25
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
guillaume660
15 mars 2011 à 08:38
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
15 mars 2011 à 08:42
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
15 mars 2011 à 09:09
Quel est exactement le message d'erreur ? Sur quelle ligne s'arrête l'exécution ?
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
15 mars 2011 à 09:19
N'y aurait-il pas des cellules fusionnées dans les colonnes B ou C ?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
15 mars 2011 à 09:23
Bonjour, Bonjour Patrice,
Excusez l'incruste...
Si les classeurs viennent "d'ailleurs", voir le niveau de sécurité ?
A+
0
guillaume660
15 mars 2011 à 10:35
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
15 mars 2011 à 14:25
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
guillaume660
15 mars 2011 à 15:33
il y est indiqué :

Expression : strFichier
Valeur : "\code"
Type : string
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
15 mars 2011 à 16:54
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
guillaume660
15 mars 2011 à 16:57
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
Modifié par Patrice33740 le 15/03/2011 à 21:43
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