RechercheV et plage variable
Bonjour le Forum,
Après avoir regardé plusieurs fils sur le sujet, je bloque.
Je vous joins un fichier pour mieux comprendre.
Voici le principe:
j'appelle de manière dynamique un nom de champ en case A11.
Ainsi, les données changent dans le cartouche "plage de données dynamiques".
Mon probleme:
Mes plages de données se trouvent sur une autre feuille.
J'ai nommé par exemple, une plage : "DepKUE33".
Le nom de la plage est composé de la manière suivante: préfixe + un nom
Cette plage est utilisée dans une formule.
Ce qui fonctionne aujourd'hui, j'appelle directement la plage dans la formule sous vba:
Range("P2").Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(IF(RC[-8]<>"""",(IF(RC[-6]<101,(INDEX(TarifpoidsKUE33,MATCH(RC[-1],DepKUE33,0),MATCH(RC[-6],NbpoidsKUE33,1)))...
Ce que je souhaite, c'est appeler cette plage via une valeur de cellule (H2 par exemple) afin de rendre dynamique la formule.
Pour cela, je nomme cherche à récupérer la donnée dans la cellule.
"=IFERROR(IF(RC[-6]<101,(INDEX(Range("H4").value,MATCH(RC[-8],Range("H6").value,0),MATCH(RC[-6],Range("H4").value,1)))...
J'ai essayé plusieurs choses:
1- selectionner via "RefersToRange.Value"
exemple:
ThisWorkbook.Names.("Departement").RefersToRange.Value
cela ne fonctionne pas, et me renvoie toujours une erreur.
J'en appelle à votre expertise, car je sèche complètement et je vais m'égarer.
Auriez vous une idée svp ?
Merci à vous,
Vincent 415
Bonjour
A tester
Sub test()
Dim plagev As String, plagew As String, plagex As String, plagey As String, plagez As String
' j'initialise mes variables
plagev = Range("H2").Value
plagew = Range("H3").Value
plagex = Range("H4").Value
plagey = Range("H5").Value
plagez = Range("H6").Value
Range("M4").Select
ActiveCell.FormulaR1C1 = _
"=IFERROR(IF(RC[-6]<101,(INDEX(" & plagev & ",MATCH(RC[-8]," & plagev & ",0),MATCH(RC[-6]," & plagez & ",1))),IF(AND(RC[-6]>=101,RC[-6]<=300),INDEX(" & plagex & ",MATCH(RC[-8]," & plagev & ",0),MATCH(RC[-6]," & plagez & ",1))*RC[-6],INDEX(" & plagew & ",MATCH(RC[-8]," & plagev & ",0),MATCH(RC[-3]," & plagey & ",1))*RC[-3])),"""")"
Range("M4:M" & Range("F65536").End(xlUp).Row).FillDown
End SubBonjour Banzai64 ,
Merci de ta réponse.
A première vue, cela fonctionne parfaitement puisque le nom de plage apparait bien dans la formule !
La valeur de la cellule est bien prise en compte.
Je teste ta solution en condition réelle demain matin.
Je te redis.
Bonne soirée.
Vincent415
Bonjour le forum,
Bonjour Banzai64,
Alors c'est excellent, ça marche complètement.
Je gagne 1 journée de boulot grâce à toi.
Un grand merci.
Résolu !
A bientôt