1,2,0

Yann71

XLDnaute Occasionnel
Bonjour, je patauge un peu. Qui pourrait m'aider à trouver le code VBA qui servirait, à chaque clic sur la même cellule elle s'incrémente. Premier clic affiche 1, deuxième clic affiche 2 et troisième clic efface le contenu.
Merci d'avance
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Mais… vous voulez dire sans tenir compte de ce que la cellule contient déjà ? Si, puisque vous voulez qu'elle revienne vide si on la sélectionne une troisième fois, non ? De toute façon il n'existe pas de triple clic. Mais on pourrait le faire en jouant sur la sélection pour 1, le double clic pour 2 et le clic droit pour vider.
Vous parlez pourtant bien d'une incrémentation de ce que la cellule contient déjà. C'est ce que fait ma Sub Worksheet_SelectionChange du poste #8. Je ne vois pas d'où vous tirez qu'il faut la sélectionner plusieurs fois pour qu'elle change. Mais il n'existe pas de simple clic. C'est la sélection de la cellule qui seule peut jouer. Il faut donc qu'une autre cellule soit sélectionnée avant de pouvoir la sélectionner à nouveau pour qu'elle change encore. Mais on peut sélectionner automatiquement la A1 par exemple, après que la cellule sélectionnée a été modifiée.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
En résumé, si on ne veut pas recourir à un label annexe, c'est soit ça :
VB:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Rows.Count * Target.Columns.Count > 1 Then Exit Sub
If Intersect(Me.[A1:C10], Target) Is Nothing Then Exit Sub
Target.Value = Choose(Target.Value Mod 3 + 1, 1, 2, Empty)
Application.EnableEvents = False
Me.[A1].Select
Application.EnableEvents = True
End Sub
Soit, si on ne veut pas tenir compte du contenu préalable de la cellule, ça :
VB:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Rows.Count > 1 Or Target.Columns.Count > 1 Then Exit Sub
If Intersect(Me.[A1:C10], Target) Is Nothing Then Exit Sub
Target.Value = 1
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Rows.Count * Target.Columns.Count > 1 Then Exit Sub
If Intersect(Me.[A1:C10], Target) Is Nothing Then Exit Sub
Target.Value = 2: Cancel = True
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Rows.Count * Target.Columns.Count > 1 Then Exit Sub
If Intersect(Me.[A1:C10], Target) Is Nothing Then Exit Sub
Target.Value = Empty: Cancel = True
End Sub
Je voulais dire qu'il n'existait pas de simple clic sur cellule déjà sélectionnée. Sur autre chose, oui, bien sûr.
 
Dernière édition:

Yann71

XLDnaute Occasionnel
Bonjour Dranred, excuse moi de donner réponse à ton message si tardivement. Je te remercie pour ton code, il répond au 2/3 de ce que je souhaite. Il manque le fait que si l'on clic 3 fois la cellule devienne vide, est ce que c'est possible. Je te remercie d'avance pour ta réponse.
 

Dranreb

XLDnaute Barbatruc
Ce n'est possible qu'avec la 1ère procédure qui met la cellule à 1 si elle est vide, à 2 si elle est à 1, et vide si elle est à 2.
Sans tenir compte du contenu précédent de la cellule ce n'est pas possible avec un triple clic, ça n'existe pas. Alors je vous ai mis une procédure qui efface la cellule sur un clic droit, parce que ça, ça existe.
 

Yann71

XLDnaute Occasionnel
merci pour ton intervention si rapide et les explications données qui sont très expressive. J'aurai encore besoin de tes compétences, j'aimerai que ce code ne soit pas appliqué uniquement à un groupe de cellule mais à plusieurs groupe par exemple G10:BD16 et au groupe G21:BD27. Comment dois-je modifier le code
 

job75

XLDnaute Barbatruc
Bonsoir,

En passant par la Lorraine avec mes sabots :
Code:
If Intersect(Target, [G10:BD16,G21:BD27]) Is Nothing Or Target.CountLarge > 1 Then Label1.Visible = False: Exit Sub
Edit : CountLarge nécessaire si l'on sélectionne toutes les cellules.

Fichier (3).

A+
 

Pièces jointes

  • Clic(3).xlsm
    26.5 KB · Affichages: 19
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth