Fonction filtres d' Excel et VB
Bonjour à tous,
J'aimerai exploiter une base de donnée assez conséquente dont les paramètres sont discrets.
La configuration d'un essai correspond à un premier paramètre (soit A1 soit A2) et un second (soit B1 ou B2 ou B3).
Pour chacun des essais archivés j'ai un résultat "bon" ou "mauvais".
Ce que je voudrais identifier c'est la configuration A et B qui me donnerait à priori les meilleurs résultats.
Ci joint un fichier Excel exemple qui sera peut être plus clair que mes explications et sur lequel j'ai préciser mes deux questions.
Merci d'avance,
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour à tous,
Sub Filtre()
Dim Lg%
''Macros par Claude Dubois pour "causeurfou3" Excel-Pratique le 20/02/10
Application.ScreenUpdating = False
Range("c6:e" & [c65000].End(xlUp).Row).AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:=Range( _
"t1:t2"), CopyToRange:=Range("h6:j6"), Unique:=True
Lg = Range("h65536").End(xlUp).Row
Range("k7:k" & Lg).FormulaR1C1 = _
"=SUMPRODUCT((R7C3:R206C3=RC[-3])*(R7C4:R206C4=RC[-2])*(R7C5:R206C5=RC[-1]))/SUMPRODUCT((R7C3:R206C3=RC[-3])*(R7C4:R206C4=RC[-2]))"
'*** Tri
Range("h7:k" & Lg).Sort Key1:=Range("h7"), Order1:=xlAscending, Key2:=Range("i7") _
, Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
End SubBonne journée
Claude
Merci bien, ca fait quasiment ce que je voulais pour la macro.
Malheureusement je suis loin d'être un pro de VB et j'ai peur d'avoir un peu de mal à l'adapter à mon fichier de travail qui est beaucoup plus fourni.
De ce que j'en comprends:
- vous filtrez les différentes config pour avoir toutes les config possibles
- vous rajoutez la formule de calcul du taux de réussite pour chaque config
- vous triez par config d'essai ( je pensais trier par pourcentage de réussite mais ça je devrais y arriver à partir de ton exemple)
Ce qui reste asssez mystérieux pour moi c'est la manière de demander de sélectionner jusqu'à la derniere ligne.
Range("h65536").End(xlUp).Row ou [c65000].End(xlUp).Row
Pourquoi un coup des crochets et l'autre la fonction range?
Je suppose que h65536 designe la colonne h de la ligne 6 à 5536 mais ça me parait curieux...Pourquoi pas de la ligne 65 à 536?
Sinon c'est un peu pinailler mais pour ma première question,je pense que vous avez utilisé données>validation>liste mais du coup ça me permet de sélectionner une config A1-B3 qui n'existe pas dans ma liste...
C'était pour ça que je parlait de faire apparaitre les mêmes champs que dans le filtre automatique, si on sélectionne A1, il ne propose que B1 ou B2.
Merci de votre aide en tout cas (surtout un week end...).