Section de plusieurs lignes selon un critère VBA

Bonjour,

Je suis novice en VBA, j'essaye de maitriser les boucles, mais ce n'est pas encore ça...

J'aimerais que ma macro sélectionne plusieurs ligne selon un critère.

Une fois la boucle terminer, il n' y a que la dernière ligne qui respecte le critère qui est sélectionnée.

Comment faire pour que la boucle sélectionne toutes les ligne respectant le critère et non pas uniquement la dernière ?

Merci par avance pour vos réponse.

Ci dessous le code que j'ai produit :

Sub test()

    Feuil1.Activate

 'definition de la plage de recherche
    For i = 5 To 500

        If Cells(i, 3) > 900 And Cells(i, 3) < 999 Then
            Cells(i, 3).EntireRow.Select
        End If
    Next i

End Sub

Bonjour,

Vous voulez vraiment sélectionner ?

En tant cas, il est possible de le faire notamment en ayant une variable range qui soit l'union des lignes répondant au critère :

Sub test()

dim runion as range

with Feuil1
    .Activate
    For i = 5 To 500
        If .Cells(i, 3) > 900 And .Cells(i, 3) < 999 Then
            if runion is nothing then set runion = .rows(i)
            set runion = union(runion, .rows(i))
        End If
    Next i
    if not runion is nothing then runion.select
    'on aurait pu mettre .delete ou .interior.color = 255
end with

End Sub

Cdlt,

Bonjour,

Je ne recommande pas trop de passer directement par des Range ou des Cells pour faire une boucle sur les cellules, et je ne recommande pas non plus l'utilisation des Select.

Quel est le prochain objectif après avoir trouvé les cellules qui remplissent le critère de recherche?

Merci pour vos réponses,

Le but final de la macro est d'effacer les lignes respectant le critère

Je souhaitais permettre à l'utilisateur de visualiser la sélection avant la suppression pour permettre une vérification visuel de ce qu'il va effacer.

Mais la sélection avant suppression est accessoire, je peux m'en passer pour simplifier la chose.

Pour visualiser, vous pouvez laisser le code tel qu'il est. Si ce contrôle n'est pas nécessaire, il suffit de remplacer .select par .delete. Mais la suppression est alors irréversible

Edit : je viens d'éditer le code d'ailleurs pour y déclarer la variable...

Merci beaucoup @3GB !!!

Tout fonctionne comme je le souhaitais.

Je joins un essai à adapter, il faudra lancer la macro test.

J'utilise un filtre puis un formulaire qui demande si on souhaite confirmer la suppression, il est possible de se balader sur le classeur, attention je n'ai pas géré tous les éventuels problèmes qu'il pourrait y avoir si on changer de feuille par exemple.

32classeur1.xlsm (18.29 Ko)

Super !

A noter que je partage quand même globalement l'avis d'Ausecour. Cette solution est bien pour un nombre de lignes limité... Au delà de plusieurs milliers de lignes, il faut commencer à utiliser des tableaux dynamiques. S'y familiariser sera de tout façon bénéfique !

Edit : Ou un filtre... . Ausecour, tu penses que filtrer et supprimer est plus rapide que passer par un tableau avec de grandes quantités d'infos ?

Cdlt,

Merci Ausecour pour cette version,

Je n'avais jamais penser à travailler avec les filtres,

Je vais faire des recherche pour me former sur le sujet car effectivement ça me semble plus simple à manipuler.

Merci pour vos reponses.

Super !

A noter que je partage quand même globalement l'avis d'Ausecour. Cette solution est bien pour un nombre de lignes limité... Au delà de plusieurs milliers de lignes, il faut commencer à utiliser des tableaux dynamiques. S'y familiariser sera de tout façon bénéfique !

Edit : Ou un filtre... . Ausecour, tu penses que filtrer et supprimer est plus rapide que passer par un tableau avec de grandes quantités d'infos ?

Cdlt,

De mémoire sur une très grande quantité de lignes Excel met du temps à filtrer et supprimer les lignes apparentes, je pense qu'un TCD s'en sortirait mieux, c'est sûrement le fait de devoir supprimer les lignes et tenir à jour l'affichage qui rend la tâche longue en général, je dois avouer ne pas toujours savoir ce qu'il y a de mieux niveau optimisation sur Excel, ce n'est pas très clair dans ma tête.

Il faut dire que je n'ai pas assez de vécu avec Excel pour vraiment savoir, j'aurais 10-20 ans de gros projets dessus je pourrais mieux répondre mais là...

Merci pour ta réponse Ausecour. Je demandais au cas où, c'est une question que je me pose (sans non plus que ça me tracasse) et je ne sais pas vraiment car en général, la vitesse d'exécution ne pose pas énormément de problème sur les cas que je rencontre.

Tant que c'est que plus rapide qu'en sélectionnant toutes les cellules lors d'une boucle, c'est déjà ça .

A bientôt,

Rechercher des sujets similaires à "section lignes critere vba"