VBA Excel 2007 boucle sur lignes filtrées [Résolu/Fermé]

Signaler
Messages postés
12185
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
21 septembre 2020
-
Messages postés
12185
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
21 septembre 2020
-
Bonjour,

Existe t'il un moyen facile de boucler sur toutes les lignes visibles après un filtre?
Et d'y effectuer un test?

Du genre :
Pour toutes les lignes visibles de la feuille (soit "lig" le num de la ligne visible)
Pour Lig2 = Lig To Fin (bien sur Lig2 est aussi une ligne "visible")
Si cellule "K" & lig = "K" & lig2 Et cellule "F" & lig = - cellule "F" & lig2 Alors
blabla
Fin Si
Lig2 suivante
Ligne visible suivante

Je sais, je ne suis pas clair... en fait, je dois faire une double boucle sur les lignes visibles après filtre...

Vous ai-je précisé que le fichier Excel 2007 en question comporte 500 000 lignes? Non? Ah bon... D'où le filtre initial...

Merci d'avance.

Plus d'infos, n'hésitez pas...


5 réponses

Messages postés
9755
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
10 octobre 2020
1 077
Bonjour,
Je ne l'ai pas testé, mais est-ce que cela conviendrait
For Each ligne In Range("maplage").SpecialCells(xlCellTypeVisible).Rows 
numéro = ligne.row 
Next ligne

Note: [maplage] la totalitée des données et ensuite filtrer selon choix et cela devrait marcher.
Salutations.
Le Pingou
6
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci


Bonsoir,
Juste une remarque pour compléter la bonne réponse de Le Pingou.
Je ne sais pas si sur excel 2007 le probléme du filtrage suppérieur à 1000 occurences différentes à été résolu....c'est à dire qu'il soit capable de filtrer plus de 1000 occurences différentes car c'est potentiellement possible sur un fichier de 500 000 lignes. Cela étant, Access le fait trés bien.
Messages postés
579
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
11 novembre 2018
288
Bonjour,

Si, effectivement, dans les versions antérieures à 2007, le filtre automatique ne laissait apparaître que les 1000 premières occurrences dans la liste de tri, il n'en était pas moins possible d'effectuer un filtre sur la 1500ème (par ex.) en choisissant "Personnalisé", mais en entrant manuellement la valeur du filtre voulu..
Sous 2007, cette limitation est à 10 000 occurrences différentes...

Bonne journée
Utilisateur anonyme
Merci du tuyau, Cousinhub du finistére ?
Par contre je resterai toujours étonné d'utiliser excel sur autant de ligne.
Ceci biensur n'engage que moi.
Messages postés
12185
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
21 septembre 2020
2 495
Salut,
Je profite de mes 2 minutes de connection chez un pote pour vous dire qu'effectivemnt Access aurait bien mieux géré cette bdd... C'est une demande d'aide reçue par MP ici même que je ne me sens pas capable de traiter seul. Effectivement, il faut une double boucle sur 500 000 lignes... Je reviens lundi pour ce souci. D'ici là, passez un bon week end. J'espère vous retrouver en forme lundi!!
Merci à vous
Messages postés
579
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
11 novembre 2018
288
Bonjour,

Par ce code, tu boucles sur les lignes filtrées, et les variables x1, x2, y1 et y2 te donnent les valeurs des cellules...

A supposer que ton tableau commence bien à la colonne A, sinon il faudra jouer avec l'offset du Range Database...

Sub boucle_sur_lignes_filtrees()
Dim Cel As Range, Cel2 As Range
For Each Cel In Range("_FilterDataBase").Offset(1, 5).Resize(Range("_FilterDataBase"). _
    Rows.Count - 1).SpecialCells(xlCellTypeVisible)
        For Each Cel2 In Range("_FilterDataBase").Offset(1, 5).Resize(Range("_FilterDataBase"). _
            Rows.Count - 1).SpecialCells(xlCellTypeVisible)
                x1 = Cel: x2 = Cel.Offset(, 5)
                y1 = Cel2: y2 = Cel2.Offset(, 5)
        Next Cel2
Next Cel
End Sub


Bon courage
Messages postés
9755
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
10 octobre 2020
1 077
Bonjour,
Est-t-il possible de savoir pourquoi il y a 2 boucles, car je pense qu'une est suffisante?
Merci.
Salutations.
Le Pingou
Messages postés
579
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
11 novembre 2018
288
Bonjour,

Je répondais à sa demande, dans laquelle il veut 2 boucles....(sans doute pour voir les doublons au niveau des colonnes F et K...(je ne connais pas la finalité de son projet....)

Bonne journée
Messages postés
12185
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
21 septembre 2020
2 495
Salut à tous,
Merci de vous pencher sur mon souci. Je suis désolé de ne pas pouvoir tester, ni vous répondre, j'ai flingué mon ordi... Je vous reprends tout ça lundi... Merci encore en tout cas.
Messages postés
12185
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
21 septembre 2020
2 495
Bonjour à tous,
Merci du coup de main. Nous avons laissé tomber cette idée de double boucle, bien trop complexe sur autant de lignes. La solution passe donc par plusieurs filtres. Vos solutions sont néanmoins fort juste, je les garde donc dans un coin de ma mémoire pour de futures utilisations.
Merci.
A+