Recherche en fonction de l'index

J

jb

Guest
Bonjour,

Voilà, j'explique mon pb. J'ai un USF avec un spinbutton et une feuille avec dans la colonne A des entiers (ex : A1 = 5, A2 = 12, A3 = 26, etc ...). Je voudrais avec l'événement SpinDown sélectionner la cellule en dessous de celle précédemment sélectionnée (ex : si A2 était sélectionnée et si appui sur SpinDown, va sur A3) et la même chose mais inversée pour l'événement SpinUp. Car mon gros pb est que je n'arrive pas à lui faire garder en mémoire la position précédente (ex : A2). Je me demandais sinon si la fonction "ListIndex" pourrait m'aider mais là, je ne sais pas.

Pourriez-vous m'aider svp ?!

Merci bien et bonne soirée à vous.

JB.
 
B

brett

Guest
bonsoir,

voici peut être la solution :

Dim Cell As Range
' tu te positionnes sur ta cellule de départ, ici A1
Set Cell = Range("A1")

puis dans ton evt SpinDown, tu codes le déplacement comme suit:
Set Cell = Cell.Offset(1, 0) ' ici on passe à la cellule A2

pour SpinUp :
Set Cell = Cell.Offset(-1, 0) ' ici si on était sur A2, on passe à la cellule A1

En règle générale Cell.Offset("déplacement ligne +/-","déplacement colonne +/-")

brett
 
J

jb

Guest
Bonsoir,

D'accord, j'ai bien compris et je te remercie de ta réponse, par contre comment faire pour qu'il garde en mémoire la dernière cellule sélectionée (car je vais faire d'autres choses après et je reviendrais plus tard et je choisirais SpinDown ou SpinUp par rapport à cette "dernière cellule" sélectionnée.

Merci encore et bonne soirée.

JB.
 
B

brett

Guest
Salut,

hé bien, il te faut mémoriser le numero de ligne dans ta colonne.
supposons que tu démarres en A1, ta ligne vaudra 1 (no_ligne = 1)
dans spindown, tu décrémentes ton numero de ligne de 1 à chaque clique
et tu incrementes de 1 dans spinup (en oubliant pas de testé les bornes, car si no_ligne vaut 1, tu ne doit pas décrémenter, sinon tu passe à Zéro...)

pour cela, déclare ton numero de ligne en Public :

Public no_ligne as integer

puis dans tes fonctions Spinxxx, au lieu de mettre par défut Range("A1").select, tu te positionnes avec le numero de ligne no_ligne:

Range("A" & Cstr(no_lihne)).select

ou plus simple:

Cells(no_ligne,1).select ' 1 pour la 1ère colonne, soit A.

en espérant avoir répondu à ta question.

A+

brett.
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji