Obtenir un nombre par double clic
J
Bonjour
je cherche à partir de e code qui ne fonctionne pas ,en cliquant sur les cellules de N17 à O20 a rentrer un nombre dans la cellule K3
exemple si je clique sur O17, P18,P19 je dois obtenir 269
Je n'arrive pas à trouver la bonne solution
Merci pour votre aide
Dim clickedCells As Collection
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
' Initialiser la collection si elle n'existe pas
If clickedCells Is Nothing Then
Set clickedCells = New Collection
End If
' Vérifier si la cellule cliquée est l'une des cellules cibles
On Error Resume Next
If Not Intersect(Target, Me.Range("N17")) Is Nothing Then
clickedCells.Add "1"
ElseIf Not Intersect(Target, Me.Range("O17")) Is Nothing Then
clickedCells.Add "2"
ElseIf Not Intersect(Target, Me.Range("P17")) Is Nothing Then
clickedCells.Add "3"
ElseIf Not Intersect(Target, Me.Range("N18")) Is Nothing Then
clickedCells.Add "4"
ElseIf Not Intersect(Target, Me.Range("O18")) Is Nothing Then
clickedCells.Add "5"
ElseIf Not Intersect(Target, Me.Range("P18")) Is Nothing Then
clickedCells.Add "6"
ElseIf Not Intersect(Target, Me.Range("N19")) Is Nothing Then
clickedCells.Add "7"
ElseIf Not Intersect(Target, Me.Range("O19")) Is Nothing Then
clickedCells.Add "8"
ElseIf Not Intersect(Target, Me.Range("P19")) Is Nothing Then
clickedCells.Add "9"
ElseIf Not Intersect(Target, Me.Range("O20")) Is Nothing Then
clickedCells.Add "0"
End If
End SubJ
La solution
Dim numberString As String
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Vérifie si la cellule cliquée est dans la plage N17:P20
If Not Intersect(Target, Me.Range("N17:P20")) Is Nothing Then
' Ajoute le chiffre cliqué à la chaîne de nombre
numberString = numberString & Target.Value
' Vérifie si la longueur de la chaîne est de 3 chiffres
If Len(numberString) = 3 Then
' Affiche le nombre dans K3
Me.Range("K3").Value = numberString
' Réinitialise la chaîne pour le prochain nombre
numberString = ""
End If
End If
End Subbonjour Joco7915,
j'éspère que c'est ceci que vous demandez ...
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim iSect As Range, Lig, Col, c
If Target.CountLarge > 1 Then Exit Sub
Set c = Me.Range("N17:O20")
Set iSect = Intersect(Target, c)
If iSect Is Nothing Then Exit Sub
Lig = iSect.Row - c.Row + 1 'row number within c
Col = iSect.Column - c.Column + 1 'column number within c
Range("K3").Value = Col + (Lig - 1) * 3
End SubJ
Bonsoir Bart
Merci pour ta solution.
La bonne solution de ce que j'avais besoin je l'avais postée juste au dessus de ta réponse.
Cordialement