Macro de filtrage avec une valeur variable

Dadadidou

XLDnaute Nouveau
Bonjour,

Je suis tout nouveau sur les macro Excel, et dans le cadre d'un stage, je dois m'en servir pour traiter des données, mais je rencontre des difficultés. J'en appelle donc à votre aide :)
J'ai 2 colonnes remplies de valeurs (environ 4000 lignes, mais c'est variable). Je cherche à filtrer de manière itérative les valeurs valeurs de la colonne 1 selon un intervalle de +/- 0,05 autour d'un entier que j'incrémente, pour en récupérer les valeurs de la colonne 2 :
1 --> [0.95;1.05]
2 --> [1.95;2.05]
... etc.

J'ai donc écris le code suivant :

Dim i As Integer

For i = 1 To 10 Step 1

'Je filtre sur i, de la première cellule jusqu'à la dernière (qui est variable)
ActiveSheet.Range("G1", [G65000].End(xlUp)).AutoFilter Field:=1, Criteria1:=">=(i-0.05)", _
Operator:=xlAnd, Criteria2:="<=(i+0.05)"

[...autres actions]
[Reset du filtre]
Next i
End Sub

Le souci que j'ai, c'est que mon code ne considère pas "i", donc le filtre qu'il me renvoie est vide, alors qu'avec des valeurs, il fonctionne. Comment je peux faire ?

Merci d'avance :D
 

PrinceCorwin

XLDnaute Occasionnel
Re : Macro de filtrage avec une valeur variable

Bonjour,
Correction de la formule. >Le "i" ne doit faire partie intégrante du procesus:
Code:
ActiveSheet.Range("G1", [G65000].End(xlUp)).AutoFilter Field:=1, Criteria1:=">=(" & i & "-0.05)", _
 Operator:=xlAnd, Criteria2:="<=(" & i & "+0.05)"

Bonne journée
 

Dadadidou

XLDnaute Nouveau
Re : Macro de filtrage avec une valeur variable

Bonjour,

Merci à vous. Effectivement, i est considéré comme un string, alors que je le considérais comme un integer. Problème résolu !
Mais j'ai une autre petite question : Quand j'ai filtré ma colonne, je cherche à calculer la moyenne des valeurs sélectionnées. J'ai réussi par des tests à avoir le résultat que j'affiche dans un MsgBox :

Sub Moyenne()
Dim c As Range
Dim Total, Moyenne As Double
Dim Compteur As Integer
Compteur = 0
Total = 0

For Each c In Selection
Total = Total + c.Value
Compteur = Compteur + 1
Next c
Moyenne = (Total) / (Compteur)
MsgBox (Moyenne)
End Sub

Mais je voudrais que la moyenne soit directement copiée dans une cellule, disons M1, mais je n'y arrive pas. Ca doit être tout bête ...

Merci de votre aide :)

Edit : J'ai trouvé :)
 
Dernière édition:

Dadadidou

XLDnaute Nouveau
Re : Macro de filtrage avec une valeur variable

Salut,

J'ai vu ton message après avoir trouvé. Ta méthode fonctionne très bien, à la place de Range("M1").Value j'ai utilisé Cells(1,13). Je ne sais pas si y'en a une plus adaptée ou non, mais en tout cas merci ;)
 

Pierrot93

XLDnaute Barbatruc
Re : Macro de filtrage avec une valeur variable

Re,

Ta méthode fonctionne très bien, à la place de Range("M1").Value j'ai utilisé Cells(1,13). Je ne sais pas si y'en a une plus adaptée ou non, mais en tout cas merci

oui les 2 méthodes renvoient le même résultat, "cells" est peut être plus utilisé avec l'utilisation de variable ou lorsque tu veux utiliser les numéros de lignes et de colonnes..
 

Discussions similaires

Statistiques des forums

Discussions
312 331
Messages
2 087 358
Membres
103 528
dernier inscrit
hplus