Utiliser le chemin d'accès d'un classeur défini dans une cellule

Spoon86

XLDnaute Nouveau
Bonjour à tous,

Le classeur "origine" rassemble les données à traiter.
Ce classeur est fermé.
Le classeur "traitement" me permet de remettre en forme les données contenues dans "origine" et de réaliser toutes mes travaux (copier/coller, graphiques, etc).
La cellule E5 de "traitement" me permet d'inscrire le chemin d'accès du classeur "origine" (obtenu par macro).

Je souhaite mettre en place des formules dans "traitement" en utilisant le chemin d'accès du classeur "origine".
Comment puis-je faire ? J'ai tenté de définir un nom pour la cellule "E5" et d'utiliser la fonction "lecture de E5" dans mes formules, sans succès.

Y a-t-il une syntaxe particulière ?
Avez-vous une idée ?

Merci d'avance pour vos réponses.
Spoon.
 

Spoon86

XLDnaute Nouveau
Re : Utiliser le chemin d'accès d'un classeur défini dans une cellule

Bonjour et merci Néné pour ta réponse.
En effet cette commande fonctionne mais j'aurais souhaité ne pas ouvrir le classeur "origine". Si je ne trouve vraiment pas de solution, alors je passerai par Workbooks.open comme tu le soulignes.

En considérant l'ouverture du fichier "origine":
Comment est-il possible d'utiliser le contenu d'une cellule (en l'occurence, l'adresse du classeur "origine" qui est contenu dans cette cellule) dans une formule ou une macro ?

Je m'explique. J'utilise la macro suivante:
Workbooks("origine.xls").Sheets("Feuil1").Range("F:F").Copy
Workbooks("traitement.xls").Sheets("données").Paste Destination:=Range("A:A")

Cette commande me permet de copier les valeurs situées dans la feuille 1 du classeur "origine" et de les copier dans le classeur "traitement" suivant les conditions que j'ai fixées. Seulement, comme tu le constates, je nomme mon classeur "origine" dans mon code. Je souhaiterais donc remplacer le nom de mon fichier ("origine") par un nom qui définit le contenu de la cellule "E5" ou une syntaxe que j'incorpore dans mon code pour remplacer l'intitulé "origine".

As-tu une idée pour cette manip ?
Je continue mes recherches et te tiens au courant si je trouve qq chose.

Spoon
 

Pierrot93

XLDnaute Barbatruc
Re : Utiliser le chemin d'accès d'un classeur défini dans une cellule

Bonjour spoon, néné

essaye peut être ceci :
Code:
Workbooks(Range("E5").Value).Sheets("Feuil1").Range("F :F").Copy
le nom du classeur avec son extension devra se trouver dans la cellule E5 de la feuille active du classeur actif, si ce n'est pas le cas préciser le nom de la feuille voir du classeur....
bonne journée
@+
 

Spoon86

XLDnaute Nouveau
Re : Utiliser le chemin d'accès d'un classeur défini dans une cellule

Merci Pierrot,

je viens de tester, sans succès.
Je te confirme que l'adresse complète du classeur "origine" (avec son extension) se trouve bien en cellule E5.

Voici mon code:
Workbooks(Range("E5").Value).Sheets("marchetendue").Range("A:A").Copy
Workbooks("Classeur1.xls").Sheets("import").Paste Destination:=Range("A:A")

E5 étant située dans "Classeur1", classeur de travail (ouvert). E5 contient l'adresse du classeur "origine".
"marchetendue" est une des feuilles du classeur "origine"
"import" est une feuille de "classeur1"

Erreur signalée: type 9; L'indice n'appartient pas à la sélection

Spoon :confused:
 

Pierrot93

XLDnaute Barbatruc
Re : Utiliser le chemin d'accès d'un classeur défini dans une cellule

Re,

il ne s'ait pas de mettre l'adresse complète mais simplement le nom du classeur...
par exemple.. :
NomClasseur.xls
et la cellule E5 concernée doit être visible sur la fenêtre de l'appli....
 

Spoon86

XLDnaute Nouveau
Re : Utiliser le chemin d'accès d'un classeur défini dans une cellule

Re,

1. Je confirme: La cellule E5 est bien visible sur la feuille du classeur actif "traitement".

2. Pourquoi faut-il uniquement le nom de classeur (en l'occurence "origine.xls") ? L'ouverture d'un classeur utilise bien l'adresse complète cf les éléments fournis par Néné un peu plus haut ( Workbooks.Open Range("E5").Value ) pour ouvrir le classeur origine.

???
Spoon
 

Pierrot93

XLDnaute Barbatruc
Re : Utiliser le chemin d'accès d'un classeur défini dans une cellule

Re,

en l'occurence le code proposé n'ouvre pas un classeur, mais copie une plage de cellules...
"Workbooks(Range("E5").Value).Sheets("Feuil1").Range("F :F").Copy"

mais tu as raison, pour ouvrir le classeur il est préférable d'avoir le chemin complet, sinon cherche à ouvrir le dit classeur dans le dossier courant....
 

Spoon86

XLDnaute Nouveau
Re : Utiliser le chemin d'accès d'un classeur défini dans une cellule

Re, Re, Re,......

En fait je vais faire comme ça: je déclare dans la cellule E5 l'adresse du classeur "origine".
Cependant, selon le classeur sur lequel je veux travailler, l'adresse va changer. Je souhaite donc définir un nom ou bien trouver la syntaxe adéquate pour définir dans une fonction ou une macro le classeur "origine" dont il s'agit.

Par exemple, faire une copie des éléments du classeur origine par la macro
Workbooks(Range("E5").Value).Sheets("Feuil1").Range("F :F").Copy

Mais la référence au classeur "origine" traduite par Workbooks(Range("E5").Value). ne fonctionne pas.

Il semblerait que Workbooks(Range("E5").Value). ne fasse pas référence à l'adresse pourtant contenue dans la cellule E5.

HELP !
:confused:
Spoon
 

Pierrot93

XLDnaute Barbatruc
Re : Utiliser le chemin d'accès d'un classeur défini dans une cellule

Re,

Mais la référence au classeur "origine" traduite par Workbooks(Range("E5").Value). ne fonctionne pas.

en l'état ne vois pas le résultat attendu... te renverra une erreur...

pour ouvrir un classeur dont le nom complet et chemin se trouve sur la cellule e5 de la feuille active, perso j'utilise une variable :
Code:
Dim wb As Workbook
Set wb = Workbooks.Open(Range("E5").Value)

ensuite tu fais référence à cette variable (wb) pour agir sur le classeur en question....
 

Spoon86

XLDnaute Nouveau
Re : Utiliser le chemin d'accès d'un classeur défini dans une cellule

Re,

Ci-dessous, je code constitué:

Sub test2()
Dim fd As Object, nom$
Set fd = Application.FileDialog(msoFileDialogOpen)
With fd
.Title = "Sélectionnez le fichier à partir duquel vous souhaitez importer les données"
.InitialFileName = ""
.Filters.Clear
.AllowMultiSelect = False
If .Show <> 0 Then
nom = .SelectedItems(1)
Else
MsgBox "Vous n'avez serlectionné aucun fichier", , "Recommencer"
End If
End With
Feuil1.Range("I6") = nom

Dim wb As Workbook
Set wb = Workbooks.Open(Range("I6").Value)
End Sub

Celui-ci me permet de demander à l'utilisateur de sélectionner le fichier à partir duquel il veut travailler. Le chemin d'accès du classeur est alors inscrit en cellule I6 .
J'ai repris le bout de code que tu m'as laissé en fin de matinée (wb...)
As-tu une idée de la syntaxe à utiliser dans une formule ou une macro pour signaler que je travaille dans le classeur wb ?

Spoon.
 

Pierrot93

XLDnaute Barbatruc
Re : Utiliser le chemin d'accès d'un classeur défini dans une cellule

Re,

pas sûr d'avoir très bien compris... peut être ceci :
Code:
MsgBox wb.Name

A noter, si tu procède avec la boîte de dialogue tu peux coder directement :
Code:
Dim wb As Workbook
Set wb = Workbooks.Open(nom)
 

Spoon86

XLDnaute Nouveau
Re : Utiliser le chemin d'accès d'un classeur défini dans une cellule

Re,

Je lâche prise....

Le code suivant
Dim wb As Workbook
Set wb = Workbooks.Open(chemin)

permet uniquement d'ouvrir le classeur caché sous le nom "chemin", n'est-ce pas !
Ce que je cherche à faire c'est par exemple pour le cas simple suivant dans la cellule I5 du classeur ouvert (=) [origine.xls]Feuil1!$A$10 REMPLACER le mot "origine" par le code ou le nom qui désigne le contenu de la I6. dans cette cellule I6 est inscrit le chemin d'accès du fichier "origine". Mais je veux absolument ne pas utiliser le nom du classeur "origine" car celui-ci peut s'appeler "origine_2" ou même "tartampion".
Tu vois ce que je veux dire ?
Spoon
 

Pierrot93

XLDnaute Barbatruc
Re : Utiliser le chemin d'accès d'un classeur défini dans une cellule

Re,

Le code suivant
Dim wb As Workbook
Set wb = Workbooks.Open(chemin)

permet uniquement d'ouvrir le classeur caché sous le nom "chemin", n'est-ce pas !

Perso je parlais de la variable "nom" et non de la variable "chemin". variable "nom" initialisée par le code que tu postais à 13h53....Et vu le code, cette variable (nom) le nom le nom et le chemin du classeur....
 

Discussions similaires

Statistiques des forums

Discussions
312 469
Messages
2 088 696
Membres
103 924
dernier inscrit
Patrick c