Ouvrir fichier a partir d'une liste [Résolu/Fermé]

Signaler
-
Messages postés
8128
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
24 juin 2020
-
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

Messages postés
8128
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
24 juin 2020
1 433
Il faut l'adresse complète du fichier à ouvrir (disque:\ répertoire\...\nom.xlsx

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
Messages postés
8128
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
24 juin 2020
1 433
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.

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.
Messages postés
8128
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
24 juin 2020
1 433
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
Messages postés
8128
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
24 juin 2020
1 433
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 ?
Messages postés
8128
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
24 juin 2020
1 433
Quel est exactement le message d'erreur ? Sur quelle ligne s'arrête l'exécution ?
Messages postés
8128
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
24 juin 2020
1 433
N'y aurait-il pas des cellules fusionnées dans les colonnes B ou C ?
Messages postés
8700
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 096
Bonjour, Bonjour Patrice,
Excusez l'incruste...
Si les classeurs viennent "d'ailleurs", voir le niveau de sécurité ?
A+

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 ?
Messages postés
8128
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
24 juin 2020
1 433
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.

il y est indiqué :

Expression : strFichier
Valeur : "\code"
Type : string
Messages postés
8128
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
24 juin 2020
1 433
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


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...
Messages postés
8128
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
24 juin 2020
1 433
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