[VBA] open d'un fichier / nom est en variable [Fermé]

- - Dernière réponse :  Beckett299 - 16 avril 2010 à 03:05
[VBA] open d'un fichier dont le nom est en variable


Bonjour,

La réponse de l'utilisateur, au travers d'une boite de dial à 2 zones de liste est "traduite"en clair dans un feuille Table et concaténée en C28
(Table!open) sous la forme d'un nom de fichier type R01mh.xls ou R48lt.xl ou R01 (type) provient de la 1ere liste et mh (initiale utilisateur) provient de la 2nde.

L'ensemble des fichiers R01xx et R48xx (environ 30) se trouvent dans la même DIR.


Comment ouvrir ce fichier (en Table!"C28") afin d'en importer les donnée dans ma feuille de calcul ?

Je coince!

Merci d'avance ....
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
37
Date d'inscription
mercredi 16 mai 2007
Statut
Membre
Dernière intervention
25 mai 2007
30
8
Merci
Bonjour,

Pour ouvrir un classeur sour Excel, en VBA, la commande est :
Workbooks.Open Filename:="Chemin\NomDuClasseur.xls"

Donc, à partir de là, la procédure pourrait être :

Sub OuvrirClasseur()

Dim strFichier As String

'Remplacer "Chemin" par le chemin complet du répertoire
'où se trouve le classeur à ouvrir, correspondant à DIR...
'Par exemple "C:\Applications\Excel"

Const strRepertoire = "Chemin"

strFichier = Sheets("Table").Cells(28, 3).Value

Workbooks.Open Filename:=strRepertoire & "\" & strFichier

End Sub

J'espère que cela peut aider...

Dire « Merci » 8

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 62897 internautes nous ont dit merci ce mois-ci

3
Merci
Excellent! merci

Question subsidiaire:

1/ dans ton code tu précises le chemin de mannière absolue (C:\Applications\Excel). Sachant que les fichiers à ouvrir seront tjrs dans la même DIR que la feuille de calcul, mais que cette DIR pourrait varier, peut-on envisager un adressage 'relatif' ?

2/ la cellule Cells(28,3) est nommée 'open'. Quelle syntaxe pour l'utiliser
sous cette appelation?

En tout cas, ton aide a été précieuse. Quand j'y pense, coincer là-dessus ...

Merci
Tiens, je pense que ce qui suit peut t'aider :

ActiveWorkbook.Path

C'est une chaine type :
"C:\Dossier\Repertoire"

Tu peux lui ajouter le nom de ton fichier si tu le connais :
____________________________

Chemin = ActiveWorkbook.Path
Fichier = "Monfichier.ext"

Chemin_Complet = Chemin & "\" & Fichier
____________________________

Bon codage à tous !

Beckett299
2
Merci
Bonjour,

exemple :

Sub Test()

    Dim NomFichier As String
    
    NomFichier = ActiveWorkbook.FullName
    NomFichier = Left(NomFichier, InStrRev(NomFichier, "\"))
    NomFichier = NomFichier & Range("open").Value
    
    MsgBox NomFichier
    Workbooks.Open (NomFichier)

End Sub
'

Lupin
2
Merci
Bonjour,

oui, je comprends cette technique, toutefois, celle-ci oblige une intervention et ne pourra être
utilisé lors d'un automatisme de nuit ou quelques chose du genre. Tout dépend du besoin et
cette précision n'a pas été soumis dans le devis de Kolitchev.

justement, le nom du fichier est donné en [range(open).value], donc pas besoin de demander
ou est le fichier à l'utilisateur puisqu'il est spécifier que tous les fichiers sont dans le même
dossier, il ne s'agit que de trouver celui-ci :-)

ceci dit, pour sélectionner un nom par l'utilisateur, à partir d'une localisation [ Range ], j'aurais proposé :

Sub OuvrirFichier()

    Dim objNomFichier As Range, strNomFichier As String

    Set objNomFichier = Application.InputBox("Cellule source : ", Type:=8)
    
    strNomFichier = ActiveWorkbook.FullName
    strNomFichier = Left(strNomFichier, InStrRev(strNomFichier, "\"))
    NomFichier = NomFichier & "\" & objNomFichier.Value
    Workbooks.Open (NomFichier)
    
    Set objNomFichier = Nothing

End Sub
'


je ne crois pas qu'il y ait de mauvaise méthode, je ne propose que des
suggestion libre au demandeur de formuler ou non l'utilité de ces suggestions.

perso, quand je pose une question, c'est que j'ai besoin d'aide et la plus part
du temps l'aide est bienvenue, n'est pas à cela que ce forum sert !

Cordialement

Lupin
1
Merci
j'ai mieux car je cherche
En fait j'ouvre sous excel un explorateur d'objet pour que tu trouve ton fichier et ensuite je l'ouvre

Tu exclue ainsi une longue recopie du chemin d'acces et en plus ton fichier s'ouvre

voila le code

Sub Macro1()
nom = Application.GetOpenFilename("Nom fichier,*.xls")
Workbooks.Open nom
end sub