récuperer des données d'un autre classeur

L

lpp

Guest
Bonjour à tous,
alors mon soucis: j'ai un classeur dans lequel je voudrais ceci:

j'appuie sur un bouton, j'obtiens une fenetre parcourir ou je peux selectionner un classeur excel. qd je valide mon choix, les données contenue ds la première feuille de ce classeur distant, dans des cases bien définies et immuables, sont copiées dans des cellules précises de mon classeur maître (celui où il y a le code VBA ou macro).

mon souci, c'est que si j'utilise la fonction "Application.GetOpenFilename" en retour, j'ai le résultat sous la forme c:\source\toto.xls et apparemment il faudrait que j'ai c:\source\[toto.xls] pour pouvoir après faire mon acquisition sous la forme ='c:\source\[toto.xls]feuille1'!$B1 si je veux prendre les données de la cellule B1 de la première feuille du classeur source pour les mettre ds mon classeur cible

alors du coup, je bloque un peu, je sais pas trop si je suis sur la bonne voie... une idée? une solution?

merci

lpp
 
L

lpp

Guest
ah oui, j'oubliais, bien sûr les fichiers sources sont des fichiers fermés, et la fonction "parcourir" est necessaire puiske ces fichiers peuvent ne pas être situés dans une même répertoire...

j'ai trouvé qu'apparemment je pourrais utiliser les fonctions ADO pour récupérer les données d'un fichier fermé... est-ce que ce serait une bonne voie de compiler cette fonction avec Application.GetOpenFilename???

chuis dans l'incertitude totale...

help!

lpp
 
L

lpp

Guest
je continue mes périgrinations....

j'ai réussi à obtenir le chemin du fichier de la forme c:\données\[toto.xls] en faisant un test sur la position de "\" sur le resultat de Application.GetOpenFilename...

mais si je fais:

.range ("A" & "1").value = "='" & chemin & "feuille1'!$B1" ben ça marche pas du tout... je sais pas si je m'y prends mal ou si c'est pas possible, ou si le fait que le classeur soit fermé, etc...

une âme charitable?

lpp
 
L

lpp

Guest
ok ok...
bon ben je vois que tout ça vous a bien inspiré... lol

j'ai fini par trouver tout seul comme un grand, surtout en fait en compilant les différents morceaux que j'ai trouvé sur ce forum... la solution, c'était la formule "ExecuteExcel4Macro"

je vous donne le code, pour les prochains galériens... :)




'clik sur bouton "Parcourir":

Private Sub CommandButton1_Click()


'recherche du fichier source:

With Sheets("Feuil1")
Dim chemin As String
chemin = Application.GetOpenFilename


'obtention du nom de fichier (avec extension):

Dim i As Integer
Dim Pa As String
Pa = chemin
For i = 1 To Len(Pa) - 1
If Mid(Pa, Len(Pa) - i, 1) = "\" Then
Pa = Right(Pa, i)
Exit For
End If
Next i


'obtention du répertoire (avec chemin complet depuis la racine):

Dim j As Integer
Dim Pb As String
Pb = chemin
For j = 1 To Len(Pb) - 1
If Mid(Pb, Len(Pb) - j, 1) = "\" Then
Pb = Left(Pb, Len(Pb) - j)
Exit For
End If
Next j


'compilation pour obtenir la bonne formulation (avec les crochets):
'(là on va chercher la valeur située à la 5ème ligne et 3ème colonne)

Dim tot As String
tot = "'" & Pb & "[" & Pa & "]Feuil1'!R5C3"

'et on effectue la formule magique! (on met la donnée en A5):

Range("A5").Value = ExecuteExcel4Macro(tot)

End With

End Sub



et voilà! encore une mission réussie pour supercanard! lol

merci qd même à ceux qui avaient commencé un bout de petit morceau de reflexion à ce problème!
ciao!
 

Discussions similaires

Statistiques des forums

Discussions
312 280
Messages
2 086 743
Membres
103 384
dernier inscrit
bakhtibenabbey