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 Sub

Bonjour 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

Rechercher des sujets similaires à "recherchev plage variable"