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

  • Initiateur de la discussion Initiateur de la discussion ctcprod
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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.
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour