Aide avec les filtres et bdmoyenne

Aide avec les filtres et bdmoyenne - VB/VBA/VBS - Programmation

Marsh Posté le 31-03-2009 à 10:01:38    

Bonjour,
 
Je travaille sur un petit programme excel pour mon boulot et je me retrouve coincé.
Le but est de faire des filtres sur une base de donnée et de calculer une moyenne selon le filtre appliqué. Mon soucis arrive lorsqu'il n'y pas de correspondance entre les critères et que le résultat du filtre est vide; si je décide de générer la moyenne alors ca bug.
 
voici le code VBA pour le calcul de la moyenne
 
If ToggleButton1.Value = True Then
 
p = WorksheetFunction.DAverage(Range("B24:O24", Range("B24:O24" ).End(xlDown)), Range("O24" ), Range("D16:E17" ))
 
Range("J14:K14" ).Value = p
 
Elseif togglebutton2.value.............. (ca va jusque 10 comme ca en changeant les critères)
 
Endif
 
 
 
Pour ce qui est du filtre le code est:
 
 Range("B24:O24", Range("B24:O24" ).End(xlDown)).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        Range("D16:E17" ), Unique:=False
 
 
Merci d'avance pour votre aide :)
 
P.S: j'ai déjà essaye de faire "if iserror(la fonction qui bdmoyenne) alors msgbox
 
 

Reply

Marsh Posté le 31-03-2009 à 10:01:38   

Reply

Marsh Posté le 31-03-2009 à 15:24:17    

Bonjour
 
Je comprends pas trop pour quelle raison tu filtres ? c'est juste pour avoir un visuel ? Car le DAverage se calcul deja en fonction d'une plage de filtre.
 
En plus de cela, tu ecris le resultat de ton DAverage en J14
 
Ou alors il faut juste se servir du filtre. La c'est comme si tu faisais deux fois la meme chose.
 
Avec ton exemple je dirais :
 
Tu mets en J14 le resultat de ton DAverage directement dans la cellule, sans filtrer.
J14.FormulaR1C1 = "=DAVERAGE(R24C2:R65536C15,14,R16C4:R17C5)"
Fonction BDMoyenne , qui calcule la moyenne de la 14eme colone de la plage B24:O65536 en fonction des filtres en D16:E17
 
Ou alors tu filtres, et tu mets en J14 :
J14.FormulaR1C1 = "=SUBTOTAL(101,R24C2:R65536C15)"
Fonction SOUS.TOTAL qui calcule la moyenne de la plage B24:O65536 en tenant compte du tableau préalablement filtré.(Fonction n°101, qui permet de ne pas tenir compte des valeurs masquées)
 
 
 
Cordialement


Message édité par SuppotDeSaTante le 31-03-2009 à 15:32:15

---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed