recherchev en vba sur plusieurs onglets par tri décroissant

aviator

XLDnaute Nouveau
Bonjour à tous,

Je débute en langage VBA.
Voici mon problème : j'ai plusieurs onglets composés chacun d'une seule liste variable mais avec des entêtes identiques. Les onglets correspondent aux années 2012 et plus.Ils sont nommés 2012, 2013, 2014, .... Le fichier sera utilisé pour les années à venir.
Chaque liste contient plusieurs sites : site A, site B, ..... avec des coûts associés pour chaque site : exemple de l'onglet 2013
Nom du site | adresse | montant |
site A | chemin de | 350 |
site D | rue de | 138 |
....
onglet 2015
Nom du site | adresse | montant |
site A | chemin de | 999 |
site B | avenue | 222 |

Chaque liste peut contenir n'importes quels sites.
Pour le calcul du site A pour l’année 2015 (exemple), je souhaite effectué une recherche du dernier montant correspondant au site A. Ce montant peut apparaître en 2014, 2013 ou 2012. Ce chiffre me permet ensuite de calculer le montant désiré.

Je souhaite donc écrire un code du type:

function Rech(Nom du site, annee)
Dim i as integer
i = annee
while recherchev(Nom du site;i!A:H;3;faux)='#N/A' & i >2011 /*recherche du nom du site et renvoi du montant */
i = i-1 /* décrémentation de l'onglet */
end while

return recherchev(Nom du site;i!A:H;3;faux) /* résultat de la recherche au niveau de l'onglet i.Tous les sites sont présents en 2012*/

end function

Je sais je mélange plusieurs langages mais j'espère que tout n'est pas trop flou.
Merci de votre aide
 

Pièces jointes

  • Subventions collectives VBA.xls
    49 KB · Affichages: 66

job75

XLDnaute Barbatruc
Re : recherchev en vba sur plusieurs onglets par tri décroissant

Bonjour aviator, bienvenue sur XLD,

La fonction :

Code:
Function Rech(site$, annee%)
Dim i%
For i = annee To 2012 Step -1
  Rech = application.vlookup(site, Sheets(CStr(i)).[A:C], 3, 0)
  If Not IsError(Rech) Then Exit Function
Next
End Function
Noter que Rech est du type Variant.

A+
 

Discussions similaires

Statistiques des forums

Discussions
311 726
Messages
2 081 955
Membres
101 852
dernier inscrit
dthi16088