Téléchargement
illégal
Posez votre question Signaler

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

pijaku 4444Messages postés 15 mai 2008Date d'inscription 24 avril 2012Dernière intervention - Dernière réponse le 16 nov. 2010 à 10:23
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...
Lire la suite 

VBA Excel 2007 boucle sur lignes filtrées »

10 réponses
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
cousinhub29- 11 nov. 2010 à 02:37
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
ti_cocotehier_france- 11 nov. 2010 à 11:25
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.
pijaku- 11 nov. 2010 à 22:02
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Le Pingou- 11 nov. 2010 à 11:23
Bonjour,
Est-t-il possible de savoir pourquoi il y a 2 boucles, car je pense qu'une est suffisante?
Merci.
Salutations.
Le Pingou
cousinhub29- 11 nov. 2010 à 11:25
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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+
Ajouter un commentaire
Ce document intitulé « VBA Excel 2007 boucle sur lignes filtrées » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?