XL 2016 [RESOLU] Récupérer la valeur "Row" et "Column" relative à un "Range" défini

ctcprod

XLDnaute Nouveau
Bonjour, je vais essayer d'être clair.

Je travaille dans un Private Sub - Selection Change

Je défini au préalable un Range R1 (ActiveSheet.Range("G7:J9"))
j'aimerai récupérer la ligne et la colonne cliquée, mais au sein de ce range (pas sur la feuille globale).
Pour être plus clair, en cliquant sur G8, j'aimerai obtenir "2" (relativement au Range défini), et pas "8" (Relatif à la worsheet)

J'ai essayer plusieurs solutions, mais je ne trouve pas
MsgBox(R1.Target.row)
MsgBox(Target.R1.row)...;

L'idée est de pouvoir récupérer cette données pour travailler à l'identique sur d'autres Range R2, R3, R4 etc... de la meme taille




VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim R1 As Range
Set R1 = ActiveSheet.Range("G7:J9")

If Not (Intersect(R1, Target) Is Nothing Then

MsgBox(Target.Row)

End if
End sub
 

ctcprod

XLDnaute Nouveau
Ca fonctionne parfaitement !
Je n'étais pas loin de trouver moi meme car j'avais testé " R1.row"
Mais je n'ai pas pensé à l'astuce de la soustraction.

Il n'y a pas de moyen "élégant" ? car je sais qu'on peut travailler de manière "relative" dans un range défini
VB:
Msgbox R1(1,2).Value
PS: Merci pour la solution, l'essentiel c'est que ça fonctionne, mais je tente d'augmenter mes connaissances au passage.
 

M12

XLDnaute Accro
Bonjour,
Teste ceci
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim R1 As Range
Dim r%, c%
Set R1 = ActiveSheet.Range("G7:J9")
r = Range("G7").Row - 1
c = Range("G7").Column - 1
  If Not Application.Intersect(R1, Target) Is Nothing Then
    MsgBox ("ligne: " & Target.Row - r & " - " & "colonne: " & Target.Column - c)
  End If
End Sub
 

Jean-Eric

XLDnaute Occasionnel
Bonjour à toutes et tous,
Une autre approche.
Cdlt.

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim R1 As Range, rw As Long, cn As Long
    Set R1 = Me.Range("G7:J9")
    If Not Application.Intersect(R1, Target) Is Nothing Then
        rw = Target.Row - R1.Row + 1
        cn = Target.Column - R1.Column + 1
        MsgBox ("ligne : " & rw & " - " & "colonne : " & cn)
    End If
End Sub
 

Discussions similaires