[Catégorie modifiée VB6 --> VBA] Cellules visibles après filtre

roulax Messages postés 1 Date d'inscription vendredi 2 juillet 2010 Statut Membre Dernière intervention 2 juillet 2010 - 2 juil. 2010 à 15:58
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 5 juil. 2010 à 09:45
Bonjour,

En stage, je suis en train de développer une macro.
J'ai un petit problème pour selectionner les cellules visibles après un filtre.
Dans ma macro, je veux copier des données d'une feuille A et les coller dans une feuille B.
Je veux copier les cellules visibles de la ligne 2 à la dernière ligne où il y a des données.
Mais je veux aussi vérifier qu'il y a bien des données filtrées, et dans le cas où la selection de mon filtre est vide, je veux stoper la macro.

Mon code est le suivant mais il ne fonctionne pas, il m'affiche le message 'pas de données" même si il y en a :
Windows(FEUILL2).Activate
Set rngSelect = ActiveSheet.Range("A2:Z" & Range("A2" & Rows.Count).End(xlUp).Row)
NumRowsFiltre = rngSelect.SpecialCells(xlVisible).Count - 1
If rngSelect.SpecialCells(xlVisible).Rows.Count - 1 > 0 Then
rngSelect.Copy
End If
If rngSelect.SpecialCells(xlVisible).Rows.Count - 1 = 0 Then
MsgBox "Pas de données à traiter"
Exit Sub
End If

Une idée ?


roulax

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 juil. 2010 à 09:45
Salut

- Voir dans l'aide ce que renvoie .Count car tu n'arrêtes pas de faire des -1 sans raison apparente.
- Apprends à déboguer :
F9 sur une ligne de code : le programme s'arrêtera là au prochain passage
Une fois le programme figé, passe la souris au dessus de tes variables pour en connaitre la valeur
F8 pour avancer d'une seule ligne
F5 pour continuer normalement
- Voir l'utilisation de If-Else-Then pour éviter les répétitions.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rejoignez-nous