Code touche clavier Flèche aut - Repérage lignes visibles non filtrée

Code touche clavier Flèche aut - Repérage lignes visibles non filtrée - VB/VBA/VBS - Programmation

Marsh Posté le 23-11-2010 à 13:25:05    

Bonjour à tous.
 
Quelqu'un peut-il me venir en aide sur Vba pour Excel 2003 ?
 
Je travaille sur une très grosse base de données et il s'agit, qu'après filtrage des données, les conditions que je fais tester ne soient pas analysées à chaque ligne mais uniquement et directement sur chaque ligne visible à l'écran. Vous l'avez bien compris, le temps d'exécution est loin d'être le même quand il faut tester 200 lignes (après filtrage des données) ou40.000 lignes.
 
Je pense donc à deux orientations mais j'ai des soucis pour programmer :
 
1) : Si, dans ma Bdd filtrée, je frappe sur la touche clavier "Flèche vers le haut", j'accède directement à la cellule de ma ligne supérieure, même si, par exemple, j'ai entre mes deux lignes visibles 1000 lignes masquées. Mais je ne parviens pas à coder en Vba pour Ecel 2003 cet enfoncement de touche "Flèche vers le haut". Quelqu'un peut-il m'écrire le code exact pour que cette frappe clavier soit reconnue, afin qu'ensuite je puisse y intégrer un nombre de boucles.
 
2) : 2ème orientation possible :
Prenons par exemple une base de données nommée "BDD" et insérons une boucle de 3 passages :  
Je veux accéder directement, par programmation Vba pour Excel 2003, à la dernière ligne visible de ma base de données (pour lecture et traitement de certaines cellules). Puis ensuite, remonter automatiquement vers la prochaine ligne visible pour accomplir la même opération que précédemment, en fonction de la boucle que je définis, SANS PASSER PAR LES LIGNES QUI SONT MASQUEES par le filtre que j'ai mis en place.
 
Mon souci c'est que je n'y parviens pas. En effet, les lignes masquées sont analysées CE QUE JE NE VEUX PAS.
 
Quelqu'un aurait-il le code exact à écrire ?
 
Par avance, je vous remercie de votre coopération.
 
Je compte sur vous et ne doute pas que vous aurez la/les solutions.
 
Alain.
 
 

Reply

Marsh Posté le 23-11-2010 à 13:25:05   

Reply

Marsh Posté le 23-11-2010 à 18:00:50    

Je vais essayer de répondre cordialement :D
mais tu utilise un vocabulaire énervant... (en tout cas si je comprend le truc)
 

alainli a écrit :

Bonjour à tous.
 
Quelqu'un peut-il me venir en aide sur Vba pour Excel 2003 ?
 
Je travaille sur une très grosse base de données et il s'agit, qu'après filtrage des données, les conditions que je fais tester ne soient pas analysées à chaque ligne mais uniquement et directement sur chaque ligne visible à l'écran. Vous l'avez bien compris, le temps d'exécution est loin d'être le même quand il faut tester 200 lignes (après filtrage des données) ou40.000 lignes.


 
Une base de donnée, c'est Access
Excel, c'est un tableur.
 
donc je suppose que tu parle de filtrer un ongletde classeur pour ne travailler que sur les 200 lignes d'affichées...
 
soit, c'est pas con :o
(mais ça peut être compliqué selon ce que tu veux faire)
 
 

alainli a écrit :


1) : Si, dans ma Bdd filtrée, je frappe sur la touche clavier "Flèche vers le haut", j'accède directement à la cellule de ma ligne supérieure, même si, par exemple, j'ai entre mes deux lignes visibles 1000 lignes masquées. Mais je ne parviens pas à coder en Vba pour Ecel 2003 cet enfoncement de touche "Flèche vers le haut". Quelqu'un peut-il m'écrire le code exact pour que cette frappe clavier soit reconnue, afin qu'ensuite je puisse y intégrer un nombre de boucles.


 
Ce que tu cherche c'est l'évenement qui te permet en VBA de traiter un changement de selection grace aux flèches.
 
celui qui s'en apporche le plus c'est :


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   Debug.Print Target.Count & " Cellules sélectionnée, adresse = " & Target.Address(False, False)
End Sub


par contre tu ne pourra pas savoir si c'est avec les fleche ou la souris, que l'utilisateur s'est déplacé.
 
l'objet Target représente la ou les cellules sélectionnées, avec la souris, ou les flèches.
 
a toi de teste s'il y en a plusieurs ou une seule et de quoi faire dans ce cas.
 

alainli a écrit :


2) : 2ème orientation possible :
Prenons par exemple une base de données nommée "BDD" et insérons une boucle de 3 passages :  
Je veux accéder directement, par programmation Vba pour Excel 2003, à la dernière ligne visible de ma base de données (pour lecture et traitement de certaines cellules). Puis ensuite, remonter automatiquement vers la prochaine ligne visible pour accomplir la même opération que précédemment, en fonction de la boucle que je définis, SANS PASSER PAR LES LIGNES QUI SONT MASQUEES par le filtre que j'ai mis en place.


bon c'est pas une BDD,
"insérer une boucle de 3 passage", ça ne veux rien dire :o
 
"programmer une boucle qui fait 3 passages" ça serait mieux.
 
Je te fourni quelques pistes :
 
voila l'objet range qui contient toutes les cellules VISIBLE


ActiveSheet.Cells.SpecialCells(xlCellTypeVisible)


 
voici le boolen qui te dis si une ligne est visible :


Debug.Print ActiveSheet.Rows("1:1" ).EntireRow.Hidden


 
avec ça tu devrais pouvoir travailler que sur les lignes visibles.


Message édité par Xxxaaavvv le 23-11-2010 à 18:02:10
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed