[RESOLU] Repérer un click dans une cellule

Papy Octet

XLDnaute Nouveau
;) Bonjour à tous,
Je me trouve dans une feuille Excel.
:S 1. Je voudrais intercepter un click (pas un double click !) dans une cellule qui me permet, par exemple, d'enregistrer le contenu de cette cellule avec VBA.

:S 2. Je voudrais également pouvoir enregistrer le contenu d'une cellule qui vient dêtre modifiée AVANT de quitter cette cellule.

:eek: En résumé : je sélectionne une cellule dont je veux modifier le contenu, mais je veux conserver une trace de ce contenu (ainsiq ue son adresse, par exemple) avant et après la modif.

:S Qui peut m'aider ?

Merci d'avance.

Message édité par: Papy Octet, à: 29/09/2005 14:33
 

Bricofire

XLDnaute Impliqué
Re:Repérer un click dans une cellule (avec VBA ?)

Bonsoir Papy Octet, :)

Pour ce faire, il faut que tu mette des procédures (Private) dans La fenêtre de code de ta Feuille (Feuil1 ou ?), Dans la liste objet de ta fenêtre, à gauche, tu choisis Worksheet et non general , à droite tu choisis les évènements que tu veux (voir aussi aide vba)

Pour le 1) utilise Selection Change

Pour le 2) utilise Change

Bon courage,

Bfr
 

Papy Octet

XLDnaute Nouveau
Re:Repérer un click dans une cellule (avec VBA ?)

Salut Bricofire,

Merci pour ta suggestion, mais ces deux fonctions ne correspondent pas à ce que je recherche.
- Je les connais, ces deux fonctions, mais elles ne me permettent pas d'agir AVANT de quitter la cellule en cours.
De plus, elles fonctionnent automatiquement et je n'ai aucun contrôle sur leur déroulement.
A chaque changement de cellule, avec la souris, par exemple, la fonction 'Sélection change' s'active toute seule, amis elle ne me permet pas d'agir AVANT de quitter la cellule.
Je veux, lorsque je clique sur la cellule, pouvoir vérifier son contenu avant de lancer une procédure : si elle est vide, faire une chose, si elle contient une valeur, faire autre chose.
Lorsque j'ai modifié une valeur dans une cellule, je veux pouvoir enregistrer son contenu un peu comme avec la fonction (qui n'est pas disponible dans la feuille Excel) 'Before update' des formulaires or la fonction 'Change' me propulse hors de la cellule, dans une autre puis me donne la main pour agir. :silly: Il est trop tard pour moi.
:silly: Tout ça parce que, lorsque j'ai quitté la cellule, je ne suis pas en mesure de savoir où elle se trouvait lorsque je l'ai quittée ni dans quel état elle se trouvait à ce moment. et comme je suis incapable de dire où je vais aller, je ne suis pas en mesure d'anticiper mes déplacements dans la feuille : je peux me déplacer avec Enter, Tab, la souris, les flèches, ...

A+ :S
 

myDearFriend!

XLDnaute Barbatruc
Re:Repérer un click dans une cellule (avec VBA ?)

Bonsoir Papy Octet, Bricofire,

Ci-dessous, une proposition avec code VBA à coller dans le module de code de la feuille concernée :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ancV As Variant, V As Variant
Dim
Adr As String
      If Not Application.Intersect(Target, Range('A1:D10')) Is Nothing Then
            Application.ScreenUpdating = False
            Application.EnableEvents = False
            Adr = Target.Address
            V = Target.Value
            Application.Undo
            ancV = Target.Value
            Target.Value = V
            Application.EnableEvents = True
            Application.ScreenUpdating = True
            MsgBox 'Ancienne valeur : ' & ancV & vbLf & _
                        'Nouvelle valeur : ' & V & vbLf & _
                        'Adressse de cellule : ' & Adr
      End If
End Sub
Quelques remarques en relation avec ce que tu dis plus haut :
[ol][ul][li]Cette macro fonctionnera pour toute modification dans une plage choisie arbitrairement 'A1:D10'.[/li]
[li]Si les variables ancV, V et Adr sont déclarées en tête de module (et non dans la procédure comme ici), elles peuvent être réutilisées pour d'autres traitements annexes comme tu le laisses sous-entendre...[/li]
[li]Sauf si tu modifies les options de déplacement après validation, ce n'est qu'après le changement de cellule que la modification est effectivement prise en compte par Excel, donc tu ne peux pas savoir si une cellule est 'en cours' de modification ou non...[/li][/ul][/ol]

Cordialement,
 

Bricofire

XLDnaute Impliqué
Re:Repérer un click dans une cellule (avec VBA ?)

re Papy Octet, bonsoir MDF ;)

Bon j'étais entrain de répondre... que mDF a encore frappé plus vite que la foudre :) démontrant qu'en effet, en mettant du code tout de suite, il n'y a pas confusion.... :silly:

Je te livres donc le fil de ma pensée...



A l’ouverture de ton classeur, tu enregistres la valeur de la cellule active (et son adresse si tu veux) via Workbook Open ça te donne ton « point de départ » ensuite tu raisonnes à l’envers bien sur, tu n’enregistres pas la valeur de la prochaine cellule en la quittant, mais en y arrivant ! Ca c’est bien du ressort de Selection Change…. Ensuite dans ta procédure, tu peux faire ce que tu veux, tu mets la valeur actuelle dans une variable de passage qui, s’il y a changement sera enregistrée lors de l’arrivée par Worksheet Change (ici, elle est affichée dans la boîte).

Option Explicit
Dim Pass

Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox (Pass)
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target = '' Then
MsgBox 'Vide'
Else
MsgBox 'Pleine'
Target.Interior.ColorIndex = 6
End If
Pass = Target
End Sub


Le code du Workbook n'est pas là, mais facile à extrapoler, le contenu de la cellulle de départ pouvant être modifié lors de la première de tes actions...Il faut en tenir compte

Bon courage,

Bfr
 

Discussions similaires

Statistiques des forums

Discussions
314 948
Messages
2 114 648
Membres
112 206
dernier inscrit
salah zabi