Executer une macro sur une page filtrée automatiquement

grovallat

XLDnaute Nouveau
Bonjour à tous,
Mon problème est simple mais sa solution ne semble pas tant si simple car je n'ai rien trouver de tel sur internet.

En fait j'ai une feuille avec plusieurs dizaines de colonnes et plusieurs macros qui s'appliquent sur elle. En plus des macros j'ai également utiliser la fonction "filtrage automatique" d'excel.
Maintenant que le contexte est posé voici le problème: j'ai une macro qui compte le nombre de ligne vide dans la feuille (jusque là banal) mais je voudrai que cette macro puisse également s'appliquer si un critère de filtrage est activer.

Attention ca se corse!!! exemple

feuille 1===>sans filtre ===>macro Comptage===>résultats 1000 lignes non vides
mais voilà ce que j'aimerai pouvoir obtenir:

feuille1==>critère filtre auto 1===> 600 données se masquent ===> macro comptage====>résultat 400 lignes non vides
ou encore:
feuille1===>critère 1&2 de filtrage auto===> 600+200 données se masquent===>macro Comptage====> résultat 200 lignes non vides


voilà, j'espère que j'ai à peu près bien expliciter mon problème et j'espère que quelqu'un pourra m'y aider car là.....je connais un pc qui ne tardera pas à apprendre à voler...

Merci d'avance,
Cordialement
 

pedrag31

XLDnaute Occasionnel
Re : Executer une macro sur une page filtrée automatiquement

Bonjour Grovallat, Bonjour le forum,

On peut comprendre ou tu veux en venir avec la macro de comptage qui te permettra de savoir instantanement combien de lignes "filtrees" sont affichees apres utilisation du filtre...

Mais pour creer cette macro il va falloir que tu partages un fichier exemple car sinon nous allons partir dans tous les sens...

Un essai en PJ...

En esperant avoir vu juste et repondu a ta question.

Bonne journee.:)
 

Pièces jointes

  • CompterLesLignesTriees.xls
    27 KB · Affichages: 61

grovallat

XLDnaute Nouveau
Re : Executer une macro sur une page filtrée automatiquement

Tu as tout as fait compris ce que je souhaitais mais y'a comme qui dirai une couil*e dans le paté... en fait jai plein de macro, qui compte les lignes non vides, qui comptent les lignes qui ont "tata" dans la colonne X, qui font des sommes de valeurs contenues dans les colonnes, plein pleins de petits truc comme ca... et je ne peux pas les réécrire ca me prendrai 6 mois et je ne suis encore qu'un débutant.
En fait je pensait qu'il y avait peut-etre quelques lignes de code à placer au début de mes macros qui pourrait dire "éxécute la macro non plus sur la feuille 1 mais la feuille 1 telle qu'elle est affichée c'est à dire la feuille 1 filtrée (ou non)" ou encore "applique cette macro pas sur la feuille 1 mais sur la nouvelle feuille 1, qui est en fait la feuille 1 triée".

je sais pas si je suis clair.
 
Dernière édition:

pedrag31

XLDnaute Occasionnel
Re : Executer une macro sur une page filtrée automatiquement

Re,

Oui, je vois ce que tu veux dire, enfin un fichier exemple reste le mieux, on avance tjs en aveugle, la... Tu m'expliques aussi que le fichier que j'ai joint fait exactement ce que tu attends mais que ca va pas parce qu'il y a un element etranger dans le potage...:rolleyes:

Donc si tu veux qu'on avance sur ton probleme, il faut que tu mettes un fichier joint et qu'on travaille ensemble dessus ou sinon, que tu prennes le temps de comprendre et d'adapter mon code a tes macros...

Sinon, sans ton fichier, autant me demander de vider une piscine avec une fourchette... :eek: Je ne sais pas comment est fait ton code, s'il peut fonctionner avec des lignes cachees, etc... Et je pourrai te proposer 1000 solutions qui ne marcheront jamais car elles ne s'adaptent pas correctement a ton code...

Bonne journee.:)
 

grovallat

XLDnaute Nouveau
Re : Executer une macro sur une page filtrée automatiquement

Voilà un petit fichier qui ressemble en beaucoup (mais alors vraiment beaucoup) à ce sur quoi je bosse. Avec j'ai mis trois macro représentative de la large majoritée de celles utilisées dans le fichier réel.

pedrag31, tu viens de mettre le doigt exactement sur ce que je voulais dire, j'aimerai rajouter quelques lignes de code qui diraient à la Macro "éxécute toi UNIQUEMENT sur les lignes AFFICHEES dans la feuille et non sur celle-ci toute entière".

Merci beaucoup pour ton aide, merci de tout coeur.
Esperons que dans tes milles et une solutions une soit compatible avec mon problème ^^.
 

Pièces jointes

  • Fichier.xls
    34.5 KB · Affichages: 57
  • Fichier.xls
    34.5 KB · Affichages: 66
  • Fichier.xls
    34.5 KB · Affichages: 57

pedrag31

XLDnaute Occasionnel
Re : Executer une macro sur une page filtrée automatiquement

Bonjour Grovallat, bonjour le forum,

Voir fichier en PJ.

J'ai simplement ajoute un petit test qui verifie si la valeur de la cellule est "titi" ET si la ligne n'est pas cachee (par le filtre) :

Code:
Sub Macro2()
Sheets("Feuil1").Activate
Dim cpt As Long, i As Integer

For i = 2 To Range("A65536").End(xlUp).Row
    't[COLOR="DarkGreen"]ester simplement si le critere est Titi et si la ligne n'est pas cachee[/COLOR]
    If Cells(i, 2).Value = "titi" And Rows(i).Hidden = False Then
        cpt = cpt + 1
    End If
Next
    
    Sheets("Feuil2").Range("B9").Value = cpt
    Sheets("Feuil2").Activate
    MsgBox "Somme : " & cpt
End Sub

Ainsi lorsque les lignes "titi" sont cachees par le filtre, elles ne sont pas prises en compte par ta macro...

En esperant avoir repondu a ta question.

Bonne journee. :)
 

Pièces jointes

  • MacroSurPlageFiltree.xls
    39.5 KB · Affichages: 58
Dernière édition:

grovallat

XLDnaute Nouveau
Re : Executer une macro sur une page filtrée automatiquement

Le problème est que je voudrais que tous les filtres puissent etre utilisés, ta solution est bonne mais le problème est que si je fais un filtrage sur "quantité" ou sur " réferénce" ou meme avec "tata" ou "toto" la macro ne fonctionne plus. Mais je vois un test pour voir si la ligne est cachée (" ... And Rows(i).Hidden = False Then") , puis-je utiliser ce test dans les autres macro? si oui comment (principalement pour la macro1) ?

Plus généralement, si j'ajoute le " ... And Rows(i).Hidden = False Then" dans n'importe quel IF de mes macros, celles-ci ne s'éxécuteront plus que sur les lignes non masquée?
si c'est le cas c'est ce que je veux...

Pardonne-moi je suis débutant et donc un peu noob
Merci de ta réponse!
 

pedrag31

XLDnaute Occasionnel
Re : Executer une macro sur une page filtrée automatiquement

Re,

Oui! :D

La fonction du filtre automatique Excel est de masquer les lignes qui ne nous interessent pas en fonction d'un critere...
Donc, seules les lignes qui ne sont pas "Hidden" (Rows(i).Hidden = False) contiennent les donnees a traiter.

Je te confirme bien que si tu ajoutes le " ... And Rows(i).Hidden = False Then" dans n'importe quel IF de tes macros, celles-ci s'éxécuteront seulement sur les lignes non masquees et quelque soit le filtrage automatique que tu aies fait au prealable!!!

Bonne nouvelle, hein? Juste un p'tit "And Rows(i).Hidden = False" et le tour est joue...:p:p:p

Bonne journee, :)
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 019
Membres
104 006
dernier inscrit
CABROL