nom de ficihier déterminer par cellule

O

olivier

Guest
Bonjour,

comment faire pour que une le texte d'une cellule determine le fichier à ouvrir?

Par exemple, Si ma cellule A2 = 1234, je souhaiterais que la formule suivante fonctionneet ouvre le fichier 1234.xls =["A2".xls]GLOBAL!$C$44

Merci d'avance

Olivier
 
@

@+Thierry

Guest
Salut Olivier, le Forum

Voici deux méthodes qui devraient faire l'affaire (au choix) :

Méthode "HyperLink"

Sub OpeningFromCellHyperLink()
Dim ThePath As String, TheFile As String, TheSheetAddress

ThePath = "C:\Documents and Settings\te\My Documents\"
TheFile = Sheets("Sheet1").Range("A2") & ".xls"
TheSheetAddress = "Global!$C$44"

ThisWorkbook.FollowHyperlink ThePath & TheFile, TheSheetAddress

End Sub


Méthode "WorkBook.Open"

Sub OpeningFromCellOpen()
Dim ThePath As String, TheFile As String, TheSheet As String, TheAddress As String

ThePath = "C:\Documents and Settings\te\My Documents\"
TheFile = Sheets("Sheet1").Range("A2") & ".xls"
TheSheet = "Global"
TheAddress = "C44"

Workbooks.Open ThePath & TheFile
Sheets(TheSheet).Activate
Range(TheAddress).Activate

End Sub

En prime dans les deux méthode tu peux ajouter avant le end sub :
ActiveWindow.ScrollRow = ActiveCell.Row

Ce qui te mettra la ligne de la cellule "C44" en "Top" de la fenêtre (si besoin)


Bon Aprèm
@+Thierry
 
@

@+Thierry

Guest
Re: nom de fichier déterminer par la valeur d'une cellule

Salut OLivier, le Forum

Heu... Je ne comprends pas la question ?

Que veux-tu faire au juste ? Ouvrir un fichier et récupérer uniquement la valeur d'une cellule précise dans ce fichier ainsi ouvert ? (la cellule "C44" de la feuille "Global" ???

Si c'est le cas, inutile de faire ouvrir le fichier par macro, une simple formule "=" suffit ? non ?

Maintenant en imaginant que tu veux juste connaitre la valeur sans pour autant créer un lien (inconvénient de la formule) on pourrait envisager un code comme ceci :

Sub ReadingDistantValue()
Dim ThePath As String, TheFile As String, TheSheet As String, TheAddress As String

ThePath = "C:\Documents and Settings\te\My Documents\"
TheFile = ThisWorkbook.Sheets("Sheet1").Range("A2") & ".xls"
TheSheet = "Global"
TheAddress = "C44"

With ActiveCell
.Formula = "='" & ThePath & "[" & TheFile & "]" & TheSheet & "'!" & TheAddress
.Value = .Value
End With
End Sub

NB le ".Value = .Value" est juste là pour détruire le lien au bénéfice de la valeur seule (supprimer si non désiré)

Mais je ne suis pas certain d'avoir compris ce que tu voulais ?

Bonne Soirée
@+Thierry


PS tu as dû aussi recevoir une réponse automatique de ma messagerie vue que tu m'as aussi écrit en BAL
 
O

olivier

Guest
Re: nom de fichier déterminer par la valeur d'une cellule

Merci Thierry,

Oui je n'ai pas besoin d'aller ouvrir le 2eme fichier, je veux juste recuperer des données

le principe est le suivant

j'ai 2 fichiers test.xls et 1234.xls

si je rentre le txt 1234 dans la cellule A1 du fichier test, je veux aller chercher la valeur de la cellule A2 dans le fichier 1234.xls

en fait la premiere chose est que la cellule A1 determine le nom du fichier à ouvrir.

voila est que j'ai été plus clair.

Merci pour ton aide, et je regarde si y'a pas plus simple

Olivier
 
O

olivier

Guest
Re: nom de fichier déterminer par la valeur d'une cellule

j'ai essayé la macro et c'est ok; juste une petite chose, la valeur que je recupere va s'inscrire dans la cellule que j'ai préselectionner. Comment inscrire cette valeur dans une cellule predefini, par exemple A5

Merci d'avance

Olivier
 
@

@+Thierry

Guest
Re: nom de fichier déterminer par la valeur d'une cellule

Bonjour Olivier, le Forum

C'est simple dans la macro "ReadingDistantValue"

Tu change :

With ActiveCell


Par :

With Sheets("TaFeuille").Range("A5")


En ajustant au nom de la feuille devant recevoir l'info...

Bonne Journée/Semaine
@+Thierry
 
O

olivier

Guest
Thierry, un grand merçi!

ça marche impect, mais j'ai encore quelques petites questions:

Comment faire pour etendre la selection à une plage (par ex: lire les fichiers de la plage A2 à A60 et les données allant de B2 à B60 et les ecrire de C2 à C60).
Egalement comment executer la macro uniquement sur les cellules non vide?

Merçi

Olivier


Sub ReadingDistantValue()
Dim ThePath As String, TheFile As String, TheSheet As String, TheAddress As String

ThePath = "D:\"
TheFile = ThisWorkbook.Sheets("feuil1").Range("A2") & ".xls"
TheSheet = "feuil1"
TheAddress = "B2"

With Sheets("feuil1").Range("C2")
.Formula = "='" & ThePath & "[" & TheFile & "]" & TheSheet & "'!" & TheAddress
.Value = .Value
End With
End Sub
 
O

olivier

Guest
Re: nom de fichier déterminer par cellule

Bonjour,

J'avance à petit pas mais comme je suis un debutant, la je sèche:

la macro fonctionne impect sur la cellule A2.

Je souhaiterais incrementer automatiquement cette cellule (A2 jusqu'a A60) pour recuperer les infos correspondante qui vont de B2 à B60.

Je me suis lancer dans un petit compteur mais je sais pas comment incorporer la variable counter dans la ligne

TheFile = ThisWorkbook.Sheets("RESPONSE").Range("A2") & ".xls"

J'ai essayé comme suis mais ça plante

TheFile = ThisWorkbook.Sheets("RESPONSE").Range("A & STR$(counter)")

Un petit coup pouce SVP Ci dessous, la macro complete

Merci

Olivier


Sub ReadingDistantValue()

Dim X, counter
For X = 2 To 60 Step 1
counter = counter & X

Dim ThePath As String, TheFile As String, TheSheet As String, TheAddress As String

ThePath = "K:\
TheFile = ThisWorkbook.Sheets("RESPONSE").Range("A & STR$(counter)") & ".xls"
TheSheet = "GLOBAL"
TheAddress = "M44"

cell = Range("A2") ' TEST SI A2 EST VIDE

With Sheets("24H RESPONSE").Range("("B & STR$(counter)")
If cell <> "" Then ' TEST SI A2 EST VIDE
.Formula = "='" & ThePath & "[" & TheFile & "]" & TheSheet & "'!" & TheAddress
End If
.Value = .Value

Next X

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 228
Messages
2 086 421
Membres
103 205
dernier inscrit
zch