OVH Cloud OVH Cloud

VBA - Connaitre les valeurs contenues dans un filtre

6 réponses
Avatar
Olivier M
Bonjour à tous,

Afin de terminer une application sur Excel, je rencontre un probleme...
Mon fichier comporte des filtres, et je souhaiterais qu'une macro s'éxécute
pour chaque valeur contenue dans le filtre. Le nombre des valeurs peut-être
varable...
Mon explication est-elle claire ?
Merci par avance pour votre aide.
Cordialement

Olivier M

6 réponses

Avatar
AV
Afin de terminer une application sur Excel, je rencontre un probleme...
Mon fichier comporte des filtres, et je souhaiterais qu'une macro s'éxécute
pour chaque valeur contenue dans le filtre. Le nombre des valeurs peut-être
varable...


Pour la colonne A avec une étiquette de colonne en A1 :

Sub zzz()
For Each c In Range("A2", [A65536].End(3)).SpecialCells(xlCellTypeVisible)
MsgBox c.Value 'ou l'instruction que tu veux
Next
End Sub

AV

Avatar
Olivier M
"AV" a écrit dans le message de news:

Afin de terminer une application sur Excel, je rencontre un probleme...
Mon fichier comporte des filtres, et je souhaiterais qu'une macro
s'éxécute pour chaque valeur contenue dans le filtre. Le nombre des
valeurs peut-être varable...


Pour la colonne A avec une étiquette de colonne en A1 :

Sub zzz()
For Each c In Range("A2", [A65536].End(3)).SpecialCells(xlCellTypeVisible)
MsgBox c.Value 'ou l'instruction que tu veux
Next
End Sub

AV



Merci pour ta réponse...

Ooopsss, je souhaite qu'une macro s'éxécute pour chaque valeur DIFFERENTE
contenue dans le filtre.... or dans ton exemple, çà le fait pour chaque
valeur...

Peux-tu remédier à ce probleme...

Excuse moi pour l'imprécision de ma demande... ;-)
A+


Avatar
AV
Ooopsss, je souhaite qu'une macro s'éxécute pour chaque valeur DIFFERENTE
contenue dans le filtre.... or dans ton exemple, çà le fait pour chaque


Les réponses seront différentes selon que tu veuille boucler sur les valeurs
uniques de la plage ou sur les valeurs de la plage déjà filtrée...

Sur les valeurs uniques de la plage :

Sub zzz()
Application.ScreenUpdating = False
Range("A1", [A65536].End(3)).AdvancedFilter Action:=xlFilterInPlace,
Unique:=True
For Each c In Range("A2", [A65536].End(3)).SpecialCells(xlCellTypeVisible)
MsgBox c.Value 'ou l'instruction que tu veux
Next
ActiveSheet.ShowAllData
End Sub

AV

Avatar
AV
PS : Pour plus de clarté, il faut lire :

"....Les réponses seront différentes selon que tu veuilles boucler sur les
valeurs
uniques de la plage non filtrée ou sur les valeurs uniques de la plage déjà
filtrée...

AV
Avatar
Olivier M
"AV" a écrit dans le message de news:

Ooopsss, je souhaite qu'une macro s'éxécute pour chaque valeur
DIFFERENTE contenue dans le filtre.... or dans ton exemple, çà le fait
pour chaque


Les réponses seront différentes selon que tu veuille boucler sur les
valeurs uniques de la plage ou sur les valeurs de la plage déjà filtrée...

Sur les valeurs uniques de la plage :

Sub zzz()
Application.ScreenUpdating = False
Range("A1", [A65536].End(3)).AdvancedFilter Action:=xlFilterInPlace,
Unique:=True
For Each c In Range("A2", [A65536].End(3)).SpecialCells(xlCellTypeVisible)
MsgBox c.Value 'ou l'instruction que tu veux
Next
ActiveSheet.ShowAllData
End Sub

AV



Merci pour ta réponse....çà progresse.. ;-)
Précision complémentaire : pour chaque valeur différente, je souhaite qu'il
active le filtre avec cette valeur, excécute la macro, active le filtre avec
la valeur différente suivante, exécute la macro...

Merci...;-)


Avatar
AV
On peut pas dire que j'adore les questions à tiroir mais bon...
http://cjoint.com/?lithOzymRw

AV