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

 

Pièces jointes

  • MACRO FILTRE AVANCE MULTI CRITERES avec Criteres Supérieur & Inferieur .xlsm
    139.9 KB · Affichages: 25

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
 

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 :)
 

Pièces jointes

  • MACRO FILTRE AVANCE MULTI CRITERES avec Criteres Supérieur & Inferieur MODIFIEE.xlsm
    141.1 KB · Affichages: 16

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.
 

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)
 

Discussions similaires