JeffdeBruges
XLDnaute Nouveau
Bonjour, j'ai trouvé chez Walkenbach une macro pour récupérer des valeurs dans un classeur sans l'ouvrir. Le code est le suivant :
Private Function ObtenirValeur(chemin, fichier, feuille, ref)
'retrouve une valeur dans un classeur fermé
Dim Arg As String
's'assure de l'existence du fichier
If Right(chemin, 1) <> "\" Then chemin = chemin & "\"
If Dir(chemin & fichier) = "" Then
ValeurObtenue = "Fichier non trouvé"
Exit Function
End If
'créé l'argument
Arg = "'" & chemin & "[" & fichier & "]" & feuille & "'!" & Range(ref).Range("A1").Address(, , xlR1C1)
'exécute une macro xlm
ValeurObtenue = ExecuteExcel4Macro(Arg)
End Function
Sub ObtenirValeur2()
p = "C:\DOSSIER"
f = "CLASSEUR.xls"
s = "FEUILLE"
' Application.ScreenUpdating = False
For r = 1 To 29
For C = 1 To 5
a = Cells(r, C).Address
Cells(r, C) = ObtenirValeur(p, f, s, a)
Next C
Next r
Application.ScreenUpdating = True
End Sub
Question : comment inscrire les résultats obtenus dans la feuille du classeur qui contient la macro ??? En pas à pas je vois bien que les valeurs sont lues sur le classeur fermé.
Si vous testez cette macro, modifiez les valeurs dans Sub ObtenirValeur2() pour qu'elles correspondent à des dossiers et fichiers existants sur votre machine.
p = "C:\DOSSIER\CLASSEUR"
f = "CLASSEUR.xls"
s = "FEUILLE"
Par avance merci pour toute indication.
Private Function ObtenirValeur(chemin, fichier, feuille, ref)
'retrouve une valeur dans un classeur fermé
Dim Arg As String
's'assure de l'existence du fichier
If Right(chemin, 1) <> "\" Then chemin = chemin & "\"
If Dir(chemin & fichier) = "" Then
ValeurObtenue = "Fichier non trouvé"
Exit Function
End If
'créé l'argument
Arg = "'" & chemin & "[" & fichier & "]" & feuille & "'!" & Range(ref).Range("A1").Address(, , xlR1C1)
'exécute une macro xlm
ValeurObtenue = ExecuteExcel4Macro(Arg)
End Function
Sub ObtenirValeur2()
p = "C:\DOSSIER"
f = "CLASSEUR.xls"
s = "FEUILLE"
' Application.ScreenUpdating = False
For r = 1 To 29
For C = 1 To 5
a = Cells(r, C).Address
Cells(r, C) = ObtenirValeur(p, f, s, a)
Next C
Next r
Application.ScreenUpdating = True
End Sub
Question : comment inscrire les résultats obtenus dans la feuille du classeur qui contient la macro ??? En pas à pas je vois bien que les valeurs sont lues sur le classeur fermé.
Si vous testez cette macro, modifiez les valeurs dans Sub ObtenirValeur2() pour qu'elles correspondent à des dossiers et fichiers existants sur votre machine.
p = "C:\DOSSIER\CLASSEUR"
f = "CLASSEUR.xls"
s = "FEUILLE"
Par avance merci pour toute indication.