Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA : Ligne suivante d'un tableau filtr

12 réponses
Avatar
Jac
Bonjour à tous,

je me base sur les données d'un tableau pour afficher dans une autre
feuille les données d'une ligne du tableau (1 ligne = 1 client) en
plusieurs colonnes. Donc j'obtiens 4 colonnes de 30 lignes au lieu
d'une ligne de 120 colonnes. Ça occupe mieux l'écran ou la feuille
imprimée…

Mais la source est un tableau filtré, donc les n° de ligne ne se
suivent pas forcément. Normal.

Connaissant le numéro de la ligne du client affiché, j'ai besoin de
connaiître le n° suivant ou précédent afin d'afficher le client suivant
ou précédent.

Et c'est là que le bas blesse... La ligne 15, actuellement affichée en
fiche, est suivie par la ligne 20 (ou 25) et elle est précédée par la
14 (ou la 13 ou la 8...) et en vba, je ne vois pas comment calculer le
numéro de la ligne recherchée.

Merci d'avance à qui pourrait me mettre sur la voie.

Jac

2 réponses

1 2
Avatar
Daniel.C
Sub SUIVANT()
Sheets("Fiche").Select
Set rg = Sheets("Données").Range("_FilterDataBase").Resize(, 1)
Set rg = rg.Offset(1).Resize(rg.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible)
test = False
For Each c In rg
If c.Row - 1 > [B1] Then
[B1] = c.Row - 1
test = True
Exit For
End If
Next c
If test = False Then MsgBox "… il n'y a rien après ''20''.", , "
INUTILE D'INSISTER…"
End Sub

Fais la même chose pour l'autre bouton.
Daniel

Je tente de… clarifier avec un exemple :

http://cjoint.com/?gbw0x88nAM

… car, il me semble, je comprends bien ma question et mal vos suggestions et
vous, ce serait l'inverse…


Avatar
Jac
Impecable. Merci beaucoup.

… en fait un exemple est plus "parlant" qu'une longue explication.


Le 02/06/2009, Daniel.C a supposé :
Sub SUIVANT()
Sheets("Fiche").Select
Set rg = Sheets("Données").Range("_FilterDataBase").Resize(, 1)
Set rg = rg.Offset(1).Resize(rg.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible)
test = False
For Each c In rg
If c.Row - 1 > [B1] Then
[B1] = c.Row - 1
test = True
Exit For
End If
Next c
If test = False Then MsgBox "… il n'y a rien après ''20''.", , " INUTILE
D'INSISTER…"
End Sub

Fais la même chose pour l'autre bouton.
Daniel

Je tente de… clarifier avec un exemple :

http://cjoint.com/?gbw0x88nAM

… car, il me semble, je comprends bien ma question et mal vos suggestions
et vous, ce serait l'inverse…




1 2