"Bonjour"
je cherche a effectuer une somme si en prenant comme criteres les occurences contenus dans une chaine de caractaire d'une cellule, la fonction est censee de separer la chaine (split) puis effectuer une sorte de recherchev avec chaque resultat dans une plage definie et de renvyer une valeur d'une colonne decalee, chaque valeur doit etre additionee a la precedente etc (d'ou cette appelation somme si)
voici le code
j'ai essayé egalement avec un application.worksheetfunction.vlookup mais ca ne marche pas non plus
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Function sumifauto(x As String) Dim a() As Variant Dim b As Single Dim c As Long Dim i As Single x = Application.Trim(x) a() = Split(x, ",") b = 0 For c = 0 To UBound(a) b = b + Application.Find(What:=a(c), After:=Feuil4.Cells(3, 1) _ , LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _ SearchDirection:=xlNext, MatchCase:=True).Offset(0, 1).Value Next c sumifauto = b End Function
le resultat le plus probant que j'ai pu obtenir (un chiffre et non une erreur) avait été produit par un code a double boucle :
- for pour l'iteration des chaines splittés
- do loop+commande d'arret avec une sorte de comparaison linéaire et un renvoi, une alternative plutot lourde a find ou vlookup, qui comprenait une addition de stockage b=b+resultat renvoyé ( pour la somme des resultats renvoyés)
Le truc est que ce code ne voulait pas stocker et additionner les resultats mais renvoyais un resultat (le premier ou dernier).
J'attends une reponse avec impatiance
Partager