Bonsoir ARTURO83,
Merci pour ta remarque qui m'a permis d'avancer.
En fait j'avais dans un premier temps mis en place la formule en G15 dans ma feuille Excel.
je l'avais complété en G16 en y ajoutant le nom des feuilles en prévision de la traduction pour le vba.
par contre je voulais que mon code fasse bien apparaitre en G18 toujours la même formule mais en utilisant le vba.
donc je ne pense pas qu'il y ait eu de glissement de cellules empêchant la formule de fonctionner...
Cependant j'ai ajouté des $ sur les références de toutes mes cases (comme tu me le suggères) et ça marche !!
mais je comprends pas pourquoi car dans mon code Vba toutes les cases sont bonnes (elles sont identiques à celles indiquées des cases G15 et G16), pourquoi y a t il besoin de les "bloquer" avec le $?
j'ai donc pu sur mon fichier d'origine (non allégé comme le fichier traduction vba.xlsm) obtenir la formule qui fonctionne avec Vba.
le code qui fonctionne est donc:
Range("Base_de_données!BS" & L).FormulaArray = "=INDEX(Tarifs_et_CO2!$D$2:$D$40,match(1,(Tarifs_et_CO2!$A$2:$A$40=Tarifs_et_CO2!$A45)*(Tarifs_et_CO2!$C$2:$C$40=Tarifs_et_CO2!$C$45)*(Tarifs_et_CO2!$E$2:$E$40=Tarifs_et_CO2!$D$45),0))"
maintenant je souhaiterai utiliser une case variable pour déterminer l'année de la recherche: auparavant il s'agissait de la case fixe: Tarifs_et_CO2!$A45
la case variable (le L correspond à la première ligne non remplie de la case de données) : "Base_de_données!F" & L
or je ne sais pas trop comment l'écrire:
j'ai essayé (sans succès):
Range("Base_de_données!BS" & L).FormulaArray = "=INDEX(Tarifs_et_CO2!$D$2:$D$40,match(1,(Tarifs_et_CO2!$A$2:$A$40="Base_de_données!F" & L)*(Tarifs_et_CO2!$C$2:$C$40=Tarifs_et_CO2!$C$45)*(Tarifs_et_CO2!$E$2:$E$40=Tarifs_et_CO2!$D$45),0))"
Range("Base_de_données!BS" & L).FormulaArray = "=INDEX(Tarifs_et_CO2!$D$2:$D$40,match(1,(Tarifs_et_CO2!$A$2:$A$40='Base_de_données!F' & L)*(Tarifs_et_CO2!$C$2:$C$40=Tarifs_et_CO2!$C$45)*(Tarifs_et_CO2!$E$2:$E$40=Tarifs_et_CO2!$D$45),0))"
Range("Base_de_données!BS" & L).FormulaArray = "=INDEX(Tarifs_et_CO2!$D$2:$D$40,match(1,(Tarifs_et_CO2!$A$2:$A$40=Base_de_données!F&L)*(Tarifs_et_CO2!$C$2:$C$40=Tarifs_et_CO2!$C$45)*(Tarifs_et_CO2!$E$2:$E$40=Tarifs_et_CO2!$D$45),0))"
il doit s'agir d'un problème de syntaxe mais je trouve pas...
Partager