Problème pour récupérer une valeur avec ExecuteExcel4Macro
Bonjour,
Je suis pas du genre à demander de l'aide mais sa fait 2 jours que je me prend la tête sur une fonction pour aller récupérer des valeurs de plusieurs fichiers excel fermé...
Etant donné que la formule indirect ne fonctionne pas sur des classeurs fermés j'ai du créer une fonction similaire, en voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Public Function GetVal(ByVal search_colonne As String)
Dim chemin As String, valeur
With ActiveCell
chemin = "'\\DSFR451-FS0001\Common_A\Suivi\Suivi des heures\" & Cells(.Row, 2) & "\SUIVI HEURES " & Cells(.Row, 2) & "\" & _
Cells(.Row, 4) & "\[" & Cells(.Row, 2) & "-W" & Cells(.Row, 5) & ".xlsm]Semaine'!" & _
Range(search_colonne & Range(Cells(.Row, 6))).Address(, , xlR1C1)
If Dir("\\DSFR451-FS0001\Common_A\Suivi\Suivi des heures\" & Cells(.Row, 2) & "\SUIVI HEURES " & Cells(.Row, 2) & _
"\" & Cells(.Row, 4) & "\" & Cells(.Row, 2) & "-W" & Cells(.Row, 5) & ".xlsm") = "" Then
valeur = 0
Else
valeur = ExecuteExcel4Macro(chemin)
End If
End With
GetVal = valeur
End Function |
quand je test dans un sub cela fonctionne parfaitement mais quand je l'utilise dans une cellule j'ai un #VALEUR!
je ne vois pas pourquoi il ne m'affiche pas la valeur
pourriez-vous me dire ce que j'ai mal fait ???
problème pour récupérer une valeur avec ExecuteExcel4Macro
Bonjour,
Pour commencer je tenais à vous remercier pour vos réponse.
je n'ai pas eu de formation VBA donc forcément mon code reste basic,
Je ne connaissait pas la fonction thiscell donc j'ai utilisé activecell
car j'utilise des valeurs de certaines colonnes de la même ligne ou se trouve la formule car les fichiers ne se trouvent pas tous au même endroit.
j'ai essayé tous vos code et j'arrive au même résultat...
quand je le test dans un sub cela me retourne bien ma valeur cherché mais quand je l'insère dans une cellule alors j'obtiens un #VALEUR!
voici le code de mon test (pour info H_EXP_filmage est une plage nommée) :
Code:
1 2 3
| Sub test()
MsgBox GetVal(Range("H_EXP_filmage"))
End Sub |
et la il m'affiche bien la valeur
et voici ce que je met dans la cellule (dans la cellule AF se trouve la plage nommé H_EXP_filmage) :
Code:
=getval(H_EXP_filmage)
quand j'exécute au pas à pas au final, j'ai bien l'adresse complète ou se trouve ma valeur mais il me met quand même #VALEUR!
problème pour récupérer une valeur avec ExecuteExcel4Macro
bonjour patricklouton,
oui j'ai réadapter mon code en me basant sur le tiens :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
Public Function GetVal(ByVal search_colonne As String) As Variant
Dim chemin$, fichier$, feuille$, cellule As Range, Rc, valeur
With Application.ThisCell
chemin = "\\DSFR451-FS0001\Common_A\Suivi\Suivi des heures\" & Cells(.Row, 2) & "\SUIVI HEURES " & Cells(.Row, 2) & "\" & Cells(.Row, 4) & "\"
fichier = Cells(.Row, 2) & "-W" & Cells(.Row, 5) & ".xlsm"
feuille = "Semaine"
Rc = Range(search_colonne & Range(Cells(.Row, 6))).Address(, , xlR1C1)
End With
If Dir(chemin & fichier) = "" Then GetVal = 0: End
GetVal = ExecuteExcel4Macro("'" & chemin & "\[" & fichier & "]" & feuille & "'!" & Rc)
End Function |
Pour la plage nommé elle ne prend qu'une seul cellule et j'ai essayé de mettre juste la colonne mais cela ne change rien...
quand je met msgbox "'" & chemin & "\[" & fichier & "]" & feuille & "'!" & Rc
j'ai bien l'adresse exact de ma valeur cherché mais il me l'affiche que lorsque j'utilise cette fonction dans un SUB