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.
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…
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…
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…
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…
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…
… 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…