comment ce debarasser d'une boucle (loop) ?

Poto

XLDnaute Occasionnel
bonjour a tous,

je cherche a me debarasser d'une boucle afin d'optimiser l'execution de plusieur macro...

voici la boucle :

Dim Var As Integer
Var = 30 'par exemple

Cells.EntireRow.Hidden = False

For i = 5 To Range("a" & Application.Rows.Count).End(xlUp).Row
If IsNumeric(Cells(i, 1).Value) And Cells(i, 1).Value > Var Then
Cells(i, 1).EntireRow.Hidden = True
End If
Next i

cette boucle permet de cacher les lignes ayant une valeur supérieur à "Var" (30 dans l exemple actuel) dans la colonne A en partant de la cell A5;
le probleme c est que ma feuille fait pres de 4500 lignes, donc je cherche vraiment à optimiser cette étape ...

quelqu'un aurait il une petite idée ??


merci d'avance à tous
 

Poto

XLDnaute Occasionnel
Re : comment ce debarasser d'une boucle (loop) ?

salut camarchepas,

merci pour ta reponse, mais j'ai peur de pas tout comprendre, pas besoin d'indiquer "Cells.EntireRow.Hidden = true" nul part ??
je regarde l'aide d'excel sur autofilters, mais c est pas tres parlant .. :(
 

Poto

XLDnaute Occasionnel
Re : comment ce debarasser d'une boucle (loop) ?

bon j'ai trouver comment fonctionne les autofilters mais je n'arrive pas a indiquer aux criteres que la valeur doit etre numérique pour que l'autofilters s'applique...

IsNumeric (activecell.value) ne fonctionne pas :(

une petite idée ??
 
Dernière édition:
G

Guest

Guest
Re : comment ce debarasser d'une boucle (loop) ?

bonsoir,

je n'arrive pas a indiquer aux criteres que la valeur doit etre numérique pour que l'autofilters s'applique...

C'est à dire?

ce que t'a donné camarchepas plus haut devrait suffire.

Peut -être qu'un fichier exemple serait le bienvenu.

A+
 

Poto

XLDnaute Occasionnel
Re : comment ce debarasser d'une boucle (loop) ?

voila un exemple de ce que je veux faire :

dans le fichier joint, je souhaiterais cacher les lignes qui commence par un numero id > 13 (par exemple)

le probleme actuellement, c'est que les cellules vides et celles contenant "toto" ou "id" ce cachent aussi automatiquement, c'est pour ca que j'aimerais indiquer a autofilters que les cellules contenant des valeurs non numeriques et/ou vide soient ignorées par le filtre (donc qu'elles restent visibles).

une petite idée ?
 

Pièces jointes

  • Classeur1.xls
    39 KB · Affichages: 60
  • Classeur1.xls
    39 KB · Affichages: 60
  • Classeur1.xls
    39 KB · Affichages: 54

Poto

XLDnaute Occasionnel
Re : comment ce debarasser d'une boucle (loop) ?

re bonjour a tous,

pour faire suite a mon probleme, je suis arriver a ca
Sub nbre()


With ActiveSheet

.AutoFilterMode = False
.Range("A1:A100").AutoFilter

End With


Dim var As Integer
Dim Chaine As String

var = 11
Chaine = "<" & var

Range("A1:A100").Select ' Adapter la plage à ton classeur
Selection.AutoFilter Field:=1, Criteria1:=Array(Chaine, "", "toto", "id"), Operator:=xlFilterValues


End Sub

je reussi bien a filtrer les cellule vide, "toto" et "id" mais impossible d'utiliser le critere "chaine" ...

comment faire??
 

Poto

XLDnaute Occasionnel
Re : comment ce debarasser d'une boucle (loop) ?

Et si tu ajoutais un 2ieme critère ?


Selection.AutoFilter Field:=1, Criteria1:=Array("", "toto", "id"), Operator:=xlFilterValues, Criteria2:=Chaine


salut Habitude,

pour que le 2eme critere soit pris en compte, il faut utiliser l'operateur xlAnd ...
mais pour que le filtre fonctionne correctement avec l'array, il faut utiliser l'operateur xlFilterValues... et bien sur on ne peut utiliser qu'un seul operateur par filtre et qu'un filtre par colonne, donc je me sent un peut bloquer....
personne n'a une idée siouplai msieur dame.... ??
 
G

Guest

Guest
Re : comment ce debarasser d'une boucle (loop) ?

Bonjour,

bon j'ai trouver comment fonctionne les autofilters mais je n'arrive pas a indiquer aux criteres que la valeur doit etre numérique pour que l'autofilters s'applique...

Bonjour J'ai testé ceci sur une colonne comportant des nombres, des vides, des chaines de caractères. Seuls les numériques sont renvoyés.

Code:
Selection.AutoFilter Field:=1, Criteria1:=">0", Operator:=xlOr, _
        Criteria2:="<0"

A+
 

Poto

XLDnaute Occasionnel
Re : comment ce debarasser d'une boucle (loop) ?

Bonjour,



Bonjour J'ai testé ceci sur une colonne comportant des nombres, des vides, des chaines de caractères. Seuls les numériques sont renvoyés.

Code:
Selection.AutoFilter Field:=1, Criteria1:=">0", Operator:=xlOr, _
        Criteria2:="<0"

A+

Salut Hasco, merci de ton message,
alors, le grosse difficultés que j'ai c est que les valeurs doivent etre numerique ET <11 ET les valeurs non numerique doivent etre afficher, pas masquer(voir exemple)...
je vais tenter un advanced filter mais si qq un connait une fonction excel qui permet de forcer le critere numerique dans les autofilters, je suis prenneur ...
j'ai deja tester IsNumeric(activecell.value), mais ca marche pas ...
 
G

Guest

Guest
Re : comment ce debarasser d'une boucle (loop) ?

Re,

Bon sur ton fichier exemple ceci semble fonctionner:
Code:
ActiveSheet.Range("$A$1:$A$46").AutoFilter Field:=1, Criteria1:="<11", Operator:=xlOr, Criteria2:="=***"

Seuls les numériques <11 sont affichés ainsi que les cellules qui contiennent du texte.

Les vides sont cachés ainsi que les valeurs >=11

A+
 

Habitude

XLDnaute Accro
Re : comment ce debarasser d'une boucle (loop) ?

salut Habitude,

pour que le 2eme critere soit pris en compte, il faut utiliser l'operateur xlAnd ...
mais pour que le filtre fonctionne correctement avec l'array, il faut utiliser l'operateur xlFilterValues... et bien sur on ne peut utiliser qu'un seul operateur par filtre et qu'un filtre par colonne, donc je me sent un peut bloquer....
personne n'a une idée siouplai msieur dame.... ??

Peut-être est-ce possible de concatener des operateur.
Comme pour un msgbox
En utilisant le "+"
 

Poto

XLDnaute Occasionnel
Re : comment ce debarasser d'une boucle (loop) ?

Re,

Bon sur ton fichier exemple ceci semble fonctionner:
Code:
ActiveSheet.Range("$A$1:$A$46").AutoFilter Field:=1, Criteria1:="<11", Operator:=xlOr, Criteria2:="=***"

Seuls les numériques <11 sont affichés ainsi que les cellules qui contiennent du texte.

Les vides sont cachés ainsi que les valeurs >=11

A+


super merci Hasco,
ca fonctionne presque parfaitement, il me reste juste a trouver comment afficher les cellules vides et ca sera parfait :)

en tout cas merci beaucoup ;)
 
G

Guest

Guest
Re : comment ce debarasser d'une boucle (loop) ?

Re,

Avec l'enregistreur de macro on obtient:

1 - pour les vides:

Code:
Selection.AutoFilter Field:=1, Criteria1:="="

2 - pour les non vides:

Code:
Selection.AutoFilter Field:=1, Criteria1:="<>"
Suffit d'y penser.

A+
 

Discussions similaires

Réponses
7
Affichages
410

Statistiques des forums

Discussions
312 503
Messages
2 089 062
Membres
104 015
dernier inscrit
kkgk