Aller directement d'une ligne visible à une autre. - VB/VBA/VBS - Programmation
Marsh Posté le 03-12-2010 à 06:48:19
Bonjour,
tu devrais pouvoir t'inspirer de ceci:
Code :
|
cordialement
Marsh Posté le 04-12-2010 à 12:04:40
Merci seniorpapou
Je vais le tester dans mon application. Dès que possible je te dirai si c'est ok.
Cordialement.
A+.
Marsh Posté le 13-12-2010 à 22:08:11
Merci infiniment SeniorPapou.
Ton orientation est la bonne. J'ai cherché un peu mais j'ai réussi à n'accéder qu'aux données filtrées, dans un temps d'exécution record ! Quand j'ai réussi à coder les bonnes variables, cela a été ok et je n'ai plus qu'à intégrer mon travail dans un code plus volumineux.
Je devrais y arriver.
Merci encore pour ta collaboration.
Cordialement.
Marsh Posté le 26-11-2010 à 21:46:39
Merci Xxxaaavvv pour tes orientations qui m'ont été utiles et m'ont permis d'avancer.
Je joins un extrait d'une base de données test que j'ai dans un onglet Excel. Mon tableau est filtré et n'apparaissent à l'écran que les lignes visibles.
Avec ma programmation, le curseur se positionne automatiquement sur la dernière cellule visible de mon tableau (C'est déjà bien !). Mais ensuite, je n'arrive pas à sélectionner directement par programmation la première nouvelle ligne supérieure visible. En effet, les lignes masquées sont lues également ce qui ralentira l'exécution du programme sur un tableau beaucoup plus important.
Voici mon extrait de code Vba pour Excel 2003 :
Sub SelectionLignesVisiblesUniquement()
Dim f As Integer
' Retrouve la dernière cellule.
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate
MsgBox "La sélection en cours correspond à : " & ActiveCell.Value, vbInformation
For f = 1 To 31 'Boucles max dans mon tableau.
If ActiveSheet.Rows(ActiveCell.Row).EntireRow.Hidden = False Then 'Ligne non cachée.
MsgBox "La ligne active " & ActiveCell.Row & " n'est pas cachée !", vbExclamation
ActiveCell.Offset(-1, 0).Select
ElseIf ActiveSheet.Rows(ActiveCell.Row).EntireRow.Hidden = True Then
'MsgBox "Ligne cachée à ne pas lire !" & Chr(10) & "DECALER VERS LE HAUT !"
ActiveCell.Offset(-1, 0).Select
End If
Next f
End
Donc, par quel code je dois remplacer :
selection.offset(-1,0).select
pour que la prochaine ligne visible soit automatiquement sélectionnée, sans le moindre passage des boucles sur mes lignes masquées ?
Merci d'avance.