Function VBA pour renvoyer une plage ?

lebarbo

XLDnaute Occasionnel
Bonjour à tous,

Je cherche à utiliser une fonction qui me renverra une plage. Mais Excel doit comprendre que le résultat corresponde bien à une plage. Je m'explique, Je fais ma fonction "Plage", en fonction de critères à rechercher (avec la fonction .find) dans une feuille. Ensuite je dois faire la somme des nombres dans cette plage. Ma formule compilée dans Excel sera donc : =Somme(Plage(critère1;critère2))
Exemple :
Je recherche le nombre 5 (critère1) qui se trouve en A4 et le nombre 7 (critère2) qui se trouve en A12.
Je souhaite ensuite faire la somme de la plage A4:A12 d'où la formule que je souhaite construire =somme(Plage(5;7))

Merci pour votre aide,
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Function VBA pour renvoyer une plage ?

Bonjour lebarbo,

Il faut préciser dans quelle(s) plage(s) se font les recherches de critère1 et critère2.

J'ai supposé qu'il s'agit de la plage A:C de la feuille active.

La fonction dans un Module :

Code:
Function plage(critère1 As Variant, critère2 As Variant) As Range
Application.Volatile
Set plage = Range([A:C].Find(critère1, LookIn:=xlValues, LookAt:=xlWhole), [A:C].Find(critère2))
End Function

Pour la tester entrer (en dehors de A:C pour éviter une référence circulaire) la formule :

=SOMME(plage(5;7))

Edit : salut masterdisco

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Function VBA pour renvoyer une plage ?

@ masterdisco que je resalue,

Après seulement 153 posts sur ce forum, tu te débrouilles remarquablement.

Pour ta formule, on peut aussi écrire en F8 de ton dernier fichier :

Code:
=SOMME(INDEX(A:A;EQUIV(D8;A:A;0)):INDEX(A:A;EQUIV(E8;A:A;0)))

J'ai mis des 0 dans les fonctions EQUIV, si l'on recherche la valeur exacte.

A+
 

Discussions similaires

Réponses
11
Affichages
212

Membres actuellement en ligne

Statistiques des forums

Discussions
312 338
Messages
2 087 403
Membres
103 536
dernier inscrit
komivi