Créer une boucle par macro sur un filtre (VBA)

Fermé
Signaler
Messages postés
1
Date d'inscription
mercredi 1 avril 2015
Statut
Membre
Dernière intervention
1 avril 2015
-
Messages postés
13223
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
6 décembre 2021
-
Bonjour à tous,

Je vous expose mon le but complet de ma macro en essayant d'être clair :

J'ai un fichier comportant une liste issue d'un filtre en feuille 1. Cette liste contient 153 noms. Pour chaque nom sélectionné, Excel actualise automatiquement un autre onglet attitrée (disons "feuil2"), correspondant au nom en question.

Je sélectionne ensuite deux onglets ("feuil2" et un autre qui reste le même ["feuil3"]), les copies sur un autre classeur, que j'enregistre au nom d'une cellule contenue dans ce classeur, puis enregistre le classeur créé avant de le fermer.

Ensuite, je retourne dans ma liste déroulante en filtre, sélectionne le nom suivant...etc...
Bref, jusque là, tout va bien, sauf que je dois faire ça 153 fois...

je voudrai donc créer une boucle qui ré-itère la sélection du nom suivant dans le filtre, pour que, en lançant la macro, mes 153 fichiers soit créés d'un seul coup.

J'ai essayé par enregistrement, cela marche sans la boucle, mais impossible de trouver la codification de la sélection dans le filtre.

Voilà voilà j'espère avoir été clair :)

Merci d'avance à tous.

(Désolé si ce sujet a déjà été posté, ce n'est pas faute d'avoir cherché!)

1 réponse

Messages postés
13223
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
6 décembre 2021
2 293
Bonsoir

Il suffit par macro de boucler sur toutes les lignes et de tester si elles ont masquées ou non et dans ce dernier cas de lancer la macro de recopie des données et d'enregistrement du classeur

Macro à adapter à ton fichier
Sub boucle_lignes_visibles()
Dim Ligne As Long
' derniere ligne remplie de la colonne A
Ligne = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
' boucle sur les lignes depuis la 2 (en supposant un  titre en 1) jusqu'à la dernière
For n = 2 To Ligne
' si la ligne n'est pas masquée on lance la macro qui copie les données et enregistre le classeur
If Rows(n).Hidden = False Then
' mettre ci-dessous le nom de la macro à lancer
End If
Next
End Sub


Cdlmnt
Via