Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recherche sur une zone variable

Chris57

XLDnaute Occasionnel
Bonjour à tous,

voilà mon pb : je cherche un moyen simple de tester les 6 cellules au dessus de celle sélectionnée, si l'une d'elle contient une date, celle-ci doit être stockée dans une variable.

Le truc c'est qu'après ce test je me retrouve à nouveau dans la cellule sélectionnée de départ.

Cette cellule de départ peut varier et être n'importe où dans un tableau.

ça ressemble à ça :
_____A_________B_________C________
1_01/01/06___02/01/06___03/01/06__ etc...
2___xxx________xxx________xxx
3___xxx________xxx________xxx
4___xxx________xxx________xxx
5___xxx________xxx________xxx
6___xxx________xxx________xxx
7__________________________________
8_07/01/06___08/01/06___09/01/06__ etc...
9___xxx________xxx________xxx
10__xxx________xxx________xxx
11__xxx________xxx________xxx
12__xxx________xxx________xxx
13__xxx________xxx________xxx
____________________________________
si je clique dans une cellule contenant un 'xxx', il faut que la date qui se situe au dessus soit placée dans une variable, puis retour à ma cellule 'xxx'.
 

ERIC S

XLDnaute Barbatruc
re

si oui

code à mettre sous ta feuille

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
nbligne = 7
madate = Cells(1 + Int(Target.Row / nbligne) * nbligne, Target.Column)
End Sub

A+
 

Chris57

XLDnaute Occasionnel
Effectivement le nombre de lignes est toujours le même entre deux cellules dates, mais il est de 6 (mon exemple est mal dessiné). Mais peu importe.

Merci pour ton aide, mais j'avoue ne pas comprendre ces lignes. Si tu as le temps, pourrais-tu m'expliquer ?
 

ERIC S

XLDnaute Barbatruc
re

tu ouvres vba par

alt F11

tu double -clic sur le nom de la feuille qui t'intéresse

tu sélectionnes (au lieu de général) worksheet et
SelectionChange
tu copies le code (voir ci-après)

ce code basic, à chaque fois que tu sélectionnes une cellule de ta feuille stocke dans madate le contenu de la cellule située

même colonne que la cellule activée (Target.column)
et pour la ligne les dates sont en 1,7,13,19..
si target.row est entre 1 et 6 il faut pointer ligne 1, entre 7 et 12 il faut pointer ligne 7..

int((target.row-1)/nbligne) donne 0 pour target.row entre 1 et 6, donne 1 entre 7 et 12..

donc
1 + Int((Target.Row-1) / nbligne) * nbligne

fera 1 entre les lignes 1 & 6
7 entre 7 et 12
13...

le code est donc:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
nbligne = 6
madate = Cells(1 + Int((Target.Row-1) / nbligne) * nbligne, Target.Column)
End Sub

il devait y avoir une erreur sur la première formule.

A tester et adapter

A+
 

Chris57

XLDnaute Occasionnel
C'est plus clair maintenant ! Mais je n'arrive pas à l'adapter à mon cas...

En fait mon tableau commence à la ligne 3, donc en ligne 3 il y a une date, puis 6 lignes, puis une date puis 6 lignes etc...

J'ai tenté
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
nbligne = 7
madate = Cells(3 + Int((Target.Row - 1) / nbligne) * nbligne, Target.Column)
End Sub

mais c'est pas bon....

Quoi qu'il en soit je te remercie pour ces réponses rapides !!!
 

ERIC S

XLDnaute Barbatruc
re

tu peux aussi faire plus pro et plus adaptable

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
nbligne = 7
ceb=3
madate = Cells(deb + Int((Target.Row - deb) / nbligne) * nbligne, Target.Column)
End Sub

A+
 

ERIC S

XLDnaute Barbatruc
rere

j'ai les doigts qui dérapent..

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
nbligne = 7
deb=3
madate = Cells(deb + Int((Target.Row - deb) / nbligne) * nbligne, Target.Column)
End Sub



la variable est deb et non ceb

A+
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Chris, Éric, bonsoir le forum,

Comme ce problème m'intéressait, j'ai essayé la macro d'Éric mais j'avais des bugs selon les lignes où se trouvaient mes dates.

Je propose ce code qui semble fonctionner quelles que soient les lignes comportant des dates :


Remplace DIFFÉRENT_DE par les symboles consécutifs Inférieur, Suprérieur qui ne passent pas dans ce forum...
 

Discussions similaires

Réponses
25
Affichages
794
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…