Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème d'appel de variables dans une formule

2 réponses
Avatar
Gillou
Bonjour,

Pour chaque cellule c dans une plage donnée, je dois aller récupérer la
valeur d'une cellule dans un autre fichier, le nom du fichier et la position
de la cellule cherchée dépendant de la cellule d'origine c :

1) je dois récupérer la valeur de la cellule en ligne 4 et même colonne que
c, valeur que j'affecte à la variable nom_flux
2) ensuite je dois récupérer la valeur d'une cellule, qui se trouve dans
l'onglet "Flux de nom_flux" du fichier "Traitement flux nom_flux", en ligne 2
et en colonne décalée de 7-colonne(c) à chaque fois

Je ne suis pas sûr d'être bien clair mais j'espère que la vue de mon code
(qui ne fonctionne pas...) va vous éclairer :

For Each c In Range("I11,J12,K13,L14,M15,N16,O17,P18")
c.Select
nom_flux = "=R4C"
c = "=E:\Suivi traitement\[Traitement flux nom_flux.xls]Flux de
nom_flux'!R2C[7-column(c)]"
Next c

J'ai essayé diverses combinaisons pour que nom_flux et 7-column(c) soient
évalués et remplacés par leur valeur dans la formule, mais rien ne fonctionne
: soit j'ai des messages d'erreur à l'exécution de la macro, soit elle
s'exécute et la formule s'écrit en cellule mais en ayant conservé nom_flux et
7-column(c) sans les avoir remplacés par leur valeur.

J'espère avoir réussi à exprimer mon besoin... Pouvez-vous m'aider ?

Merci d'avance

2 réponses

Avatar
michdenis
Bonjour Gillou,

"=E:Suivi traitement[Traitement flux nom_flux.xls]Flux de nom_flux'!R2C[7-column(c)]"

Ce type de syntaxe pour récupérer une valeur d'une cellule d'un fichier fermé n'est disponible que dans une formule de cellule de la
feuille de calcul. On ne peut s'en servir pour obtenir le résultat directement dans VBA.


Une alternative, c'est ceci :

'--------------------
Sub Test()
MsgBox GetValue("C:Mes Documents","MonFichier.xls","MaFeuille","A1")
End Sub
'--------------------

Exemple d'une ligne de code
c = GetValue("CheminDufichier", "NomDuFichier.xls", "NomFeuille" , C.address)


Public Function GetValue(ByVal path, ByVal file, ByVal sheet, ByVal ref) As Variant

' Macro XL4 Merci à John Walkenbach
' ============================= ' Retrieves a value from a closed workbook

Dim Arg As String

' Make sure the file exists
If Right(path, 1) <> "" Then path = path & ""
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If

' Create the argument
Arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Address(, , xlR1C1)
' MsgBox Arg
' Execute an XLM macro
GetValue = Application.ExecuteExcel4Macro(Arg)
DoEvents

End Function
'--------------------


Salutations!



"Gillou" a écrit dans le message de news:
Bonjour,

Pour chaque cellule c dans une plage donnée, je dois aller récupérer la
valeur d'une cellule dans un autre fichier, le nom du fichier et la position
de la cellule cherchée dépendant de la cellule d'origine c :

1) je dois récupérer la valeur de la cellule en ligne 4 et même colonne que
c, valeur que j'affecte à la variable nom_flux
2) ensuite je dois récupérer la valeur d'une cellule, qui se trouve dans
l'onglet "Flux de nom_flux" du fichier "Traitement flux nom_flux", en ligne 2
et en colonne décalée de 7-colonne(c) à chaque fois

Je ne suis pas sûr d'être bien clair mais j'espère que la vue de mon code
(qui ne fonctionne pas...) va vous éclairer :

For Each c In Range("I11,J12,K13,L14,M15,N16,O17,P18")
c.Select
nom_flux = "=R4C"
c = "=E:Suivi traitement[Traitement flux nom_flux.xls]Flux de
nom_flux'!R2C[7-column(c)]"
Next c

J'ai essayé diverses combinaisons pour que nom_flux et 7-column(c) soient
évalués et remplacés par leur valeur dans la formule, mais rien ne fonctionne
: soit j'ai des messages d'erreur à l'exécution de la macro, soit elle
s'exécute et la formule s'écrit en cellule mais en ayant conservé nom_flux et
7-column(c) sans les avoir remplacés par leur valeur.

J'espère avoir réussi à exprimer mon besoin... Pouvez-vous m'aider ?

Merci d'avance
Avatar
Gillou
Merci pour l'info michdenis !