filtre auto

  • Initiateur de la discussion JEAN MI
  • Date de début
J

JEAN MI

Guest
BONSOIR au forum

Dans un classeur sur la feuil 1 j'ai une macro qui me permet de lancer le filtre auto et une macro retour feuil2
Avec cette macro retour j'annule le filtre auto jusque pas de probleme mais losque le filtre auto est deja desactive et que je clique retour probleme avec selection.auto filter
ci joint un exemple

merci pour toutes les reponses et bonne soiree à tous
 

Pièces jointes

  • Classeur1.zip
    7.4 KB · Affichages: 16
  • Classeur1.zip
    7.4 KB · Affichages: 15
  • Classeur1.zip
    7.4 KB · Affichages: 21
G

Gérard DEZAMIS

Guest
Bonsoir Jean Mi

En faisant semblant de filtrer avant le retour c'est un début de solution
En attenadant ...
Comme dab les Supers Visualeux Basiques vont dégainer dans peu de temps
 

Pièces jointes

  • FiltreAutomat.zip
    8.2 KB · Affichages: 18
@

@+Thierry

Guest
Re: filtre auto AuotoFilter Activation/Désactivation

Bonjour Gérard, Jean Mi, le Forum

Voici un bout d'un code que j'utilise dans un de mes programmes, désolé je n'ai pas le temps de faire un exemple complet

If w.AutoFilterMode Then
w.AutoFilterMode = False
w.Range("A1").Autofilter ColNumSup, LeSupplier
w.Range("A1").Autofilter ColNumAcc, LeCompte
Else
w.Range("A1").Autofilter ColNumSup, LeSupplier
w.Range("A1").Autofilter ColNumAcc, LeCompte
End If


NB Les ColNumSup, LeSupplier sont des variables pour identifier le numéro de colonne à filtrer et l'item à filtrer respectivement

Bon Lundi
@+Thierry
 
@

@+Thierry

Guest
NB le "w" est issue d'un code de Set d'objet WorkSheet...

Dim w As Worksheet
Set w = Worksheets(1)

Sinon un simple With Worksheets("TaFeuille") / End With peut faire l'affaire en ne conservant que les "point"

@+Thierry
 
G

Gérard DEZAMIS

Guest
Bonjour @+Thierry

Que c'est dur de commencer un lundi matin avec des problèmes !
ça gâcherait presque le W-E passé ... un comble.
Se retrouver tout ....... démuni depuis une heure devant une formule ou un code sachant qu'à l'autre bout du fil l' AUTRE est en train de siffloter tout décontracté ....

- ColNumSup - LeSupplier - ColNumAcc - LeCompte - les "point"

J'ai l'impression de jouer au Cluedo. Quelle arme faut-il utiliser, à quel endroit et contre qui ? C'est la guerre !

Je ne souhaite qu'une chose : que la fatigue t'accable et que pour te "reposer" tu puissses prendre la clavio-plume et consacrer qq minutes pour m'écrire un mot !
Merci par avance
Bien cordialement
GD
 
B

Brigitte

Guest
Bonjour JeanMI, Gérard, Thierry,

Ce petit mot non pour ajouter au schmilblick, je le trouve assez juteux, mais pour compatir avec le mot d'humour (et non billet d'humeur) de Gérard, agacé par tous ces jeunes cerveaux en ébullition qui savent tout faire d'un seul doigt.

Comme dirait Véri, niark...

Allez sans rancune, moi j'ai ma tite signature signée Thierry, déjà ca console... d'être bête (ou presque)
 
J

JEAN MI

Guest
Bonjour Brigitte, Gérard, Thierry,

merci a tous ,du coup j'ai essaye ce code avec w.AutoFilterMode (merci Thierry) ca marche,
encore merci et bonne soiree

Dim w As Worksheet
Set w = Worksheets(1)

If w.AutoFilterMode Then
Selection.AutoFilter

End If

Sheets("Feuil2").Select
End Sub
 
@

@+Thierry

Guest
Bonjour les Gérard, Brigitte, Jean Mi, Le Forum,

Heu oui Gérard j'a été un peu succinct en explication, voici une mini démo :
Sur un classeur Vierge en feuille "Feuil1" / cellule "A1"tu colles ceci :

test
toto1
toto2
toto3
toto4
toto5
toto6
toto7
toto8
toto9
toto10

Dans un module standard de ce classeur tu colles ceci :


Sub GerardD()
Dim W As Worksheet
Dim R As Range
Dim C As Byte
Dim S As String

Set W = Worksheets("Feuil1")
Set R = W.Range("A1")

C = InputBox("Taper un Chiffre, pour le numéro de colonne", "Colonne Sélection", 1)
S = InputBox("Taper le mot à Auto-Filtrer", "Filtre Sélection", "toto7")


If W.AutoFilterMode Then
W.AutoFilterMode = False
R.AutoFilter C, S
Else
R.AutoFilter C, S
End If
End Sub


Je pense que tu comprendras mieux...

Bonne Journée
@+Thierry
 
G

Gérard DEZAMIS

Guest
Bonsoir @+Thierry,

M E R C I BCP,

En voilà des "mini" démo comme je les aime. (comme les jupes : plus c'est mini plus on se rend compte du problème rapidement ... mais je ne suis pas certain que l'on puisse avoir toujours la solution dans ces occasions là)
De rage je suis allé m'offrir ce matin le Spécial Visual Basic pour Office ....Pour les Nuls
Comme ça cela sera peut-être à ma portée.
KOIKILENSOIE ta démo fonctionne très bien et en plus j'ai compris !
Que demande le peuple !
Toutes mes excuses pour t'avoir relancé gentiment mais ceux qui roulent en Ferrari ne se souviennent pas souvent d'avoir été piétons (Pensée profonde de Lao-Tseu ou deNietzsche , je ne me souviens plus !
Bien cordialement
@+
GD
 
V

vincent

Guest
Selection.AutoFilter

en utilisant la procedure suivante, Selection.AutoFilter je peux faire un filtre suivant 2 critères. comment faire pour faire un filtres suivants trois critères distinct ?
merci de votre aide.

Columns("B:B").Select
Selection.AutoFilter
Selection.AutoFilter field:=1, Criteria1:="=GAA", Operator:=xlOr, Criteria2:="=GAB"
 
@

@+Thierry

Guest
Re: Selection.AutoFilter

Bonsoir Vincent, Gérard, Brigitte, Jean-Mi, le Forum

Il y a deux mondes en fait à travers VBA........ Le monde d'Excel, piloté par VBA et qui permet de "macrotiser" plus ou moins bien ce qu'Excel peut faire....

Et ce qu'il faut bien comprendre dans le cas présent, l'Auto-Filter est une "facilité" d'Excel mais pas de VBA. En clair VBA ne fera pas plus de critères que ce qu'Excel propose. Et mis a part de jouer aussi avec des formules combinées à du VBA (ce qui deviendrait vraiment une usine à gaz) je ne pense pas que l'AutoFilter puisse te permettre d'aller plus loin que deux critères (par VBA ou manuellement)

Ceci étant dit, VBA est bien plus puissant que de "piloter" Excel et te permet de faire un filtre par programmation pûre.

Il y a aussi les filtres élaborés, mais je ne m'attarde pas dessus dans ce fil, mais je te conseille de voir mes posts récents à ce sujet...

Donc en VBA une première solution consisterait en une boucle for each toute simple sur un exemple tout simple aussi comme pour Bernard ci-dessus :

Sur un classeur Vierge avec deux feuilles "Feuil1" et "Feuil2"...

En feuille "Feuil1" / cellule "A1"tu colles ceci :
TESTCol1
Toto1
Toto3
Toto3
Toto4
Toto5
Toto6
Toto7
Toto8
Toto9
Toto10
Toto1
Toto2
Toto2
Toto3
Toto15
Toto16
Toto17
Toto18
Toto19
Toto20
Toto21
Toto22
Toto23
Toto24

Puis en feuille "Feuil1" / cellule "B1"tu colles ceci :
TESTCol2
ZAZA1
ZAZA14
ZAZA14
ZAZA4
ZAZA5
ZAZA6
ZAZA7
ZAZA8
ZAZA9
ZAZA10
ZAZA11
ZAZA12
ZAZA13
ZAZA14
ZAZA15
ZAZA16
ZAZA17
ZAZA18
ZAZA19
ZAZA20
ZAZA21
ZAZA22
ZAZA23
ZAZA24

En feuille "Feuil2" / cellule "A1" ET "B1" tu colles ceci :
RetourColA RetourColB


Et dans un module standard tu colles ceci :
Sub DemoFiterVBA()
Dim Plage As Range, Cell As Range
Dim L As Integer

Set Plage = Sheets("Feuil1").Range("A1:A" & Range("A65536").End(xlUp).Row)

For Each Cell In Plage
Select Case Cell.Value

Case "Toto1"
With Sheets("Feuil2")
L = .Range("A65536").End(xlUp).Row + 1
.Range("A" & L) = Cell
.Range("B" & L) = Cell.Offset(0, 1)
End With

Case "Toto2"
With Sheets("Feuil2")
L = .Range("A65536").End(xlUp).Row + 1
.Range("A" & L) = Cell
.Range("B" & L) = Cell.Offset(0, 1)
End With

Case "Toto3"
With Sheets("Feuil2")
L = .Range("A65536").End(xlUp).Row + 1
.Range("A" & L) = Cell
.Range("B" & L) = Cell.Offset(0, 1)
End With

End Select


Voici pour une première approche. Il est possible de faire la même chose via des tableaux indexés séquentiellement beaucoup plus rapides, mais il faut déjà comprendre le principe du code ci-dessus.

Bon Week End
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 339
Membres
103 524
dernier inscrit
Smile1813