Comment puis je faire pour :
- Après avoir double cliqué sur une des cellules de la colonne "N" pour appeler un UserForm, de mémoriser la cellule cliquée
pour ensuite se resservir de cette adresse afin d'afficher une valeur (de TextBox) dans sa cellule voisine de droite.
Tu définis une variable publique et tu la références
Après, il suffit d'appeler la référence comme pour une cellule
Bien cordialement, @+
VB:
Public Range_Mem As Range
Public Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Public cel As Range
If Not Application.Intersect(Target, Range("N2:N10")) Is Nothing Then 'A adapter
'Mémoriser la Target.adress cliquée pour s'en servir dans l'USF2 (suite USF2)
'cel = ActiveCell.Address
Set Range_Mem = ActiveCell
Range("R1") = ActiveCell.Address
' Range(cel).Select
MsgBox Range_Mem.Address
UserForm2.Show
End If
End Sub
L'adresse de la cellule cliqué est dans la variable Objet "Target"
donc Target.address = l'adresse de la cellule cliqué
Pour la cellule de droite utilisé Offset
donc Target.Offset(,1).Value pour la valeur ou l'adresse Target.Offset(,1).Address
Je tente de me débattre avec les variables public et privée mais je crois que je mélange tout et ne parviens pas à m'en sortir concernant l'intégration de la valeur à droite de la cellule. Mon MsgBox de Feuille(1) me donne l'adresse mais pas lors de la procédure du CommandButton. Je dois louper quelque chose mais pour l'instant, je ne sais pas quoi.
Encre merci
@+ Eric c
Avec l'intervention de Laurent, mes codes (c'est de ma faute, j'aurais du faire du vide) étaient un peu en vrac.
Dorénavant, je saurais me servir d'une variable publique. Merci et bonne soirée
@+ Eric c
Bonsoir.
Me connaissant, j'aurais fait dans ce genre :
Feuil1 (Feuil1) :
VB:
Option Explicit
Public Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("N2:N10")) Is Nothing Then
Cancel = True
UserForm2.CalcCel Target(1, 2)
End If
End Sub
UserForm2 :
Code:
Option Explicit
Private Cel As Range
Public Sub CalcCel(ByVal CelRés As Range)
Set Cel = CelRés
Me.Show
End Sub
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox7 = Val(TextBox1) + Val(TextBox2) + Val(TextBox3)
End Sub
Public Sub CommandButton1_Click()
If Not IsNumeric(TextBox7.Text) Then Exit Sub
Cel.Value = CDbl(TextBox7.Text)
Me.Hide
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cet évènement survient lors de l'utilisation du clic droit dans une cellule de la feuille.
Le paramètre Target correspond à la cellule qui reçoit le clic droit. Le paramètre Cancel désactive l'action associée à une macro évènementielle.
Lorsqu'on double clique dans une cellule elle se retrouve en cours d'édition à sa propre place au lieu d'en barre de formule, le curseur texte s'y retrouve et une frappe de texte la change, ainsi d'ailleurs que dans la barre de formule. Là ce n'était pas le but alors on passe à True l'argument ByRef Cancel transmis à la Sub Worksheet_BeforeDoubleClick pour l'empêcher.
Bonsoir le fil,
Bonsoir Dranreb et merci également pour le code.
Concernant la variable Boolean Cancel = True, elle trouve encore mieux sa place lorsque l'on utilise "Before click droit" car à l'issue de l'action, on a le menu qui se déroule et c'est gênant pour l'utilisateur.
J'avais pas pris la peine de lire le post #12 ou Dranreb a plus subtilement expliqué le pourquoi