Souci pour ouvrir fichier en utilisant une variable

Bonjour à vous,

Mon premier Post, merci par avance pour toute aide... Je me lance..

le projet VBA :

* Ouvrir une série de fichiers Excel pour y appliquer un par un, une série d'actions (cela fonctionne).

* Les noms des fichiers sont uniques à chaque fois sans aucune logique dans les noms

* Ces fichiers se trouvent individuellement dans des dossiers différents sans aucune logique de nom

Ma question :

Je souhaite déclarer tous mes chemins\fichiers en début de macro en y assignant une variable à chacun

Cela me donne ainsi une liste du type :

Fichier1 = "c:\chemin1\nom.xlsx"

Fichier2= "c:\cheminx\noma.xlsx"

etc...

Je souhaiterai pouvoir utiliser ensuite une boucle pour ouvrir à tour de rôle les fichiers correspondants aux variables "fichier1" puis "fichier2" etc...

Si je rentre le code manuellement

Workbooks.Open Filename:=Fichier1

cela m'ouvre bien le fichier correspondant nickel

Si je veux maintenant créer une boucle du style :

For J = 1 To 2

Num = "Fichier" & J

Workbooks.Open Filename:=Num

Next J :

J'ai un message du type : "ne peut ouvrir le fichier Fichier1.xlsx"...

Il prend "Fichier1" comme texte et non comme une variable pour utiliser son contenu

Si vous avez une idée pour résoudre mon problème d'ouverture de fichier.. je suis preneur.

Merci encore !

Tanagra...

PS : Je joins un petit fichier Excel.

Bonjour

Une méthode à essayer

Sub ouvrir_fichier()
Dim Fichiers(1)
Dim J As Integer

  Fichiers(0) = "C:\chemin_x\dossier_y\Pierre.xlsm"
  Fichiers(1) = "C:\chemin_x\dossier_123\Paul.xlsm"

  For J = 0 To UBound(Fichiers)
    MsgBox "Ouverture du fichier " & Fichiers(J)
    'Workbook.Open Filename:=Fichiers(J)
    'Vient ici des lignes de codes qui fonctionnent.
    'Je ferme le fichier et je repars dans la boucle pour ouvrir le fichier suivant
  Next J
End Sub

Une autre méthode à essayer

Sub ouvrir_fichier()
Dim Fichiers
Dim J As Integer

  Fichiers = Array("C:\chemin_x\dossier_y\Pierre.xlsm", "C:\chemin_x\dossier_123\Paul.xlsm")

  For J = 0 To UBound(Fichiers)
    MsgBox "Ouverture du fichier " & Fichiers(J)
    'Workbook.Open Filename:=Fichiers(J)
    'Vient ici des lignes de codes qui fonctionnent.
    'Je ferme le fichier et je repars dans la boucle pour ouvrir le fichier suivant
  Next J
End Sub

Bonjour Banzaï64,

Grand merci à vous pour votre aide !

j'aime bien votre première solution car plus facile pour moi visuellement pour maintenir les chemins dans le futur et une seule variable à définir !

Msgbox : m'affiche bien le chemin complet à la place de la variable

ex. "Ouverture Fichier c:\chemin1\nom.xlsx"

Mais la commande Workbook.Open Filename:=Fichiers(J)

M'affiche un message d'erreur : Erreur d'execution 424 : Objet requis

Il ne veut pas prendre Fichier(J) comme une variable...

Autres petites questions :

* Comment faites vous pour copier le code et que cela apparaisse dans un cadre blanc ?

* Pour des raisons de maintenance des chemins de fichiers par des néophites VBA, l'idée serait de mettre dans des cellules d'une feuille, tous les chemins... et en VBA, appeler Fichier(0)= (le contenu cellule ex.A1) puis A2 etc... une idée de comment faire ?

Merci encore à vous,

Bien cordialement,

Luc

Bonjour

Tanagra a écrit :

Mais la commande Workbook.Open Filename:=Fichiers(J)

Je n'avais pas vu avec ta 1ère macro mais il faut un s à Workbooks

Tanagra a écrit :

Comment faites vous pour copier le code et que cela apparaisse dans un cadre blanc ?

Utilises les balises Code (au dessus et à gauche de la fenêtre d'édition)

Une fois cliqué dessus tu vas avoir (attention j'y ai mis une espace pour l'explication - mais tu ne l'auras pas lors du clic)

Et ensuite tu places ton code entre ces balises

Exemple sans l'espace

Ton code ici
Tanagra a écrit :

une idée de comment faire ?

Faire une boucle qui passe ne revue toutes les lignes et qui ouvrent les fichiers

Un grand merci Banzaï63 !

Le "s" change tout et cela fait donc un code tout simple qui fonctionne

Voici un récap propre pour les intéressés : Méthode pour ouvrir une série de fichiers qui n'ont pas de logique de nom de fichiers.

Sub ouvrir_fichiers()

Dim Fichiers(1)
Dim J As Integer

  Fichiers(0) = "C:\chemin_x\dossier_y\Pierre.xlsm"
  Fichiers(1) = "C:\chemin_x\dossier_123\Paul.xlsm"

  For J = 0 To UBound(Fichiers)

    Workbooks.Open Filename:=Fichiers(J)

   ' Appliquer le code souhaité ici pour votre traitement du fichier ouvert 

 Next J

End Sub

Afin de rester concrêt.. je vais ouvrir un autre post pour la notion de chemin de fichier disponible dans une feuille Excel.

Je solde donc celui là..

Un grand merci à vous Banzaï63 pour votre disponibilité !

Bien cordialement,

Tanagra

Rechercher des sujets similaires à "souci ouvrir fichier utilisant variable"