Autres Besoin Aide MACRO FILTRE AVANCE MULTI CRITERES avec Criteres Supérieur & Inferieur

Jeanluc31470

XLDnaute Nouveau
Bonjour à Toutes et à Tous, j'ai EXCEL 2007 64bits,
J'ai besoin d'aide.
Mon problème , mon fichier Exemple en PJ: MACRO FILTRE AVANCE MULTI CRITERES avec Criteres Supérieur & Inferieur.xlsm
J'ai une feuille avec plusieurs colonnes de données , et plusieurs critères avec des données sélectionnées en > et <.
Lorsque je fais des filtres avec la fonction "filtres spécial" en manuel cela marche , j'ai mon résultat mais il ne récupère pas la Valeur à la case concernée, il n'y a rien.

. Ce qui m'interresse surtout c'est pour créer une Macro pour "filtrer spécial " les valeurs, celle ci ne fonctionne pas , et il n'y a aucune valeur qui se sélectionne au filtrage, tout "s'éfface d'affichage" et surtout rien aucun résultat affiché à la céllule voulue.

Et quand cela s'affiche, il manque la moitiée des Valeurs filtées

En bref une Macro "Filtre Spécial" avec des Valeurs > et < , ne fonctionne pas….

Quelqu'un pourrait il me dire ce qui ne va pas , ou peut etre n'ai je pas coché les bonnes options dans les "outils" ou compléments d'excel… ?
Ou peut etre passer en Access ?
Pouvez vous me donner un exemple qui marche ?


Merci à toutes et à tous
:)

 

Fichiers joints

Staple1600

XLDnaute Barbatruc
Bonjour le fil,

Sauf erreur de ma part, ton code VBA renvoie le résultat souhaité.
Je viens de tester (avec XL 2003)
Pour commodité de lecture, j'ai remanié ton code (avec un léger dépoussiérage)
VB:
Sub FiltreBH()
Range("B1:J37").AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:=Range("J65:K107"), _
CopyToRange:=Range("ResultatsBABD"), Unique:=False
End Sub
 

Jeanluc31470

XLDnaute Nouveau
Merci Staple1600,

Mais je viens de tester cette macro avec ce code , ça ne marche pas .
ça donne toujours un seul résultat du filtre plutôt que les 5 souhaités.
Je ne trouve toujours pas .

merci encore d'avoir essayé .
Sympa :)
 

Staple1600

XLDnaute Barbatruc
Bonsoir

Si, si ca marche
(sinon je n'aurais pas publié mon précédent message...)
Tu aurais du plutôt écrire:
"je n'arrive pas à faire fcontionner avec succès la macro comme tu l'as fait lors de ton test sur ton XL2003"
Ce qui n'est pas la même chose que : "ca marche pas"
;)
 

Staple1600

XLDnaute Barbatruc
Re

Ci-dessous la preuve en image que la macro fonctionne ;)
01zFILELAB.jpg
NB: Et si tu veux qu'une seule colonne copiée
Testes avec la même macro un chouia modifiée
VB:
Sub FiltreBH_V2()
Range("B1:J37").AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:=Range("J65:K107"), _
CopyToRange:=Range("ResultatsBABD"), Unique:=False
[ResultatsBABD].CurrentRegion.Offset(, 1).Resize(, 10).Clear
End Sub
 

Jeanluc31470

XLDnaute Nouveau
Merci Staple1600
Effectivement tu as raison , ça ne marche pas chez moi avec mon Excel 2007 , ni avec un Excel 2010.
J'ai eu beau mettre la macro tel que tu me l'as suggéré , cela ne marche pas , et toujours qu'un seul résultat...
Je ne comprends pas , ou est la faille ….
Est ce un problème de config de excel ? , est ce la version de excel ? famille ou pro ?
Je ne comprends pas pourtant c'est un Office 2007 officiel avec licence.
Voici mon fichier avec la Macron que tu m'as sympatiquement envoyé , et qui ne marche pas:
Merci beaucoup Staple1600 :)
 

Fichiers joints

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, Jean-Luc

J'aime bien la marche nordique sans pour autant être En Marche!
Du coup dans mon VBE je ponds des macros etnon pas des Macron
(cf ton précédent message)

Je viens de tester sur ton dernier fichier.
Cela fonctionne toujours sur mon PC (celui avec Excel 2003)

Reste plus à qu'à attendre un test sur un XL plus récent.

On bien d'accord que tes yeux se déplacent en AI66 pour voir le résultat de la macro?
 

Jeanluc31470

XLDnaute Nouveau
Bonjour Staple1600,

Oui bien entendu mes yeux se déplacent en AI66 pour le résultat qui hélas ne donne que une seule donnée filtrée au lieu de 5. :D
je vais tester chez un ami qui a un office 2019 , et je te dirai ce qu'il en est.
Mais cela est vraiment bizarre , car même avec LibreOffice et OpenOffice , ce type de Macro avec filtre plage > et < , ne fonctionne pas non plus chez moi, avec un W10 officiel sous licence et mis à jour automatiques.
Cela fait 6 mois que je me "casse les dents " dessus...
Merci beaucoup Staple1600 :)
 

Staple1600

XLDnaute Barbatruc
Re


C'est bizarre, cette histoire, car j'ai testé sur tes deux fichiers et dans les deux cas, la macro fonctionne.
En théorie, la version d'Excel ne devrait pas être en cause ici.
Essaie de faire un test sur un autre fichier (avec la macro suivante)
Donc sur une feuille vide, lance cette macro
VB:
Sub test()
Dim formules, x&
'création des données de test
formules = Array("=ROW()*COLUMN()", "=INT(ROW()*PI())", "=(A2+B2)*ROW()", vbNullString, "=(B2+C2)-A2")
[A1:H1] = Array("ITEM1", "ITEM2", "ITEM3", vbNullString, "ITEM4", vbNullString, "ITEM4", "ITEM4")
[A2:E25] = formules
[G2:G4] = Application.Transpose(Array(">18", ">98", ">300"))
[H2:H4] = Application.Transpose(Array("<72", "<290", "<650"))

'application du filtre élaboré
Range("A1:E25").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("G1:H4"), _
CopyToRange:=Range("G7"), Unique:=False
x = [G7].CurrentRegion.Rows.Count
'mise en forme
With Range("G7:K7")
.Resize(11).Interior.Color = vbYellow
.Font.Bold = True
End With
End Sub
Normalement, tu dois obtenir 10* lignes de renvoyées dans la zone jaune.
Est-ce le cas chez toi?
*: sans compter la ligne de "titre".
 

Jeanluc31470

XLDnaute Nouveau
Re,

J'ai essayé mon fichier sur Excel 2019 , il n'y a rien à faire cela ne fonctionne toujours pas...

J'ai testé ton code VB ci dessus , et OUI cela fonctionne parfaitement sur mon Excel 2007.
Mais avec un Code VB , les différents Filtres > et < , seront fixes et immuables, sauf si je les reprends les uns après les autres en codage.
Hors j'ai une cinquantaine de filtres à faire comme cela.

L'avantage d'avoir une Macro Excel , est que l'on peut modifier les Valeurs des Filtres > et <, constamment, autrement dit les Filtres en > et < sont évolutifs instantanément, mais pas en VB ou par exemple les valeurs
[G2:G4] = Application.Transpose(Array(">18", ">98", ">300"))
[H2:H4] = Application.Transpose(Array("<72", "<290", "<650"))
sont figées.

. ( du moins je ne suis pas assez bon pour le programmer)

Merci Staple1600 :)
 

Staple1600

XLDnaute Barbatruc
Re

L'exemple précédent n'est qu'un test
(la partie qui génére les données de test et la zone de critères n'a pas à être réutilisée)
C'était juste pour voir si tu obtenais le même résultat que moi quand tu utilises le filtre élaboré en VBA avec plusieurs critères.
 

Jeanluc31470

XLDnaute Nouveau
En tous les cas j'ai bien regardé ton code et franchement il est excellent, je vais essayer de l'adapter mais c'est pas gagné.
Mais je comprend toujours pas pourquoi les macros excel aussi simples ne fonctionnent pas...
Merci Staple1600 :)
 

Staple1600

XLDnaute Barbatruc
Re

Quelque soit la manière de remplir la zone de critère, normalement
Cette syntaxe VBA pour le filtre élaboré (qui était dans ton code de départ, dans la macro Sub FiltreBH() devrait fonctionner)
'application du filtre élaboré
Range("A1:E25").AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("G1:H4"), _
CopyToRange:=Range("G7"), Unique:=False
 

Jeanluc31470

XLDnaute Nouveau
OUI en effet elle devrait fonctionner , mais ce n'est pas le cas.
Si tu préfères , lorsque je crée la Macro tout vas bien, puis j'arrete l'enregistrement. Le Module créé tout va bien.
. ou , 2 ème essai , en code , je crée le module , et je rentre ce code, puis j'enregistre.

Un fois toute les plages remises à zéro , précédent résultat effacé manuel, c'est lorsque , j'exécute la Macro , que là elle ne fonctionne pas.
Le séquençage Excel de la Macro , ne fonctionne pas , et me donne qu'une partie des résultats.

Je vais tenter avec ton code ....
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil,

Jean-Luc
Tu peux poster le code de la macro RAZ_ALL?
Et décrire précisémment ton mode opératoire?

NB: Quand tu testes la macro FiltreBH_V2 sur ton fichier exemple de ce fil, elle fonctionne ou pas?
Moi pour tester j'ai d'abord testé à partir de VBE ( ALT+F11 puis F5)
Ensuite j'ai testé en affectant la macro au bouton FILTRER ALL
Dans les deux cas, cela fonctionne.
Et entre chaque essai, j'ai effacé manuellement le résultat de la macro
( à partir de AI66)
 

Jeanluc31470

XLDnaute Nouveau
Je n'ai pas fait de Macro RAZ_ALL.
La Macro FiltreBH_V2 ne fonctionne pas comme les autres, hélas ...sniff...
La méthode est simple , a partir de la fonction enregistrement d'une Macro Excel , ou par création de module et copie du code.
Après il suffit d'éxecuter la Macro à partir de l'Onglet affichage , afficher les macro et éxecuter. Il n'y a pas plus simple et épuré.
J'aurais pu créer Boutons , etc, mais pour limiter au maximum les erreurs de codes , je n'ai mis que cela.
Et entre chaque essai , j'efface manuellement le résultat de la macro en AI66...
Je ne vois pas ce qui cloche dans Excel ….
. merci staple1600 :)
 

Jeanluc31470

XLDnaute Nouveau
Je viens de tester le ALT+F11 puis F5 , cela ne marche pas Non plus …..toujours 1 seul résultat au lieu de 5 ...
Merci de m'avoir donné cette méthode aussi ….. :)
 

Staple1600

XLDnaute Barbatruc
Re

Je ne comprends pas ce que tu veux dire car la macro FiltreBH_V2, c'est ta macro initiale "epurée"
Ta macro initiale
VB:
Sub FiltreBH()
'
' FiltreBH Macro
'

'
    
    Range("B1:J37").Select
    ActiveWindow.SmallScroll Down:=-3
    Range("B1:J37").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "J65:K107"), CopyToRange:=Range("ResultatsBABD"), Unique:=False
    ActiveWindow.SmallScroll Down:=-3
End Sub
ma version "épurée"
VB:
Sub FiltreBH_V2()
Range("B1:J37").AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:=Range("J65:K107"), _
CopyToRange:=Range("ResultatsBABD"), Unique:=False
[ResultatsBABD].CurrentRegion.Offset(, 1).Resize(, 10).Clear
End Sub
Et ces deux macros fonctionne sur mon PC, sur tous les fichiers exemple que tu as joins dans ta discussion.

NB: Dans ma macro, j'ai ajouté la dernière ligne uniquement si tu souhaites avoir un résulta comme sur ta copie d'écran (1 seule colonne)
Mais la syntaxe du filtre élaboré est exactement la même dans les deux macros.
 

Jeanluc31470

XLDnaute Nouveau
J'ai une bonne nouvelle Staple1600,
J'ai un ordinateur portable , un simple VAIO, avec un autre W10 avec licence et le même excel 2007 installé , j'ai créé un nouveau fichier excel avec les fameuses Macro et cela fonctionne.
Mais comme le config de ce portable n'est pas la même, en fait il m'a refusé la création de ce fichier sur le Bureau, et je l'ai donc créé sur le Disque Dur "C" .
Au départ je pensais que c'était un Programme particulier mais de grande diffusion qui perturbait le fonctionnement de Excel , mais il semblerait que travailler sur le "Bureau" ne permet pas l'execution d'un VBA sans "erreurs".
Je confirmerai cette technique un peu plus tard.
Merci Staple1600 , grace à tes échanges , je pense avoir trouvé une solution depuis 6 mois de casse tête… :)
 

Staple1600

XLDnaute Barbatruc
Re

La macro FiltreBH telle que présentée dans ton fil n'a rien à voir avec l'enregistremnt du classeur sur le disque C ou ailleurs d'ailleurs.
Le code VBA qu'elle contient ne fait qu'appliquer un filtre élaboré.
Donc tu n'as du détaillé tout le mode opératoire qui te faisait dire que la macro ne fonctionnait pas.

Mais bon , tant mieux si nos échanges t'ont apporté satisfaction ;)
 

Discussions similaires


Haut Bas