Fonction clic et décaler en vba

  • Initiateur de la discussion Guest
  • Date de début
G

Guest

Guest
bonjour à tous,
je cherche une solution en VBA pour le problème suivant (excel 2003);

Quand je clique sur une cellule de la colonne B, j'incrémente celle cellule par le contenu de la cellule immédiatement à gauche de celle-ci.
Idem pour une autre colonne C D etc mais en prenant toujours le contenu de la colonne A de la même ligne.

N'étant pas très doué j'espère avoir été clair.

En vous remerciant par avance.

Cordialement
 

mutzik

XLDnaute Barbatruc
Re : Fonction clic et décaler en vba

bonjour,
vois si cela te convient
actif par un double click sur une cellule située à gauche
 

Pièces jointes

  • xld.xls
    32 KB · Affichages: 218
  • xld.xls
    32 KB · Affichages: 176
  • xld.xls
    32 KB · Affichages: 186

Orpheu

XLDnaute Nouveau
Re : Fonction clic et décaler en vba

Bonjour à tous..

Le principe de base: du code dans l'événement Worksheet_BeforeDoubleClick

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
ActiveCell = ActiveCell + Range("A" & ActiveCell.Row)
SendKeys ("{RIGHT}"), True
End Sub

Ca c'est le code qui a été proposé par MutZic... Dans ce code, tu peux rajouter tous les tests que tu veux, puor par exemple limiter la zone active...

(personnellement je préfère tester l'argument Target, qui est la cellule qui a réellement reçu le double-click)

Pour limiter aux colonnes 2 à 9, par exemple, tu rajoutes...
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If target.column>1 and target.column< 10 then
ActiveCell = ActiveCell + Range("A" & ActiveCell.Row)
SendKeys ("{RIGHT}"), True
End If
End Sub
 

Efgé

XLDnaute Barbatruc
Re : Fonction clic et décaler en vba

Bonjour Orpheu, dubdub, Bonjour mutzik :) ,
Pour limiter la plage :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim plg As Range
 
Set plg = Range("A1:D40")
If Not Application.Intersect(Target, plg) Is Nothing Then
     Cancel = True 'pour éviter l'édition de la cellule au double click
     ActiveCell = ActiveCell + Range("A" & ActiveCell.Row)
End If
Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 938
Membres
103 988
dernier inscrit
Feonix