Copier des informations d'un autre classeur

Kobal

XLDnaute Junior
Bonjour à tous !
Je suis débutant en VBA et je voudrais faire une macro qui va chercher des informations dans un classeur, et les ramène dans celui en cours d'utilisation.
En pratique, ça donnerait ça:
Depuis le classeur A, je clique sur un bouton m'ouvrant la fenêtre de dialogue "ouvrir". Je choisis le classeur B (qui n'est pas forcément dans le même répertoire que le classeur A).
A partir de là, la macro va chercher les informations souhaitées dans le classeur B (celles ci n'ont pas une position "fixe", une recherche est donc nécessaire).
Puis la macro ramène les informations trouvées et remplie les cellules du classeur A.
Au cas où, je vous ai joint 2 classeurs résumant ça.

J'espère être à peu près clair...

Pour l'instant, j'ai trouvé des bouts de code permettant d'ouvrir la fenêtre "ouvrir" (justement), avec GetOpenFilename, et une fonction qui récupère le contenu d'une cellule dans un fichier nommé:

Code:
Private Function GetValue(Path, File, sheet, ref)
'   Retourne une valeur d'un classeur fermé
    Dim arg As String

'   Crée l'argument
    arg = "'" & Path & "[" & File & "]" & sheet & "'!" & _
      Range(ref).Range("A1").Address(, , xlR1C1)

    GetValue = arg
    
End Function

Le problème est que GetOpenFilename retourne une "application" (selon l'aide microsoft), et je n'arrive pas à en extraire le chemin et le nom du fichier. Donc le code au dessus, dans l'état, est inutilisable.
Autre problème, ce code ne prend le contenu que d'une cellule déterminée, or je dois d'abord effectuer une recherche pour trouver cette cellule. (mais chaque chose en son temps)

Si vous avez des idées pour m'aider, je suis preneur :)
Merci d'avance
 

Pièces jointes

  • ClasseursAB.zip
    8.4 KB · Affichages: 35
Dernière édition:

MichelXld

XLDnaute Barbatruc
Re : Copier des informations d'un autre classeur

bonjour


Tu peux tester

Code:
Sub ChoixFichier()
    Dim Fichier As Variant
    
    'Affiche la boîte de dialogue "Ouvrir"
    Fichier = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls")
    If Fichier = False Then Exit Sub
    
    'Affiche le nom du fichier
    MsgBox Dir(Fichier)
    'Affiche le chemin
    MsgBox Left(Fichier, Len(Fichier) - Len(Dir(Fichier)))
    
End Sub


Tu trouveras dans ce lien un autre exemple pour lire le contenu d'une cellule d'un classeur fermé:
https://www.excel-downloads.com/threads/fonction-indirect-ne-marche-pas.83615/



Bonne journée
MichelXld
 

Discussions similaires

Statistiques des forums

Discussions
312 223
Messages
2 086 403
Membres
103 201
dernier inscrit
centrale vet