XL 2010 Récupérer l'adresse d'une cellule et s'en resservir

Eric C

XLDnaute Barbatruc
Bonjour,

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.

Bonne fin d'après midi à toutes & à tous

@+ Eric c
 

Pièces jointes

  • Fichier facturation.xlsm
    20.9 KB · Affichages: 14

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonsoir Eric C

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
 

Eric C

XLDnaute Barbatruc
Bonsoir Yeahou, bonjour Laurent950

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
 

Eric C

XLDnaute Barbatruc
Merci Yeahou (& Laurent).

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
 

Dranreb

XLDnaute Barbatruc
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
 

laurent950

XLDnaute Accro
Empêche l'édition de la cellule conformément à la réaction normale du double clic.

Bon j'ai trouvé je pense :

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.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
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.
 

Eric C

XLDnaute Barbatruc
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 :cool:
 

Discussions similaires

Statistiques des forums

Discussions
312 161
Messages
2 085 848
Membres
103 004
dernier inscrit
ponas